<?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>211885</bug_id>
          
          <creation_ts>2020-05-14 02:22:38 -0700</creation_ts>
          <short_desc>Use enum serialization instead of casting to/from uint32_t</short_desc>
          <delta_ts>2020-05-18 07:55:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212008</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>lmoura</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>pnormand</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652560</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 02:22:38 -0700</bug_when>
    <thetext>Use enum serialization instead of casting to/from uint32_t</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652561</commentid>
    <comment_count>1</comment_count>
      <attachid>399343</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 02:27:20 -0700</bug_when>
    <thetext>Created attachment 399343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652563</commentid>
    <comment_count>2</comment_count>
      <attachid>399345</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 02:30:55 -0700</bug_when>
    <thetext>Created attachment 399345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652670</commentid>
    <comment_count>3</comment_count>
      <attachid>399370</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 09:30:59 -0700</bug_when>
    <thetext>Created attachment 399370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652688</commentid>
    <comment_count>4</comment_count>
      <attachid>399377</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 10:27:22 -0700</bug_when>
    <thetext>Created attachment 399377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652706</commentid>
    <comment_count>5</comment_count>
      <attachid>399380</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 11:23:05 -0700</bug_when>
    <thetext>Created attachment 399380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652786</commentid>
    <comment_count>6</comment_count>
      <attachid>399405</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 13:55:17 -0700</bug_when>
    <thetext>Created attachment 399405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652803</commentid>
    <comment_count>7</comment_count>
      <attachid>399405</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-05-14 14:55:05 -0700</bug_when>
    <thetext>Comment on attachment 399405
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652844</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-14 15:57:47 -0700</bug_when>
    <thetext>That test failure looks suspicious.  Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653269</commentid>
    <comment_count>9</comment_count>
      <attachid>399405</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-15 20:02:41 -0700</bug_when>
    <thetext>Comment on attachment 399405
Patch

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

&gt; Source/WebCore/page/DOMSelection.cpp:-272
&gt; -    else if (equalLettersIgnoringASCIICase(granularityString, &quot;sentenceboundary&quot;))

This was changed by find/replace by mistake.

&gt; Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm:781
&gt; +    return WebGLLoadPolicy::WebGLAllowCreation;

This should be policyResult</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653271</commentid>
    <comment_count>10</comment_count>
      <attachid>399540</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-15 20:09:59 -0700</bug_when>
    <thetext>Created attachment 399540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653275</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-15 20:46:03 -0700</bug_when>
    <thetext>Committed r261776: &lt;https://trac.webkit.org/changeset/261776&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399540.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653276</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-15 20:47:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/63299590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653419</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 10:35:17 -0700</bug_when>
    <thetext>This broke test-webkitpy on most (if not all) platforms:
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/13074/steps/webkitpy-test/logs/stdio

  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 335, in test_receiver
      self.check_message(message, _expected_results[&apos;messages&apos;][index])
    File &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/webkit/messages_unittest.py&quot;, line 310, in check_message
      self.assertEquals(len(message.parameters), len(expected_message[&apos;parameters&apos;]))
  AssertionError: 2 != 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653423</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-05-17 10:49:39 -0700</bug_when>
    <thetext>message.parameters: [&lt;webkit.model.Parameter object at 0x7f1c2472c550&gt;, &lt;webkit.model.Parameter object at 0x7f1c2472c590&gt;]
expected_message[&apos;parameters&apos;]: ((&apos;IPC::MachPort&apos;, &apos;connectionIdentifier&apos;),)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653603</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-05-18 07:48:17 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #13)
&gt; This broke test-webkitpy on most (if not all) platforms:
&gt; https://build.webkit.org/builders/
&gt; Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/13074/steps/webkitpy-
&gt; test/logs/stdio
&gt; 
&gt;   Traceback (most recent call last):
&gt;     File
&gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; webkit/messages_unittest.py&quot;, line 335, in test_receiver
&gt;       self.check_message(message, _expected_results[&apos;messages&apos;][index])
&gt;     File
&gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; webkit/messages_unittest.py&quot;, line 310, in check_message
&gt;       self.assertEquals(len(message.parameters),
&gt; len(expected_message[&apos;parameters&apos;]))
&gt;   AssertionError: 2 != 1

Filed https://bugs.webkit.org/show_bug.cgi?id=212025 for this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653607</commentid>
    <comment_count>16</comment_count>
    <who name="Lauro Moura">lmoura</who>
    <bug_when>2020-05-18 07:55:05 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #15)
&gt; (In reply to Philippe Normand from comment #13)
&gt; &gt; This broke test-webkitpy on most (if not all) platforms:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/13074/steps/webkitpy-
&gt; &gt; test/logs/stdio
&gt; &gt; 
&gt; &gt;   Traceback (most recent call last):
&gt; &gt;     File
&gt; &gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; &gt; webkit/messages_unittest.py&quot;, line 335, in test_receiver
&gt; &gt;       self.check_message(message, _expected_results[&apos;messages&apos;][index])
&gt; &gt;     File
&gt; &gt; &quot;/Volumes/Data/slave/mojave-release-tests-wk2/build/Source/WebKit/Scripts/
&gt; &gt; webkit/messages_unittest.py&quot;, line 310, in check_message
&gt; &gt;       self.assertEquals(len(message.parameters),
&gt; &gt; len(expected_message[&apos;parameters&apos;]))
&gt; &gt;   AssertionError: 2 != 1
&gt; 
&gt; Filed https://bugs.webkit.org/show_bug.cgi?id=212025 for this

I submitted a fix in bug212008. (Also added it to see-also here but did not comment, sorry).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399343</attachid>
            <date>2020-05-14 02:27:20 -0700</date>
            <delta_ts>2020-05-14 02:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514022719.patch</filename>
            <type>text/plain</type>
            <size>233201</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUG9zdGVyIHNldCBhZnRlciBwbGF5YmFjayBiZWdpbnMgc2hvdWxkIGJlIGlnbm9yZWQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAxMSw3ICsyMDExLDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNz
aWJpbGl0eVJlbmRlcgogICAgIC8vIHdpbGwgYmUgYSBjYXJldCBhdCB2aXNpYmxlUG9zLgogICAg
IEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24odmlzaWJsZVBvcykpOwotICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnkp
OworICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQs
IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5
KTsKICAgICAKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc2VsZWN0aW9uLnNlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpLCBzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZp
c2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAxMiw3ICsy
MDEyLDcgQEAgLSAodm9pZClhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOihUZQogICAgIGlm
IChmcmFtZVNlbGVjdGlvbi5pc05vbmUoKSAmJiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpIDwg
cmFuZ2Uuc3RhcnQgfHwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSA+IHJhbmdlLmVuZCkpCiAgICAg
ICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhyYW5nZS5zdGFydCwgVXNlclRyaWdnZXJlZCk7CiAg
ICAgCi0gICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
RXh0ZW5kLCAoaW5jcmVhc2UpID8gRGlyZWN0aW9uUmlnaHQgOiBEaXJlY3Rpb25MZWZ0LCBncmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCAoaW5jcmVhc2UpID8gU2VsZWN0aW9uRGlyZWN0
aW9uOjpSaWdodCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCwgZ3JhbnVsYXJpdHksIFVzZXJU
cmlnZ2VyZWQpOwogfQogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlJbmNyZWFzZVNlbGVjdGlvbjoo
VGV4dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdCZWhhdmlvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ0JlaGF2aW9yLmgJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ0JlaGF2aW9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAg
cHVibGljOgogICAgIC8vIE9uIGlPUywgd2UgZG9uJ3Qgd2FudCB0byBzZWxlY3QgYWxsIHRoZSB0
ZXh0IHdoZW4gZm9jdXNpbmcgYSBmaWVsZC4gSW5zdGVhZCwgbWF0Y2ggcGxhdGZvcm0gYmVoYXZp
b3IgYnkgZ29pbmcgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KICAgICBib29sIHNob3VsZE1vdmVT
ZWxlY3Rpb25Ub0VuZFdoZW5Gb2N1c2luZ1RleHRJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBFZGl0aW5nSU9TQmVoYXZpb3I7IH0KICAgICAKLSAgICAvLyBPbiBpT1MsIHdoZW4gc21h
cnQgZGVsZXRlIGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91bGQgZG8gbm90IGFkZGl0
aW9uYWwgY2hlY2tzIChpLmUuIFdvcmRHcmFudWxhcml0eSkuCisgICAgLy8gT24gaU9TLCB3aGVu
IHNtYXJ0IGRlbGV0ZSBpcyBvbiwgaXQgaXMgYWx3YXlzIG9uLCBhbmQgc2hvdWxkIGRvIG5vdCBh
ZGRpdGlvbmFsIGNoZWNrcyAoaS5lLiBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSku
CiAgICAgYm9vbCBzaG91bGRBbHdheXNTbWFydERlbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBFZGl0aW5nSU9TQmVoYXZpb3I7IH0KICAgICAKICAgICAvLyBPbiBpT1MsIHdlIHNob3Vs
ZCB0dXJuIG9uIHNtYXJ0IGluc2VydCBhbmQgZGVsZXRlIGFuZCBuZXdsaW5lcyBhcm91bmQgcGFy
YWdyYXBocyB0byBtYXRjaCBVSUtpdCBiZWhhdmlvdXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNCw3ICs1MjQsNyBAQCBib29sIEVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUoKQogewogICAgIGlmIChiZWhhdmlvcigpLnNob3VsZEFsd2F5c1Nt
YXJ0RGVsZXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2RvY3VtZW50
LnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5OworICAgIHJldHVy
biBtX2RvY3VtZW50LnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHk7CiB9CiAKIGJvb2wgRWRpdG9yOjpzbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKQpAQCAtNTY0LDEyICs1NjQsMTIgQEAgYm9vbCBFZGl0b3I6OmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aQogICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmluZykKICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gVHlwaW5nQ29tbWFuZDo6QWRkc1RvS2lsbFJpbmc7CiAgICAgICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKLSAgICAg
ICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAg
ICAgICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKGRvY3VtZW50KCks
IG9wdGlvbnMsIGdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IERpcmVjdGlvbkJhY2t3YXJkOgotICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQ
cmVzc2VkKGRvY3VtZW50KCksIG9wdGlvbnMsIGdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMzI3LDcgKzIzMjcsNyBAQCBTdHJpbmcgRWRpdG9yOjptaXNz
cGVsbGVkV29yZEF0Q2FyZXRPclJhCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFZp
c2libGVTZWxlY3Rpb24gd29yZFNlbGVjdGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICB3b3Jk
U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICB3
b3JkU2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHkpOwogICAgIGF1dG8gd29yZFJhbmdlID0gd29yZFNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOwogICAgIGlmICghd29yZFJhbmdlKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CkBAIC0yMzk4LDcgKzIzOTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNG
b3JNaXNzcGVsCiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgYmVoYXZpb3IoKS5zaG91bGRBbGxvd1NwZWxsaW5nU3VnZ2VzdGlvbnNXaXRob3V0U2Vs
ZWN0aW9uKCkpIHsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gd29yZFNlbGVjdGlvbiA9
IFZpc2libGVTZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICB3b3JkU2Vs
ZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAg
ICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgICAgICByYW5nZSA9IHdvcmRTZWxlY3Rpb24udG9O
b3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByYW5nZSA9IHNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwpAQCAtMjU4OSw3ICsyNTg5LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZwogCiAgICAgICAgIC8vIFJlc2V0IHRo
ZSBjaGFyZXQgb25lIGNoYXJhY3RlciBmdXJ0aGVyLgogICAgICAgICBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLm1vdmVUbyhtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsK
LSAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Cisg
ICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICB9CiAKICAgICBpZiAoIWlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQpAQCAtMjkxNSwxMSArMjkxNSwxMSBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoY29uc3QgU3BlCiAgICAgICAgICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0g
ZXh0ZW5kZWRQYXJhZ3JhcGguc3VicmFuZ2UoeyAwLCBzZWxlY3Rpb25PZmZzZXQgfSk7CiAgICAg
ICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhzZWxlY3Rpb25SYW5nZS0+ZW5k
UG9zaXRpb24oKSwgRE9XTlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoYWRqdXN0U2VsZWN0aW9u
Rm9yUGFyYWdyYXBoQm91bmRhcmllcykKLSAgICAgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBtX2RvY3VtZW50
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGZhaWxzIGZv
ciBhbnkgcmVhc29uLCB0aGUgZmFsbGJhY2sgaXMgdG8gZ28gb25lIHBvc2l0aW9uIGJleW9uZCB0
aGUgbGFzdCByZXBsYWNlbWVudAogICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5t
b3ZlVG8obV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7Ci0gICAgICAg
ICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQxNzksNyAr
NDE3OSw3IEBAIHZvaWQgRWRpdG9yOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShUZXgKICAgICB9
IGVsc2UKICAgICAgICAgaW5zZXJ0VGV4dChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudCwg
bnVsbHB0cik7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UgPSBy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgp
LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFJhbmdlPiBpbnNlcnRlZENhbmRpZGF0
ZVJhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRh
cnkoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVu
dC5sZW5ndGgoKSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAgICAgaWYgKGluc2Vy
dGVkQ2FuZGlkYXRlUmFuZ2UpCiAgICAgICAgIGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCkuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKCppbnNlcnRlZENhbmRp
ZGF0ZVJhbmdlLCBEb2N1bWVudE1hcmtlcjo6QWNjZXB0ZWRDYW5kaWRhdGUsIGFjY2VwdGVkQ2Fu
ZGlkYXRlLnJlcGxhY2VtZW50KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsMzIgKzMwNCwzMiBAQCBz
dGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1lJiBmcmFtZSwgCiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRy
dWUpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
RGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgTE9H
X0VSUk9SKCJEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBu
b3QgaW1wbGVtZW50ZWQsIGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKLSAgICBmcmFt
ZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlRm9yd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0
b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIExpbmVCb3VuZGFy
eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24o
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRh
cnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCku
ZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnks
IHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91
bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzM3LDcgKzMz
Nyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZShGcmEKIHsKICAgICAv
LyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGlu
ZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5k
IG9mIGEgcGFyYWdyYXBoIChsaWtlIERlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgpLgotICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5k
YXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM0NSw3ICszNDUs
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwCiB7CiAgICAgLy8g
RGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUg
YXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaC4KLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERp
cmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY2LDEzICszNjYsMTMgQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZURlbGV0ZVRvTWFyayhGcmFtZSYgZgogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVdvcmRGb3J3YXJkKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRm9yd2FyZERlbGV0ZShG
cmFtZSYgCiB7CiAgICAgc3dpdGNoIChzb3VyY2UpIHsKICAgICBjYXNlIENvbW1hbmRGcm9tTWVu
dU9yS2V5QmluZGluZzoKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlv
bihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwor
ICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENvbW1hbmRGcm9tRE9N
OgogICAgIGNhc2UgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZToKQEAgLTYwNiw0NyAr
NjA2LDQ3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNYWtlVGV4dFdyaXRpbmdEaXJlY3QKIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVCYWNrd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVz
ZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZURvd24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
RXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlRm9yd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBV
c2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVMZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIHJldHVybiBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVm
dCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVk
KTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTY4OCwyMDMgKzY4OCwyMDMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXBBbmRN
b2RpZnlTZQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBE
aXJlY3Rpb25SaWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAg
IHJldHVybiBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBD
aGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIERvY3Vt
ZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dh
cmQsIERvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0JlZ2lubmluZ09mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5k
YXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBU
ZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5
LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBo
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlm
eVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2Vu
dGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRhcnksIFVzZXJU
cmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFNlbnRlbmNlQm91bmRh
cnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwg
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnQo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIERvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZShGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rp
b25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9FbmRPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5k
YXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIExpbmVCb3VuZGFyeSwgVXNlclRy
aWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxh
cml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVj
dGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBE
aXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5k
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhcmFncmFwaEZvcndhcmRBbmRNb2RpZnlT
ZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVVwKEZyYW1lJiBmcmFt
ZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJl
dHVybiBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQs
IExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29y
ZEJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVz
ZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
Rm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVz
ZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVdvcmRMZWZ0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
RXh0ZW5kLCBEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3Jh
bnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQs
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHRBbmRNb2Rp
ZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25SaWdodCwgV29yZEdyYW51bGFyaXR5LCBV
c2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0xlZnRFbmRPZkxpbmUoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJp
Z2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25MZWZ0
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9m
TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVk
KTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZy
YW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnks
IFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDM1LDE3ICsxMDM1
LDE3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RBbGwoRnJhbWUmIGZyYW0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZVNlbGVjdExpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRv
R3JhbnVsYXJpdHkoZnJhbWUsIExpbmVHcmFudWxhcml0eSk7CisgICAgcmV0dXJuIGV4cGFuZFNl
bGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFy
aXR5KTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFBhcmFncmFwaChGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBy
ZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgUGFyYWdyYXBoR3JhbnVs
YXJpdHkpOworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZVNlbGVjdFNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5KGZyYW1lLCBTZW50ZW5jZUdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5k
U2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5KTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKQEAgLTEw
NjIsNyArMTA2Miw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RUb01hcmsoRnJhbWUmIGYK
IAogc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFdvcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNl
bGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFdvcmRHcmFudWxhcml0eSk7CisgICAgcmV0dXJu
IGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5KTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxNTc3
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQWx3YXlz
VXNlRGlyZWN0CiBGcmFtZVNlbGVjdGlvbjo6RnJhbWVTZWxlY3Rpb24oRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1feFBvc0ZvclZlcnRpY2Fs
QXJyb3dOYXZpZ2F0aW9uKE5vWFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uKCkpCi0gICAg
LCBtX2dyYW51bGFyaXR5KENoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICwgbV9ncmFudWxhcml0
eShUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQogI2lmIEVOQUJMRShURVhU
X0NBUkVUKQogICAgICwgbV9jYXJldEJsaW5rVGltZXIoKnRoaXMsICZGcmFtZVNlbGVjdGlvbjo6
Y2FyZXRCbGlua1RpbWVyRmlyZWQpCiAjZW5kaWYKQEAgLTY3NiwyMiArNjc2LDIyIEBAIHZvaWQg
RnJhbWVTZWxlY3Rpb246OndpbGxCZU1vZGlmaWVkKEVBbHQKICAgICAgICAgICAgIGJhc2VJc1N0
YXJ0ID0gZmFsc2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsK
LSAgICAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IGZhbHNlOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICAg
ICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAgICAgICBiYXNlSXNT
dGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25M
ZWZ0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAg
IGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAg
ICAgICAgICAgICBiYXNlSXNTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlv
bjo6QmFja3dhcmQ6CiAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IGZhbHNlOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc2NSwzNCArNzY1LDM0IEBAIFZpc2libGVQb3NpdGlv
biBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAvLyBpdCBleHRlbmRzIGZvcndhcmQgbG9n
aWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6TFRSLAogICAg
IC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJs
b2NrIGlzIFRleHREaXJlY3Rpb246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9zLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBw
b3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
aygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9z
aXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBw
cmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVC
b3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAg
ICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikK
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChn
cmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0
eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgYWxs
IG9mIHRoZSBhYm92ZT8KICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFu
dWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTgwNiwzNCAr
ODA2LDM0IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKIHsKICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5h
ZmZpbml0eSgpKTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0
ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk6CiAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFdvcmRQ
b3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxh
cml0eToKICAgICAgICAgcG9zID0gbmV4dFNlbnRlbmNlUG9zaXRpb24ocG9zKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dExpbmVQb3NpdGlvbihwb3Ms
IGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihFWFRFTlQpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5l
eHRQYXJhZ3JhcGhQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0
aW9uTmF2aWdhdGlvbihFWFRFTlQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVu
dEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFy
aXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGVuZEZvclBsYXRmb3JtKCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsRW5kT2ZMaW5l
KGVuZEZvclBsYXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgcG9zID0gZW5kRm9yUGxhdGZvcm0oKTsKICAg
ICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVlcEVxdWl2YWxlbnQoKSkpCiAgICAg
ICAgICAgICBwb3MgPSBlbmRPZkVkaXRhYmxlQ29udGVudChwb3MpOwpAQCAtODUzLDcgKzg1Myw3
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgKnJl
YWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAo
aXNSYW5nZSgpKSB7CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9u
KG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTg2Miw3ICs4
NjIsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4
dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5yaWdodCh0cnVlLCByZWFjaGVkQm91bmRh
cnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eTogeworICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsKICAgICAgICAgYm9vbCBza2lw
c1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5lZGl0b3Io
KS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdSaWdodCgpOwogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3Nl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgcG9zID0gcmlnaHRXb3JkUG9zaXRpb24oY3Vy
cmVudFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKQEAgLTg3MCwxOSArODcw
LDE5IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAg
ICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGlu
ZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBT
ZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRC
b3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2YgdGhlIGFib3ZlLgog
ICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdGb3J3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSByaWdodEJvdW5k
YXJ5T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC04OTUsMTUgKzg5NSwxNSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxzZTsKICAgICBWaXNpYmxlUG9zaXRp
b24gY3VycmVudFBvc2l0aW9uOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNl
IFdvcmRHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gVmlz
aWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgp
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAg
ICBjdXJyZW50UG9zaXRpb24gPSBlbmRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpAQCAtOTEyLDE5ICs5MTIsMTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnlNbwogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgLy8gRklYTUU6
IFN0YXkgaW4gZWRpdGFibGUgY29udGVudCBmb3IgdGhlIGxlc3MgY29tbW9uIGdyYW51bGFyaXRp
ZXMuCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5Ogog
ICAgICAgICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9u
KG1fc2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0oY3VycmVudFBvc2l0aW9uKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0U2Vu
dGVuY2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IExpbmVHcmFudWxhcml0eTogeworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6IHsKICAgICAgICAgLy8gZG93bi1hcnJvd2luZyBmcm9tIGEgcmFuZ2Ugc2VsZWN0aW9u
IHRoYXQgZW5kcyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIG5lZWRzCiAgICAgICAgIC8vIHRvIGxl
YXZlIHRoZSBzZWxlY3Rpb24gYXQgdGhhdCBsaW5lIHN0YXJ0IChubyBuZWVkIHRvIGNhbGwgbmV4
dExpbmVQb3NpdGlvbiEpCiAgICAgICAgIHBvcyA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTkzMiwy
MiArOTMyLDIyIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAg
ICAgICAgICAgIHBvcyA9IG5leHRMaW5lUG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRG
b3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oU1RBUlQpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0UGFyYWdyYXBoUG9z
aXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlv
bk5hdmlnYXRpb24oU1RBUlQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlNlbnRlbmNlKGN1cnJlbnRQb3NpdGlvbik7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5k
Rm9yUGxhdGZvcm0oKSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZE9mUGFyYWdyYXBoKGN1cnJlbnRQb3NpdGlvbik7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgcG9zID0gY3VycmVudFBv
c2l0aW9uOwogICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVu
dCgpKSkKICAgICAgICAgICAgIHBvcyA9IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC05
NTYsMTMgKzk1NiwxMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1v
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0g
ICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgogICAgICAgICBpZiAocmVhY2hlZEJvdW5kYXJ5KQogICAgICAgICAgICAgKnJlYWNoZWRC
b3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwpAQCAtOTgy
LDMzICs5ODIsMzMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAog
ICAgIC8vIGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxv
Y2sgaXMgVGV4dERpcmVjdGlvbjo6TFRSLAogICAgIC8vIGJ1dCBpdCBleHRlbmRzIGZvcndhcmQg
bG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6UlRMLgog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRh
cnkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAg
IGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQog
ICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0
ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBw
b3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5k
YXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhC
b3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDI3LDM4ICsxMDI3LDM4IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAvLyBJdCB3YXMgZG9uZSBo
ZXJlIGluc3RlYWQgb2YgaW4gVmlzaWJsZVBvc2l0aW9uIGJlY2F1c2Ugd2Ugd2FudCBWUHMgdG8g
aXRlcmF0ZQogICAgIC8vIG92ZXIgZXZlcnl0aGluZy4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5
KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyhD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29y
ZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6
CiAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNTZW50ZW5jZVBv
c2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9
IHByZXZpb3VzTGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJl
Y3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFn
cmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFu
dWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNQYXJhZ3JhcGhQb3NpdGlvbihwb3MsIGxp
bmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihFWFRFTlQpKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFydE9mU2VudGVu
Y2Uoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAg
cG9zID0gbG9naWNhbFN0YXJ0T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFydE9mUGFyYWdyYXBoKHN0
YXJ0Rm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAg
ICAgcG9zID0gc3RhcnRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0
aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZFZGl0
YWJsZUNvbnRlbnQocG9zKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gc3RhcnRP
ZkRvY3VtZW50KHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEw
NzQsNyArMTA3NCw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8K
ICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBw
b3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5Ogog
ICAgICAgICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIHBvcyA9IFZpc2li
bGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsK
QEAgLTEwODMsNyArMTA4Myw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5sZWZ0KHRydWUsIHJl
YWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5
OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAg
ICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1l
bnQtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBwb3MgPSBsZWZ0V29yZFBv
c2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CkBAIC0x
MDkxLDE5ICsxMDkxLDE5IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9u
OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5Ogot
ICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6
Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhbGwgb2Yg
dGhlIGFib3ZlLgogICAgICAgICBwb3MgPSBtb2RpZnlNb3ZpbmdCYWNrd2FyZChncmFudWxhcml0
eSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgcG9z
ID0gbGVmdEJvdW5kYXJ5T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50
R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0xMTE2LDE1ICsxMTE2LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNl
bGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0
eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50
UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0
aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3Vu
ZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91
bmRhcnk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTExMzIsNTIgKzExMzIsNTIgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIH0KICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3Rl
ckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQ
b3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9u
LmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKS5wcmV2aW91cyhDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24oY3VycmVudFBvc2l0aW9u
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBw
cmV2aW91c1NlbnRlbmNlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24o
U1RBUlQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAg
IHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBsaW5lRGly
ZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oU1RBUlQpKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFydE9mU2VudGVuY2UoY3Vy
cmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbG9n
aWNhbFN0YXJ0T2ZMaW5lKHN0YXJ0Rm9yUGxhdGZvcm0oKSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJh
Z3JhcGgoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVu
dEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5Ogog
ICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9z
aXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkVk
aXRhYmxlQ29udGVudChwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFy
dE9mRG9jdW1lbnQocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0g
ICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGlmIChyZWFjaGVkQm91
bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9zID09IGN1cnJlbnRQb3Np
dGlvbjsKICAgICAgICAgYnJlYWs7CkBAIC0xMTg5LDcgKzExODksNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAKIHN0YXRpYyBib29sIGlzQm91bmRhcnkoVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIHJldHVybiBncmFudWxhcml0eSA9PSBM
aW5lQm91bmRhcnkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoQm91bmRhcnkgfHwgZ3JhbnVs
YXJpdHkgPT0gRG9jdW1lbnRCb3VuZGFyeTsKKyAgICByZXR1cm4gZ3JhbnVsYXJpdHkgPT0gVGV4
dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgfHwgZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OkRvY3VtZW50Qm91bmRhcnk7CiB9CiAKIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2Vs
ZWN0aW9uOjp0ZXh0U2VsZWN0aW9uSW50ZW50KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCkBAIC0xMjAy
LDU1ICsxMjAyLDU1IEBAIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoK
ICAgICB9IGVsc2UKICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVT
ZWxlY3Rpb25FeHRlbmQ7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hh
cmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5OgogICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVNlbnRlbmNlOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBpbnRlbnQuc2VsZWN0aW9u
LmdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eURvY3VtZW50OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgYm9vbCBib3VuZGFyeSA9IGZh
bHNlOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51
bGFyaXR5OgotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdy
YW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAg
IGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgorICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9j
dW1lbnRCb3VuZGFyeToKICAgICAgICAgYm91bmRhcnkgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvblJpZ2h0
OgotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlv
bjo6UmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAg
IGlmIChib3VuZGFyeSkKICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0g
ZmxpcCA/IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyA6IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbkVuZDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlv
bi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXMgOiBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERp
cmVjdGlvbkxlZnQ6Ci0gICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6TGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQ6CiAgICAgICAgIGlmIChib3VuZGFyeSkKICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24u
ZGlyZWN0aW9uID0gZmxpcCA/IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZCA6IEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsKICAgICAgICAgZWxzZQpAQCAtMTI2Miw1OCArMTI2
Miw1OCBAQCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBGcmFtZVNlbGVjdGlvbjo6CiAKIHN0YXRp
YyBBWFRleHRTZWxlY3Rpb24gdGV4dFNlbGVjdGlvbldpdGhEaXJlY3Rpb25BbmRHcmFudWxhcml0
eShTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHkpCiB7Ci0gICAgLy8gRklYTUU6IEFjY291bnQgZm9yIEJJREkgaW4gRGlyZWN0aW9uUmlnaHQg
JiBEaXJlY3Rpb25MZWZ0LiAoSW4gYSBSVEwgYmxvY2ssIFJpZ2h0IHdvdWxkIG1hcCB0byBQcmV2
aW91cy9CZWdpbm5pbmcgYW5kIExlZnQgdG8gTmV4dC9FbmQuKQorICAgIC8vIEZJWE1FOiBBY2Nv
dW50IGZvciBCSURJIGluIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQgJiBTZWxlY3Rpb25EaXJl
Y3Rpb246OkxlZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQgbWFwIHRvIFByZXZpb3Vz
L0JlZ2lubmluZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCiAgICAgQVhUZXh0U2VsZWN0aW9uRGly
ZWN0aW9uIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblVua25vd247
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6Cisg
ICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAgIGludGVudERpcmVj
dGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0
OgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2Ug
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0g
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAg
ICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSBp
bnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93bjsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAg
IGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlXb3JkOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OiAvLyBG
SVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBkaXJlY3Rpb24uCisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVj
dGlvbi4KICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxh
cml0eVNlbnRlbmNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICBpbnRl
bnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFw
aEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBkaXJlY3Rpb24uCisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNo
b3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4
dFNlbGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBoOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERvY3VtZW50R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OiAvLyBGSVhN
RTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBkaXJlY3Rpb24uCisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50Qm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlv
bi4KICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eURvY3VtZW50OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBpbnRlbnRHcmFudWxh
cml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgc3dpdGNoIChk
aXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNl
IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlv
biA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlv
bjo6UmlnaHQ6CiAgICAgICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25E
aXJlY3Rpb25FbmQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25C
YWNrd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAg
ICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5u
aW5nOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTM0NCwyNSArMTM0NCwyNSBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgUG9zaXRpb24gb3JpZ2luYWxTdGFydFBv
c2l0aW9uID0gbV9zZWxlY3Rpb24uc3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b247CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvblJpZ2h0Ogor
ICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGFsdGVyID09
IEFsdGVyYXRpb25Nb3ZlKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdSaWdo
dChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5k
KQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFy
aXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdG
b3J3YXJkKGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0
OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAgICAgICBwb3Np
dGlvbiA9IG1vZGlmeU1vdmluZ0xlZnQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0xlZnQo
Z3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJk
OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAgaWYgKGFs
dGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4
dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQpAQCAtMTQwMiw3ICsx
NDAyLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgIGNh
c2UgQWx0ZXJhdGlvbkV4dGVuZDoKIAogICAgICAgICBpZiAoIW1fc2VsZWN0aW9uLmlzQ2FyZXQo
KQotICAgICAgICAgICAgJiYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSB8fCBncmFu
dWxhcml0eSA9PSBQYXJhZ3JhcGhHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBMaW5lR3Jh
bnVsYXJpdHkpCisgICAgICAgICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eSkKICAgICAgICAgICAgICYmIG1fZG9jdW1lbnQgJiYgIW1fZG9jdW1lbnQtPmVk
aXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkRXh0ZW5kU2VsZWN0aW9uQnlXb3JkT3JMaW5lQWNyb3Nz
Q2FyZXQoKSkgewogICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IHRoZSBzZWxlY3Rpb24gZ28gYWNy
b3NzIHRoZSBiYXNlIHBvc2l0aW9uIGRpcmVjdGx5LiBOZWVkZWQgdG8gbWF0Y2ggbWFjCiAgICAg
ICAgICAgICAvLyBiZWhhdmlvciB3aGVuLCBmb3IgaW5zdGFuY2UsIHdvcmQtc2VsZWN0aW5nIGJh
Y2t3YXJkcyBzdGFydGluZyB3aXRoIHRoZSBjYXJldCBpbgpAQCAtMTQyMCw3ICsxNDIwLDcgQEAg
Ym9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAgICAgc2V0
RXh0ZW50KHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCk7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwg
KHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25SaWdodCkgfHwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMICYmIGRp
cmVjdGlvbiA9PSBEaXJlY3Rpb25MZWZ0KSkKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiAmJiBkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCkgfHwg
KHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMICYmIGRpcmVjdGlvbiA9PSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkxlZnQpKQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3Rh
cnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwpAQCAtMTQyOCwxMSArMTQyOCwxMSBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICAKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gTGluZUdyYW51bGFyaXR5IHx8IGdyYW51
bGFyaXR5ID09IFBhcmFncmFwaEdyYW51bGFyaXR5KQorICAgIGlmIChncmFudWxhcml0eSA9PSBU
ZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3Jh
bnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KQogICAgICAgICBtX3hQb3NGb3JWZXJ0aWNh
bEFycm93TmF2aWdhdGlvbiA9IHg7CiAKICAgICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJp
Z2dlcmVkKQotICAgICAgICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7Cisg
ICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5OwogCiAgICAgc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKIApAQCAtMTQ2NCw3ICsxNDY0
LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCBkaXJl
Y3Rpb24gPT0gRGlyZWN0aW9uVXAgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVjdGlvbkZvcndh
cmQpOworICAgIHdpbGxCZU1vZGlmaWVkKGFsdGVyLCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uVXAg
PyBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3
YXJkKTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgTGF5b3V0VW5pdCB4UG9zOwpA
QCAtMTUyNCw3ICsxNTI0LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0
aW9uIAogICAgIH0KIAogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCi0g
ICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgbV9n
cmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAg
ICBtX3NlbGVjdGlvbi5zZXRJc0RpcmVjdGlvbmFsKHNob3VsZEFsd2F5c1VzZURpcmVjdGlvbmFs
U2VsZWN0aW9uKG1fZG9jdW1lbnQpIHx8IGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpOwogCkBA
IC0xNTcyLDEzICsxNTcyLDEzIEBAIExheW91dFVuaXQgRnJhbWVTZWxlY3Rpb246OmxpbmVEaXJl
Y3Rpb24KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6Y2xlYXIoKQogewotICAgIG1fZ3JhbnVsYXJp
dHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBtX2dyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBzZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbigpKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6d2lsbEJlUmVtb3ZlZEZyb21G
cmFtZSgpCiB7Ci0gICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAg
IG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5Owog
CiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAgbV9jYXJldEJsaW5rVGltZXIuc3RvcCgpOwpA
QCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6d2lsbEJlUmVtb3ZlZEZy
b21GcgogICAgIGlmIChhdXRvKiB2aWV3ID0gbV9kb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAg
ICAgICB2aWV3LT5zZWxlY3Rpb24oKS5jbGVhclNlbGVjdGlvbigpOwogCi0gICAgc2V0U2VsZWN0
aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uKCksIGRlZmF1bHRT
ZXRTZWxlY3Rpb25PcHRpb25zKCksIEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgIHNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFu
Y2UoVmlzaWJsZVNlbGVjdGlvbigpLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBBbGln
bkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpOwogICAgIG1fcHJldmlvdXNDYXJldE5vZGUgPSBudWxscHRyOwogICAgIG1fdHlwaW5n
U3R5bGUgPSBudWxscHRyOwogICAgIG1fYXBwZWFyYW5jZVVwZGF0ZVRpbWVyLnN0b3AoKTsKQEAg
LTIxNjUsNyArMjE2NSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFwcGVhcmFuY2Uo
KQogICAgIC8vIENvbnN0cnVjdCBhIG5ldyBWaXNpYmxlU29sdXRpb24sIHNpbmNlIG1fc2VsZWN0
aW9uIGlzIG5vdCBuZWNlc3NhcmlseSB2YWxpZCwgYW5kIHRoZSBmb2xsb3dpbmcgc3RlcHMKICAg
ICAvLyBhc3N1bWUgYSB2YWxpZCBzZWxlY3Rpb24uIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY5NTYzPiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzEwMjMyODY2Pi4K
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBv
c2l0aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpIDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gcGFpbnRCbG9ja0N1cnNvciA/IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgOiBv
bGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
KG9sZFNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgZW5kVmlzaWJsZVBvc2l0aW9uKTsKICNlbHNl
CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9uLnZpc2libGVTdGFy
dCgpLCBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpKTsKQEAgLTI3NDMsMTAgKzI3NDMsMTAgQEAg
VmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbAogICAgIC8vIFRoaXMgaGFz
IHRoZSBlZmZlY3Qgb2Ygc2VsZWN0aW5nIHRoZSB3b3JkIG9uIHRoZSBsaW5lICh3aGljaCBpcwog
ICAgIC8vIHdoYXQgd2Ugd2FudCwgcmF0aGVyIHRoYW4gc2VsZWN0aW5nIHBhc3QgdGhlIGVuZCBv
ZiB0aGUgbGluZSkuCiAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgoZW5kVmlzaWJsZVBvc0JlZm9y
ZUV4cGFuc2lvbikgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhw
YW5zaW9uKSkKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
KyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9
IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpOwotICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2lu
Z0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVz
aW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIGZy
YW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCksIEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgZnJhbWVTZWxlY3Rpb24uZ3JhbnVsYXJpdHkoKSk7CiAKICAgICBQb3NpdGlv
biBzdGFydFBvcyhmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpKTsKQEAgLTI3OTYs
NyArMjc5Niw3IEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWwKICAg
ICAgICAgICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAg
ZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHN0YXJ0VmlzaWJsZVBvcyk7Ci0gICAgICAgIGZyYW1lU2Vs
ZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
QmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICBzdGFy
dFBvcyA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgICAgIGVuZFBv
cyA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpOwogICAgICAgICBzdGFydFZpc2li
bGVQb3MgPSBWaXNpYmxlUG9zaXRpb24oc3RhcnRQb3MsIFZQX0RFRkFVTFRfQUZGSU5JVFkpOwpA
QCAtMjg3Miw5ICsyODcyLDkgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lU2VsZWN0aW9u
OjpyYQogCiAgICAgRnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxlY3Rpb247CiAgICAgZnJhbWVTZWxl
Y3Rpb24uc2V0U2VsZWN0aW9uKG1fc2VsZWN0aW9uKTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uID0gYW1vdW50ID4gMCA/IERpcmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNr
d2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gYW1vdW50ID4gMCA/IFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMoYW1vdW50KTsgaSsrKQotICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoYWx0ZXJhdGlvbiwgZGlyZWN0aW9uLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rp
b24sIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIHJldHVybiBm
cmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyNjE1Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25I
YXNEaXJlY3Rpb24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMsIFNlbGVjdGlvblJldmVhbE1vZGUsIGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkp
OwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb247IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gPSBk
ZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCA9IEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50KCksIEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNv
ck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gPSBkZWZhdWx0U2V0U2VsZWN0
aW9uT3B0aW9ucygpLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50KCksIEN1cnNvckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVk
ZWQsIFRleHRHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHkpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRDbG9zZVR5cGluZyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFm
ZmluaXR5LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dl
cmVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAkocmV2
aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHku
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IC8vIEZJWE1FOiBUaGlzIHJlYWxseSBzaG91bGQgYmUgYnJva2VuIHVwIGludG8gbW9yZSB0aGFu
IG9uZSBjb25jZXB0LgogLy8gRnJhbWUgZG9lc24ndCBuZWVkIHRoZSAzIGJvdW5kYXJpZXMgaW4g
dGhpcyBlbnVtLgotZW51bSBUZXh0R3JhbnVsYXJpdHkgeworZW51bSBjbGFzcyBUZXh0R3JhbnVs
YXJpdHkgOiB1aW50OF90IHsKICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICBXb3JkR3Jh
bnVsYXJpdHksCiAgICAgU2VudGVuY2VHcmFudWxhcml0eSwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDE2
ICsxMDEsMTYgQEAgc3RhdGljIGlubGluZSBFZGl0QWN0aW9uIGVkaXRBY3Rpb25Gb3JUeQogICAg
IGNhc2UgVHlwaW5nQ29tbWFuZDo6RGVsZXRlU2VsZWN0aW9uOgogICAgICAgICByZXR1cm4gRWRp
dEFjdGlvbjo6VHlwaW5nRGVsZXRlU2VsZWN0aW9uOwogICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6
RGVsZXRlS2V5OiB7Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3JkR3JhbnVsYXJpdHkp
CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdEZWxldGVXb3JkQmFj
a3dhcmQ7Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBMaW5lQm91bmRhcnkpCisgICAgICAg
IGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSkKICAgICAg
ICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdEZWxldGVMaW5lQmFja3dhcmQ7CiAgICAg
ICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdEZWxldGVCYWNrd2FyZDsKICAgICB9CiAgICAg
Y2FzZSBUeXBpbmdDb21tYW5kOjpGb3J3YXJkRGVsZXRlS2V5OgotICAgICAgICBpZiAoZ3JhbnVs
YXJpdHkgPT0gV29yZEdyYW51bGFyaXR5KQorICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpCiAgICAgICAgICAgICByZXR1cm4gRWRpdEFj
dGlvbjo6VHlwaW5nRGVsZXRlV29yZEZvcndhcmQ7Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9
PSBMaW5lQm91bmRhcnkpCisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJp
dHk6OkxpbmVCb3VuZGFyeSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdE
ZWxldGVMaW5lRm9yd2FyZDsKICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0
ZUZvcndhcmQ7CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpJbnNlcnRUZXh0OgpAQCAtMTc5LDcg
KzE3OSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKERvY3UKIAogdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0
aW9ucyBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgaWYgKGdy
YW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CisgICAgaWYgKGdyYW51bGFyaXR5
ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKICAgICAgICAgaWYg
KFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29tbWFuZCA9IGxhc3RUeXBpbmdDb21t
YW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7CiAgICAgICAgICAgICB1cGRhdGVT
ZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5k
LmdldCgpLCBkb2N1bWVudCk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNB
dXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CkBAIC0xOTYsNyArMTk2
LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKERvYwogdm9pZCBUeXBp
bmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1lbnQsIE9w
dGlvbnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIC8vIEZJ
WE1FOiBGb3J3YXJkIGRlbGV0ZSBpbiBUZXh0RWRpdCBhcHBlYXJzIHRvIG9wZW4gYW5kIGNsb3Nl
IGEgbmV3IHR5cGluZyBjb21tYW5kLgotICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJH
cmFudWxhcml0eSkgeworICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5KSB7CiAgICAgICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4g
bGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0VHlwaW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5n
KGRvY3VtZW50KSkgewogICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9t
Q3VycmVudFNlbGVjdGlvbihsYXN0VHlwaW5nQ29tbWFuZC5nZXQoKSwgZG9jdW1lbnQpOwogICAg
ICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQtPnNldElzQXV0b2NvbXBsZXRpb24ob3B0aW9ucyAm
IElzQXV0b2NvbXBsZXRpb24pOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgVHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dEFuZE5vdGlmeUEKIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
UnVuV2l0aG91dE5ld2xpbmVzKGNvbnN0IFN0cmluZyAmdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRl
ZFRleHQpCiB7Ci0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRUZXh0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdGV4dCkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9P
cGVuQ29tbWFuZChJbnNlcnRUZXh0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCB0ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBjb21tYW5kID0gSW5zZXJ0
VGV4dENvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQs
CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWso
KQogICAgIGlmICghY2FuQXBwZW5kTmV3TGluZUZlZWRUb1NlbGVjdGlvbihlbmRpbmdTZWxlY3Rp
b24oKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNv
bW1hbmQoSW5zZXJ0TGluZUJyZWFrLCBMaW5lR3JhbnVsYXJpdHkpKQorICAgIGlmICghd2lsbEFk
ZFR5cGluZ1RvT3BlbkNvbW1hbmQoSW5zZXJ0TGluZUJyZWFrLCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5Q29tbWFuZFRvQ29t
cG9zaXRlKEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CkBAIC01
NjUsNyArNTY1LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcgog
ICAgIGlmICghY2FuQXBwZW5kTmV3TGluZUZlZWRUb1NlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yLCBQYXJhZ3JhcGhHcmFudWxhcml0eSkpCisgICAg
aWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3Is
IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmFsc2UsIGZhbHNlLCBFZGl0QWN0aW9uOjpUeXBp
bmdJbnNlcnRQYXJhZ3JhcGgpKTsKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIFR5cGluZ0NvbW1h
bmQ6Omluc2VydFBhcmFncmFwaFNlcGFyCiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KCkKIHsKLSAgICBpZiAoIXdpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCwg
UGFyYWdyYXBoR3JhbnVsYXJpdHkpKQorICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50LCBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYg
dGhlIHNlbGVjdGlvbiBzdGFydHMgaW5zaWRlIGEgdGFibGUsIGp1c3QgaW5zZXJ0IHRoZSBwYXJh
Z3JhcGggc2VwYXJhdG9yIG5vcm1hbGx5CkBAIC02NTAsOSArNjUwLDkgQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleAogCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNl
bGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24o
KSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7Ci0gICAgICAgIGlmIChzaG91
bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBncmFudWxhcml0
eSk7CisgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVN0YXJ0ID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7CiAgICAgICAg
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcHJldmlvdXNQb3NpdGlvbiA9IHZpc2libGVTdGFydC5w
cmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CkBAIC02ODcsNyArNjg3LDcgQEAg
dm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleAogICAgICAgICAgICAgaWYg
KGlzTGFzdFBvc2l0aW9uQmVmb3JlVGFibGUodmlzaWJsZVN0YXJ0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVjdGlvbiBiYWNrd2FyZCBp
bnRvIHRoZSBsYXN0IGNlbGwsIHRoZW4gZGVsZXRpb24gd2lsbCBoYW5kbGUgdGhlIG1vdmUuCi0g
ICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0
ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICAgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICAvLyBJZiB0aGUgY2FyZXQg
aXMganVzdCBhZnRlciBhIHRhYmxlLCBzZWxlY3QgdGhlIHRhYmxlIGFuZCBkb24ndCBkZWxldGUg
YW55dGhpbmcuCiAgICAgICAgIH0gZWxzZSBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKHZpc2libGVTdGFydCkpIHsKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJsZSksIGVuZGluZ1Nl
bGVjdGlvbigpLnN0YXJ0KCksIERPV05TVFJFQU0sIGVuZGluZ1NlbGVjdGlvbigpLmlzRGlyZWN0
aW9uYWwoKSkpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRl
S2V5UHJlc3NlZChUZXgKIAogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlvbi5z
ZWxlY3Rpb24oKTsKIAotICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVj
dGlvblRvRGVsZXRlLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpCisgICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5ICYmIHNlbGVjdGlv
blRvRGVsZXRlLmVuZCgpLmNvbnRhaW5lck5vZGUoKSA9PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFy
dCgpLmNvbnRhaW5lck5vZGUoKQogICAgICAgICAgICAgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gc2VsZWN0aW9uVG9EZWxldGUuc3Rh
cnQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkgPiAxKSB7CiAgICAgICAgICAgICAv
LyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgVW5pY29kZSBjb2RlIHBvaW50cyB0byBiZSBkZWxldGVk
LCBhZGp1c3QgdGhlIHJhbmdlIHRvIG1hdGNoIHBsYXRmb3JtIGNvbnZlbnRpb25zLgogICAgICAg
ICAgICAgc2VsZWN0aW9uVG9EZWxldGUuc2V0V2l0aG91dFZhbGlkYXRpb24oc2VsZWN0aW9uVG9E
ZWxldGUuZW5kKCksIHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLnByZXZpb3VzKEJhY2t3YXJkRGVs
ZXRpb24pKTsKQEAgLTc3MywxMSArNzczLDExIEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2Fy
ZERlbGV0ZUtleVByZXMKICAgICAgICAgLy8gcm9vdCBlZGl0YWJsZSBlbGVtZW50IG9yIGF0IHRo
ZSBzdGFydCBvZiBhIGRvY3VtZW50LgogICAgICAgICBGcmFtZVNlbGVjdGlvbiBzZWxlY3Rpb247
CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpOwotICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBE
aXJlY3Rpb25Gb3J3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnko
RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCwgZ3JhbnVsYXJpdHkpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmluZyAmJiBzZWxl
Y3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQot
ICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBp
ZiAoc2hvdWxkQWRkVG9LaWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFy
aXR5ICE9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgICAgICAg
ICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpOwogCiAgICAgICAgIFBvc2l0aW9uIGRvd25zdHJlYW1FbmQgPSBlbmRpbmdTZWxlY3Rp
b24oKS5lbmQoKS5kb3duc3RyZWFtKCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
RW5kID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwpAQCAtNzk1LDggKzc5NSw4IEBA
IHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXMKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIGRlbGV0aW5nIHRvIGVuZCBvZiBwYXJhZ3JhcGggd2hlbiBhdCBlbmQgb2YgcGFy
YWdyYXBoIG5lZWRzIHRvIG1lcmdlIHRoZSBuZXh0IHBhcmFncmFwaCAoaWYgYW55KQotICAgICAg
ICBpZiAoZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoQm91bmRhcnkgJiYgc2VsZWN0aW9uLnNlbGVj
dGlvbigpLmlzQ2FyZXQoKSAmJiBpc0VuZE9mUGFyYWdyYXBoKHNlbGVjdGlvbi5zZWxlY3Rpb24o
KS52aXNpYmxlRW5kKCkpKQotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVs
YXJpdHkpOworICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJldCgpICYmIGlzRW5k
T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSkpCisgICAgICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVj
dGlvbigpOwogICAgICAgICBpZiAoIXN0YXJ0aW5nU2VsZWN0aW9uKCkuaXNSYW5nZSgpIHx8IHNl
bGVjdGlvblRvRGVsZXRlLmJhc2UoKSAhPSBzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpCkBA
IC04NTYsNyArODU2LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
cwogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihib29sIHNtYXJ0RGVsZXRl
KQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoRGVsZXRlU2VsZWN0aW9u
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29t
bWFuZChEZWxldGVTZWxlY3Rpb24sIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRl
U2VsZWN0aW9uKHNtYXJ0RGVsZXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlw
aW5nQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5
cGluZ0NvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBPcHRpb25zOwogCiAgICAgc3RhdGljIHZvaWQgZGVsZXRlU2Vs
ZWN0aW9uKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRDb21wb3NpdGlvblR5cGUgPSBUZXh0
Q29tcG9zaXRpb25Ob25lKTsKLSAgICBzdGF0aWMgdm9pZCBkZWxldGVLZXlQcmVzc2VkKERvY3Vt
ZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
KTsKLSAgICBzdGF0aWMgdm9pZCBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYsIE9w
dGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
c3RhdGljIHZvaWQgZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYsIE9wdGlvbnMgPSAwLCBUZXh0
R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAg
ICBzdGF0aWMgdm9pZCBmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYsIE9wdGlvbnMg
PSAwLCBUZXh0R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiwgT3B0aW9ucywgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5vbmUpOwog
ICAgIHN0YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9ucywgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRD
b21wb3NpdGlvbk5vbmUpOwogICAgIHN0YXRpYyB2b2lkIGluc2VydExpbmVCcmVhayhEb2N1bWVu
dCYsIE9wdGlvbnMpOwpAQCAtODYsMTQgKzg2LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0ID0gZW1wdHlT
dHJpbmcoKSwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25U
eXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSkKKyAgICBzdGF0aWMgUmVmPFR5cGluZ0NvbW1hbmQ+
IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmQsIGNvbnN0
IFN0cmluZyYgdGV4dCA9IGVtcHR5U3RyaW5nKCksIE9wdGlvbnMgb3B0aW9ucyA9IDAsIFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHksIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0
aW9uTm9uZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFR5cGluZ0NvbW1h
bmQoZG9jdW1lbnQsIGNvbW1hbmQsIHRleHQsIG9wdGlvbnMsIGdyYW51bGFyaXR5LCBjb21wb3Np
dGlvblR5cGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPFR5cGluZ0NvbW1hbmQ+IGNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmQsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlIGNvbXBvc2l0aW9u
VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFR5cGluZ0NvbW1hbmQo
ZG9jdW1lbnQsIGNvbW1hbmQsIHRleHQsIG9wdGlvbnMsIENoYXJhY3RlckdyYW51bGFyaXR5LCBj
b21wb3NpdGlvblR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29t
bWFuZChkb2N1bWVudCwgY29tbWFuZCwgdGV4dCwgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5OjpD
aGFyYWN0ZXJHcmFudWxhcml0eSwgY29tcG9zaXRpb25UeXBlKSk7CiAgICAgfQogCiAgICAgVHlw
aW5nQ29tbWFuZChEb2N1bWVudCYsIEVUeXBpbmdDb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQs
IE9wdGlvbnMsIFRleHRHcmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDI2
MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3MSwxMjAgKzI3MSwxMjAgQEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9u
OjpzZXRTdGFydEFuZEVuZEZybwogICAgIH0KIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsK
LSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIC8vIERvbid0
IGRvIGFueSBleHBhbnNpb24uCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXb3Jk
R3JhbnVsYXJpdHk6IHsKLSAgICAgICAgICAgIC8vIEdlbmVyYWwgY2FzZTogU2VsZWN0IHRoZSB3
b3JkIHRoZSBjYXJldCBpcyBwb3NpdGlvbmVkIGluc2lkZSBvZiwgb3IgYXQgdGhlIHN0YXJ0IG9m
IChSaWdodFdvcmRJZk9uQm91bmRhcnkpLgotICAgICAgICAgICAgLy8gRWRnZSBjYXNlOiBJZiB0
aGUgY2FyZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qgd29yZCBpbiBhIHNvZnQtd3JhcHBlZCBsaW5lIG9y
IHRoZSBsYXN0IHdvcmQgaW4KLSAgICAgICAgICAgIC8vIHRoZSBkb2N1bWVudCwgc2VsZWN0IHRo
YXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCi0gICAgICAgICAgICAvLyBFZGdl
IGNhc2U6IElmIHRoZSBjYXJldCBpcyBhZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgcGFyYWdyYXBo
LCBzZWxlY3QgZnJvbSB0aGUgZW5kIG9mIHRoZQotICAgICAgICAgICAgLy8gbGFzdCB3b3JkIHRv
IHRoZSBsaW5lIGJyZWFrIChhbHNvIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZp
bml0eSk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gb3JpZ2luYWxFbmQobV9lbmQsIG1f
YWZmaW5pdHkpOwotICAgICAgICAgICAgRVdvcmRTaWRlIHNpZGUgPSBSaWdodFdvcmRJZk9uQm91
bmRhcnk7Ci0gICAgICAgICAgICBpZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRl
bnQoc3RhcnQpIHx8IChpc0VuZE9mTGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQp
ICYmICFpc0VuZE9mUGFyYWdyYXBoKHN0YXJ0KSkpCi0gICAgICAgICAgICAgICAgc2lkZSA9IExl
ZnRXb3JkSWZPbkJvdW5kYXJ5OwotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZXb3JkKHN0
YXJ0LCBzaWRlKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgc2lkZSA9IFJpZ2h0V29y
ZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRh
YmxlQ29udGVudChvcmlnaW5hbEVuZCkgfHwgKGlzRW5kT2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAh
aXNTdGFydE9mTGluZShvcmlnaW5hbEVuZCkgJiYgIWlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxF
bmQpKSkKLSAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEVuZChlbmRPZldv
cmQob3JpZ2luYWxFbmQsIHNpZGUpKTsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQo
d29yZEVuZCk7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgICAgICAvLyBEb24ndCBkbyBhbnkgZXhwYW5zaW9uLgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CisgICAgICAgIC8vIEdl
bmVyYWwgY2FzZTogU2VsZWN0IHRoZSB3b3JkIHRoZSBjYXJldCBpcyBwb3NpdGlvbmVkIGluc2lk
ZSBvZiwgb3IgYXQgdGhlIHN0YXJ0IG9mIChSaWdodFdvcmRJZk9uQm91bmRhcnkpLgorICAgICAg
ICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBhZnRlciB0aGUgbGFzdCB3b3JkIGluIGEg
c29mdC13cmFwcGVkIGxpbmUgb3IgdGhlIGxhc3Qgd29yZCBpbgorICAgICAgICAvLyB0aGUgZG9j
dW1lbnQsIHNlbGVjdCB0aGF0IGxhc3Qgd29yZCAoTGVmdFdvcmRJZk9uQm91bmRhcnkpLgorICAg
ICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBhZnRlciB0aGUgbGFzdCB3b3JkIGlu
IGEgcGFyYWdyYXBoLCBzZWxlY3QgZnJvbSB0aGUgZW5kIG9mIHRoZQorICAgICAgICAvLyBsYXN0
IHdvcmQgdG8gdGhlIGxpbmUgYnJlYWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gb3JpZ2luYWxFbmQobV9lbmQsIG1f
YWZmaW5pdHkpOworICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFy
eTsKKyAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHN0YXJ0
KSB8fCAoaXNFbmRPZkxpbmUoc3RhcnQpICYmICFpc1N0YXJ0T2ZMaW5lKHN0YXJ0KSAmJiAhaXNF
bmRPZlBhcmFncmFwaChzdGFydCkpKQorICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJv
dW5kYXJ5OworICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQsIHNpZGUpLmRlZXBF
cXVpdmFsZW50KCk7CisgICAgICAgIHNpZGUgPSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CisgICAg
ICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChvcmlnaW5hbEVuZCkg
fHwgKGlzRW5kT2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAhaXNTdGFydE9mTGluZShvcmlnaW5hbEVu
ZCkgJiYgIWlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxFbmQpKSkKKyAgICAgICAgICAgIHNpZGUg
PSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKKworICAgICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEVu
ZChlbmRPZldvcmQob3JpZ2luYWxFbmQsIHNpZGUpKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCh3b3JkRW5kKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKG9y
aWdpbmFsRW5kKSAmJiAhaXNFbXB0eVRhYmxlQ2VsbChtX3N0YXJ0LmRlcHJlY2F0ZWROb2RlKCkp
KSB7CisgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHBhcmFncmFwaCBicmVhayAodGhlIHNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgCisgICAgICAgICAg
ICAvLyB0aGUgbmV4dCBvbmUpIHRvIG1hdGNoIFRleHRFZGl0LgorICAgICAgICAgICAgZW5kID0g
d29yZEVuZC5uZXh0KCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc0VuZE9mUGFy
YWdyYXBoKG9yaWdpbmFsRW5kKSAmJiAhaXNFbXB0eVRhYmxlQ2VsbChtX3N0YXJ0LmRlcHJlY2F0
ZWROb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBwYXJhZ3JhcGggYnJl
YWsgKHRoZSBzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9m
IAotICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IG9uZSkgdG8gbWF0Y2ggVGV4dEVkaXQuCi0g
ICAgICAgICAgICAgICAgZW5kID0gd29yZEVuZC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJs
ZShlbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0
ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBl
bmRzCi0gICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBo
IGFmdGVyIHRoZSB0YWJsZS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmxvY2sodGFibGUp
KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoQ2Fubm90Q3Jvc3NFZGl0
aW5nQm91bmRhcnkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBlbmQgPSB3b3JkRW5kOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoZW5kLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7
Ci0gICAgICAgICAgICAvLyBFbmQgbXVzdCBub3QgYmUgYmVmb3JlIHN0YXJ0LgotICAgICAgICAg
ICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVkTm9kZSgp
ICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgICAgICBQb3NpdGlvbiBzd2FwKG1fc3RhcnQp
OwotICAgICAgICAgICAgICAgIG1fc3RhcnQgPSBtX2VuZDsgICAgCi0gICAgICAgICAgICAgICAg
bV9lbmQgPSBzd2FwOyAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eTogewotICAgICAgICAgICAg
bV9zdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZp
bml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZE9mU2VudGVu
Y2UoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OiB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9u
KG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGVuZCA9IGVuZE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZm
aW5pdHkpKTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBlbmQgb2YgdGhpcyBsaW5lIGlzIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGgsIGluY2x1ZGUgdGhlIHNwYWNlIAotICAgICAgICAgICAgLy8g
YWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGluZSBpbiB0aGUgc2VsZWN0aW9uLgotICAgICAgICAgICAg
aWYgKGlzRW5kT2ZQYXJhZ3JhcGgoZW5kKSkgewotICAgICAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBuZXh0ID0gZW5kLm5leHQoKTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dC5pc05vdE51
bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gbmV4dDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgICAgIG1f
c3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkp
LmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShWaXNpYmxl
UG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6IHsKLSAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zdGFydCwgbV9hZmZpbml0eSk7Ci0gICAgICAgICAg
ICBpZiAoaXNTdGFydE9mTGluZShwb3MpICYmIGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVD
b250ZW50KHBvcykpCi0gICAgICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Ci0gICAg
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3MpLmRlZXBFcXVpdmFsZW50KCk7
Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBhcmFncmFwaEVuZCA9IGVuZE9m
UGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBJbmNsdWRlIHRoZSAicGFyYWdyYXBoIGJyZWFrIiAodGhlIHNw
YWNlIGZyb20gdGhlIGVuZCBvZiB0aGlzIHBhcmFncmFwaCB0byB0aGUgc3RhcnQKLSAgICAgICAg
ICAgIC8vIG9mIHRoZSBuZXh0IG9uZSkgaW4gdGhlIHNlbGVjdGlvbi4KLSAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBlbmQodmlzaWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOwotICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJU
YWJsZShlbmQpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogdGFibGUgPSBpc0ZpcnN0UG9zaXRp
b25BZnRlclRhYmxlKGVuZCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcGFyYWdyYXBoIGJy
ZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGEgYmxvY2sg
dGFibGUgZW5kcwotICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdy
YXBoIGFmdGVyIHRoZSB0YWJsZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRoZSB0
YWJsZS4KKyAgICAgICAgICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBh
ZnRlciB0aGUgdGFibGUuCiAgICAgICAgICAgICAgICAgaWYgKGlzQmxvY2sodGFibGUpKQogICAg
ICAgICAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSk7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gcGFyYXJncmFwaCBicmVhayBhZnRl
ciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhbiBpbmxpbmUgdGFibGUu
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxl
UGFyYWdyYXBoRW5kOworICAgICAgICAgICAgICAgICAgICBlbmQgPSB3b3JkRW5kOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgIAorICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZW5k
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQ7Cisg
ICAgICAgICAgICAgICAgZW5kID0gd29yZEVuZDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0
YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1lbnQoKSkuZGVlcEVxdWl2YWxlbnQo
KTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZEb2N1bWVudChtX2VuZC5kb2N1bWVudCgpKS5k
ZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGFyYWdy
YXBoQm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChWaXNp
YmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAg
ICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9h
ZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZTZW50
ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1f
ZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIG1f
ZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIC8vIEVuZCBtdXN0IG5vdCBiZSBi
ZWZvcmUgc3RhcnQuCisgICAgICAgIGlmIChtX3N0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gbV9l
bmQuZGVwcmVjYXRlZE5vZGUoKSAmJiBtX3N0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkg
PiBtX2VuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSB7CisgICAgICAgICAgICBQb3NpdGlv
biBzd2FwKG1fc3RhcnQpOworICAgICAgICAgICAgbV9zdGFydCA9IG1fZW5kOyAgICAKKyAgICAg
ICAgICAgIG1fZW5kID0gc3dhcDsgICAgCisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OiB7CisgICAg
ICAgIG1fc3RhcnQgPSBzdGFydE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mU2VudGVu
Y2UoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6IHsKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZMaW5lKFZpc2libGVQb3NpdGlv
bihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIGVuZCA9IGVuZE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5p
dHkpKTsKKyAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlzIGxpbmUgaXMgYXQgdGhlIGVuZCBv
ZiBhIHBhcmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCisgICAgICAgIC8vIGFmdGVyIHRoZSBl
bmQgb2YgdGhlIGxpbmUgaW4gdGhlIHNlbGVjdGlvbi4KKyAgICAgICAgaWYgKGlzRW5kT2ZQYXJh
Z3JhcGgoZW5kKSkgeworICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSBlbmQubmV4
dCgpOworICAgICAgICAgICAgaWYgKG5leHQuaXNOb3ROdWxsKCkpCisgICAgICAgICAgICAgICAg
ZW5kID0gbmV4dDsKKyAgICAgICAgfQorICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVu
dCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZMaW5lKFZpc2libGVQb3NpdGlv
bihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQg
PSBlbmRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2
YWxlbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5OiB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zdGFydCwg
bV9hZmZpbml0eSk7CisgICAgICAgIGlmIChpc1N0YXJ0T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVk
aXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zKSkKKyAgICAgICAgICAgIHBvcyA9IHBvcy5w
cmV2aW91cygpOworICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChwb3MpLmRlZXBF
cXVpdmFsZW50KCk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7Cisg
ICAgICAgIAorICAgICAgICAvLyBJbmNsdWRlIHRoZSAicGFyYWdyYXBoIGJyZWFrIiAodGhlIHNw
YWNlIGZyb20gdGhlIGVuZCBvZiB0aGlzIHBhcmFncmFwaCB0byB0aGUgc3RhcnQKKyAgICAgICAg
Ly8gb2YgdGhlIG5leHQgb25lKSBpbiB0aGUgc2VsZWN0aW9uLgorICAgICAgICBWaXNpYmxlUG9z
aXRpb24gZW5kKHZpc2libGVQYXJhZ3JhcGhFbmQubmV4dCgpKTsKKworICAgICAgICBpZiAoTm9k
ZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBs
YXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBlbmRzCisgICAgICAgICAgICAvLyBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHBhcmFncmFwaCBhZnRlciB0aGUgdGFibGUsIG5vdCBhdCB0aGUgcG9zaXRpb24g
anVzdCBhZnRlciB0aGUgdGFibGUuCisgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCisg
ICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
OworICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gcGFyYXJncmFwaCBicmVhayBhZnRlciB0aGUg
bGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhbiBpbmxpbmUgdGFibGUuCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCisgICAgICAgICAgICBlbmQg
PSB2aXNpYmxlUGFyYWdyYXBoRW5kOworCisgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFs
ZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
RG9jdW1lbnRCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZEb2N1bWVudChtX3N0
YXJ0LmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZE
b2N1bWVudChtX2VuZC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgICAg
IG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2Fm
ZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZlBhcmFncmFw
aChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9z
dGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5k
T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZh
bGVudCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgZG8gbm90IGhhdmUgYSBkYW5n
bGluZyBzdGFydCBvciBlbmQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uaAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgor
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzUsNyArMzYsNyBAQCBjbGFzcyBQb3NpdGlvbjsKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIAogY29u
c3QgRUFmZmluaXR5IFNFTF9ERUZBVUxUX0FGRklOSVRZID0gRE9XTlNUUkVBTTsKLWVudW0gU2Vs
ZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IERpcmVjdGlvbkZvcndhcmQsIERpcmVjdGlvbkJh
Y2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVmdCB9OworZW51bSBjbGFzcyBTZWxl
Y3Rpb25EaXJlY3Rpb24gOiB1aW50OF90IHsgRm9yd2FyZCwgQmFja3dhcmQsIFJpZ2h0LCBMZWZ0
IH07CiAKIGNsYXNzIFZpc2libGVTZWxlY3Rpb24gewogcHVibGljOgpAQCAtMTE3LDcgKzExOCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpdGhvdXRWYWxpZGF0aW9uKGNvbnN0IFBvc2l0aW9u
JiwgY29uc3QgUG9zaXRpb24mKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHZhbGlkYXRlKFRleHRH
cmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICB2b2lkIHZhbGlkYXRlKFRl
eHRHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwog
CiAgICAgLy8gU3VwcG9ydCBtZXRob2RzIGZvciB2YWxpZGF0ZSgpCiAgICAgdm9pZCBzZXRCYXNl
QW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVudHMoKTsKQEAgLTE2NCwzICsxNjUsMTcgQEAgV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcgogdm9pZCBzaG93VHJlZShjb25zdCBX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJik7CiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24qKTsKICNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25E
aXJlY3Rpb24sCisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwK
KyAgICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwKKyAgICAgICAg
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwKKyAgICAgICAgV2ViQ29yZTo6U2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0CisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkocmV2aXNpb24gMjYx
NTc3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTU4LDIwICsxNTU4LDIwIEBAIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5k
YXJ5T2ZMaW5lKGNvbnMKIAogc3RhdGljIGJvb2wgZGlyZWN0aW9uSXNEb3duc3RyZWFtKFNlbGVj
dGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rp
b25CYWNrd2FyZCkKKyAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBlbHNlIGlmIChkaXJlY3Rpb24gPT0g
RGlyZWN0aW9uRm9yd2FyZCkKKyAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogdGhpcyBj
b2RlIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG9yaWdpbmFsIGRpcmVjdGlvbiBvZiB0
aGUgZWxlbWVudC4KICAgICAvLyBJJ20gbm90IGZpeGluZyB0aGlzIG5vdyBiZWNhdXNlIEknbSBh
ZnJhaWQgdGhlcmUgaXMgc29tZSBjb2RlIGluIFVJS2l0IHJlbHlpbmcgb24KICAgICAvLyB0aGlz
IHdyb25nIGJlaGF2aW9yLgotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uUmlnaHQ7
CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogfQog
CiBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
bikKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAg
aWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIGJvdW5kYXJ5OwpA
QCAtMTU3OSw3ICsxNTc5LDcgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBW
aXNpYgogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJl
Y3Rpb24pOwogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAg
ICAgIC8vIHZpc2libGVfdW5pdHMgY2xhaW1zIGVycm9uZW91c2x5IHRoYXQgdGhlIHN0YXJ0IGFu
ZCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIGEgcGFyYWdyYXBoIGFyZSB0aGUgZW5kIGFuZCBzdGFy
dCBvZiBhIHdvcmQsIHJlc3BlY3RpdmVseS4KICAgICAgICAgaWYgKCh1c2VEb3duc3RyZWFtICYm
IGlzU3RhcnRPZlBhcmFncmFwaCh2cCkpIHx8ICghdXNlRG93bnN0cmVhbSAmJiBpc0VuZE9mUGFy
YWdyYXBoKHZwKSkpCkBAIC0xNTg5LDIyICsxNTg5LDIyIEBAIGJvb2wgYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoY29uc3QgVmlzaWIKICAgICAgICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8g
ZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSkgOiBzdGFydE9mV29yZCh2cCwgUmln
aHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJp
dHk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mU2VudGVuY2UocHJl
dmlvdXNTZW50ZW5jZVBvc2l0aW9uKHZwKSkgOiBzdGFydE9mU2VudGVuY2UobmV4dFNlbnRlbmNl
UG9zaXRpb24odnApKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICAv
LyBBZmZpbml0eSBoYXMgdG8gYmUgc2V0IHRvIGdldCByaWdodCBib3VuZGFyeSBvZiB0aGUgbGlu
ZS4KICAgICAgICAgYm91bmRhcnkgPSB2cDsKICAgICAgICAgYm91bmRhcnkuc2V0QWZmaW5pdHko
dXNlRG93bnN0cmVhbSA/IFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVBTSk7CiAg
ICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mTGluZShib3VuZGFyeSkgOiBz
dGFydE9mTGluZShib3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVs
YXJpdHk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVuZE9mUGFyYWdyYXBo
KHZwKSA6IHN0YXJ0T2ZQYXJhZ3JhcGgodnApOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZEb2N1
bWVudCh2cCkgOiBzdGFydE9mRG9jdW1lbnQodnApOwogICAgICAgICBicmVhazsKIApAQCAtMTYx
OCw3ICsxNjE4LDcgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYgog
CiBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5IHx8
IGdyYW51bGFyaXR5ID09IERvY3VtZW50R3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5
ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkg
PT0gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5KQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShk
aXJlY3Rpb24pOwpAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3Jh
bnVsYXJpdHkoY29uc3QgVgogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnk7CiAgICAg
CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIE5v
dGUgdGhhdCAiTGVmdCIgYW5kICJSaWdodCIgaW4gdGhpcyBjb250ZXh0IGFwcGFyZW50bHkgbWVh
biAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAiZG93bnN0cmVhbS9uZXh0Ii4KICAgICAgICAgcHJl
dkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZP
bkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9uQm91bmRhcnkpKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gZW5kT2ZXb3JkKHZwLCAodXNlRG93bnN0cmVhbSA/IFJpZ2h0V29yZElmT25Cb3VuZGFyeSA6
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSk7CkBAIC0xNjM4LDEyICsxNjM4LDEyIEBAIGJvb2wgd2l0
aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKIAogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlNlbnRlbmNl
KHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5jZSh2cCk7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkxp
bmUodnApOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkxpbmUodnApOwogCkBAIC0xNjU1
LDcgKzE2NTUsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWCiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIG5leHRCb3Vu
ZGFyeSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgYnJlYWs7CkBAIC0xNjg1LDcgKzE2
ODUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRDaGFyYWN0ZXJCb3VuCiBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGJvb2wg
dXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwotICAgIGJv
b2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHko
dnAsIFdvcmRHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICBib29sIHdpdGhpblVuaXRPZkdy
YW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVz
dWx0OwogICAgIAogICAgIGlmICh1c2VEb3duc3RyZWFtKSB7CkBAIC0xNzU5LDcgKzE3NTksNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJCiBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBib29sIHVz
ZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGlyZWN0aW9uKTsKLSAgICBib29s
IHdpdGhpblVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZw
LCBTZW50ZW5jZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gcmVzdWx0OwogCiAgICAgaWYgKHdpdGhpblVuaXRPZkdyYW51bGFyaXR5KQpAQCAtMTgwMSw5
ICsxODAxLDkgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0UGFyYWdyYXBoQm91bgogewog
ICAgIGF1dG8gdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24p
OwogICAgIGF1dG8gbGluZURpcmVjdGlvbiA9IHBvc2l0aW9uLmxpbmVEaXJlY3Rpb25Qb2ludEZv
ckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpOwotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpCisgICAgaWYg
KGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQogICAgICAgICByZXR1cm4gdXNlRG93bnN0cmVh
bSA/IHN0YXJ0T2ZQYXJhZ3JhcGgobmV4dFBhcmFncmFwaFBvc2l0aW9uKHBvc2l0aW9uLCBsaW5l
RGlyZWN0aW9uKSkgOiBlbmRPZlBhcmFncmFwaChwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHBv
c2l0aW9uLCBsaW5lRGlyZWN0aW9uKSk7Ci0gICAgQVNTRVJUKHdpdGhpblRleHRVbml0T2ZHcmFu
dWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOworICAg
IEFTU0VSVCh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOwogICAgIHJldHVybiB1c2VE
b3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgocG9zaXRpb24pIDogc3RhcnRPZlBhcmFncmFwaChw
b3NpdGlvbik7CiB9CiAKQEAgLTE4MTUsMTcgKzE4MTUsMTcgQEAgc3RhdGljIFZpc2libGVQb3Np
dGlvbiBuZXh0RG9jdW1lbnRCb3VuZAogVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBz
d2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIHJl
dHVybiBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uLCBDYW5D
cm9zc0VkaXRpbmdCb3VuZGFyeSk7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRX
b3JkQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJp
dHk6CiAgICAgICAgIHJldHVybiBuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBk
aXJlY3Rpb24pOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHJldHVybiBuZXh0TGluZUJvdW5kYXJ5
SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAg
ICAgIHJldHVybiBuZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9u
KTsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIHJldHVybiBuZXh0RG9jdW1lbnRCb3Vu
ZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTg0NCw1MiArMTg0NCw1MiBAQCBSZWZQdHI8UmFuZ2U+
IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhCiAgICAgYm9vbCB1c2VEb3duc3RyZWFtID0gZGly
ZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5
KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2
Qm91bmRhcnkgPSB2cDsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IHByZXZCb3VuZGFyeS5u
ZXh0KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0
eToKLSAgICAgICAgICAgIC8vIE5COiAiTGVmdCIgYW5kICJSaWdodCIgaW4gdGhpcyBjb250ZXh0
IGFwcGFyZW50bHkgbWVhbiAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAiZG93bnN0cmVhbS9uZXh0
Ii4KLSAgICAgICAgICAgIGlmICh1c2VEb3duc3RyZWFtKSB7Ci0gICAgICAgICAgICAgICAgcHJl
dkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwotICAgICAgICAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSB2cDsKKyAg
ICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJv
dW5kYXJ5ID0gc3RhcnRPZlNlbnRlbmNlKHZwKTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9
IGVuZE9mU2VudGVuY2UodnApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBM
aW5lR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2
cCk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkxpbmUodnApOwotCi0gICAgICAg
ICAgICBpZiAocHJldkJvdW5kYXJ5ID09IG5leHRCb3VuZGFyeSkgewotICAgICAgICAgICAgICAg
IG5leHRCb3VuZGFyeSA9IG5leHRMaW5lUG9zaXRpb24obmV4dEJvdW5kYXJ5LCAwKTsKLSAgICAg
ICAgICAgICAgICBuZXh0Qm91bmRhcnkuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOwotICAgICAgICAg
ICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91bmRhcnksIG5leHRCb3VuZGFyeSkpCi0gICAg
ICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IHZwLm5leHQoKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CisgICAgICAgIC8vIE5COiAiTGVmdCIgYW5kICJSaWdodCIgaW4gdGhpcyBjb250ZXh0
IGFwcGFyZW50bHkgbWVhbiAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAiZG93bnN0cmVhbS9uZXh0
Ii4KKyAgICAgICAgaWYgKHVzZURvd25zdHJlYW0pIHsKKyAgICAgICAgICAgIHByZXZCb3VuZGFy
eSA9IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICAgICAg
bmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAs
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9m
V29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OwogCi0gICAgICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2
Qm91bmRhcnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFy
eSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgRG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0
T2ZEb2N1bWVudCh2cCk7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50
KHZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICBwcmV2
Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOworICAgICAgICBuZXh0Qm91bmRhcnkgPSBl
bmRPZlNlbnRlbmNlKHZwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGlu
ZSh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7CisKKyAgICAgICAg
aWYgKHByZXZCb3VuZGFyeSA9PSBuZXh0Qm91bmRhcnkpIHsKKyAgICAgICAgICAgIG5leHRCb3Vu
ZGFyeSA9IG5leHRMaW5lUG9zaXRpb24obmV4dEJvdW5kYXJ5LCAwKTsKKyAgICAgICAgICAgIG5l
eHRCb3VuZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7CisgICAgICAgICAgICBpZiAoIWluU2Ft
ZUxpbmUocHJldkJvdW5kYXJ5LCBuZXh0Qm91bmRhcnkpKQorICAgICAgICAgICAgICAgIG5leHRC
b3VuZGFyeSA9IHZwLm5leHQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJv
dW5kYXJ5ID0gc3RhcnRPZlBhcmFncmFwaCh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVu
ZE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRP
ZkRvY3VtZW50KHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZEb2N1bWVudCh2cCk7
CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChwcmV2Qm91
bmRhcnkuaXNOdWxsKCkgfHwgbmV4dEJvdW5kYXJ5LmlzTnVsbCgpKQpAQCAtMTkyMSwxNCArMTky
MSwxNCBAQCB2b2lkIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihjb25zdCBWaXNpCiAgICAgVmlz
aWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBWaXNpYmxlUG9zaXRp
b24gZW5kUG9zaXRpb24gPSBwb3NpdGlvbjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBuZXh0UG9z
aXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgRGlyZWN0
aW9uRm9yd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgIFZpc2libGVQb3Np
dGlvbiBuZXh0UG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3Np
dGlvbiwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBDYW5ub3RDcm9zc0VkaXRpbmdCb3Vu
ZGFyeSk7CiAgICAgaWYgKG5leHRQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgZW5kUG9z
aXRpb24gPSBuZXh0UG9zaXRpb247CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBEaXJlY3Rp
b25CYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24o
cG9zaXRpb24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5KTsKICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc05vdE51bGwoKSkgewogICAg
ICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKLSAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHByZXZpb3VzUG9zaXRp
b24sIERpcmVjdGlvbkJhY2t3YXJkLCBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAg
ICAgIHByZXZpb3VzUG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihw
cmV2aW91c1Bvc2l0aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVs
bCgpKQogICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzUG9zaXRpb247CiAgICAg
fQpAQCAtMTk1MiwxMSArMTk1MiwxMSBAQCBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3Np
dGlvbihjb25zCiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkKTsKIAogICAgIGlmICghcmFuZ2UpIHsKICAgICAgICAgLy8gV2UgY291
bGQgYmUgYXQgdGhlIHN0YXJ0IG9mIGEgd29yZCwgdHJ5IGZvcndhcmQuCi0gICAgICAgIHJhbmdl
ID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJp
dHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgfQogCiAgICAgaWYgKHJhbmdlKQpA
QCAtMTk2NCwxMSArMTk2NCwxMSBAQCBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3NpdGlv
bihjb25zCiAKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb247
CiAgICAgZG8gewotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0
aW9uQmFja3dhcmQpOwotICAgIH0gd2hpbGUgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwoKSAm
JiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJp
dHksIERpcmVjdGlvbkJhY2t3YXJkKSk7CisgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0
aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwor
ICAgIH0gd2hpbGUgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwoKSAmJiAhYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpOwogCiAgICAgaWYgKGN1cnJlbnRQ
b3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0
aW9uRm9yd2FyZCk7CisgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgIGlmIChjdXJyZW50UG9z
aXRpb24uaXNOb3ROdWxsKCkpIHsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+ZG9jdW1lbnQoKSwgY3VycmVu
dFBvc2l0aW9uLCBwb3NpdGlvbik7CkBAIC0xOTgzLDIzICsxOTgzLDIzIEBAIFZpc2libGVQb3Np
dGlvbiBjbG9zZXN0V29yZEJvdW5kYXJ5Rm9yUG8KICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0
OwogCiAgICAgLy8gbW92ZSB0aGUgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgd29yZAotICAg
IGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBE
aXJlY3Rpb25Gb3J3YXJkKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCkpIHsKICAgICAgICAgLy8gRG9uJ3QgY3Jvc3MgbGluZSBib3VuZGFyaWVzLgog
ICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjsKLSAgICB9IGVsc2UgaWYgKHdpdGhpblRleHRVbml0
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJk
KSkgeworICAgIH0gZWxzZSBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkKSkgewogICAgICAgICAvLyBUaGUgcG9zaXRpb24gbGllcyB3aXRoaW4gYSB3b3JkLgot
ICAgICAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAg
ICAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgICAgIHJlc3VsdCA9IHdvcmRSYW5nZS0+c3Rh
cnRQb3NpdGlvbigpOwogICAgICAgICBpZiAoZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHBvc2l0
aW9uLCByZXN1bHQpID4gMSkKICAgICAgICAgICAgIHJlc3VsdCA9IHdvcmRSYW5nZS0+ZW5kUG9z
aXRpb24oKTsKLSAgICB9IGVsc2UgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSkgeworICAgIH0gZWxzZSBpZiAo
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSkgewogICAgICAgICAvLyBU
aGUgcG9zaXRpb24gaXMgYXQgdGhlIGVuZCBvZiBhIHdvcmQuCiAgICAgICAgIHJlc3VsdCA9IHBv
c2l0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBpcyBub3Qgd2l0
aGluIGEgd29yZC4KICAgICAgICAgLy8gR28gdG8gdGhlIG5leHQgYm91bmRhcnkuCi0gICAgICAg
IHJlc3VsdCA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBX
b3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICByZXN1bHQgPSBwb3Np
dGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAKICAgICAg
ICAgLy8gSWYgdGhlcmUgaXMgbm8gc3VjaCBib3VuZGFyeSB3ZSBnbyB0byB0aGUgZW5kIG9mIHRo
ZSBlbGVtZW50LgogICAgICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKQpAQCAtMjAxMywxNSArMjAx
MywxNSBAQCBSZWZQdHI8UmFuZ2U+IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJCiAgICAgUG9z
aXRpb24gc3RhcnQgPSBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVu
ZCA9IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZDsgKytpKSB7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gRGlyZWN0aW9uQmFja3dhcmQpCisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCkKICAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnQucHJldmlvdXMo
Q2hhcmFjdGVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoQ2hh
cmFjdGVyKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25CYWNr
d2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc3RhcnQsIFdvcmRHcmFudWxhcml0eSwg
RGlyZWN0aW9uQmFja3dhcmQpKQorICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc3RhcnQsIFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSkK
ICAgICAgICAgc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCkuZGVlcEVxdWl2YWxlbnQoKTsKLSAg
ICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgJiYgIWF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KGVuZCwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCAmJiAhYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoZW5kLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkKICAgICAgICAgZW5kID0gZW5kT2ZXb3JkKGVuZCkuZGVl
cEVxdWl2YWxlbnQoKTsKIAogICAgIHJldHVybiBtYWtlUmFuZ2Uoc3RhcnQsIGVuZCk7CkBAIC0y
MDQxLDEyICsyMDQxLDEyIEBAIFJlZlB0cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0
aW8KIAogc3RkOjpwYWlyPFZpc2libGVQb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5PiB3b3Jk
Qm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwb3NpdGlvbikKIHsKLSAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpCisgICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0
eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkKICAgICAgICAgcmV0dXJuIHsgcG9zaXRp
b24sIFdpdGhpbldvcmRCb3VuZGFyeTo6Tm8gfTsKIAotICAgIGlmICh3aXRoaW5UZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkp
IHsKKyAgICBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkg
ewogICAgICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgaWYg
KGF1dG8gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgICAgIGlmIChhdXRv
IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZCkpIHsKICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSB3b3JkUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKTsKICAgICAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRp
b24sIGFkanVzdGVkUG9zaXRpb24pID4gMSkKICAgICAgICAgICAgICAgICBhZGp1c3RlZFBvc2l0
aW9uID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOwpAQCAtMjA1NCwxMCArMjA1NCwxMCBAQCBz
dGQ6OnBhaXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91CiAgICAgICAgIHJldHVybiB7
IGFkanVzdGVkUG9zaXRpb24sIFdpdGhpbldvcmRCb3VuZGFyeTo6WWVzIH07CiAgICAgfQogCi0g
ICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkKSkKICAgICAgICAgcmV0dXJuIHsgcG9zaXRpb24sIFdpdGhpbldvcmRCb3Vu
ZGFyeTo6Tm8gfTsKIAotICAgIGF1dG8gbmV4dFdvcmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZOZXh0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlv
bkZvcndhcmQpOworICAgIGF1dG8gbmV4dFdvcmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICByZXR1cm4geyBuZXh0V29y
ZEJvdW5kYXJ5LmlzTm90TnVsbCgpID8gbmV4dFdvcmRCb3VuZGFyeSA6IGVuZE9mRWRpdGFibGVD
b250ZW50KHBvc2l0aW9uKSwgV2l0aGluV29yZEJvdW5kYXJ5OjpObyB9OwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lv
biAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBPcHRpb25hbDxEZXRlY3RlZEl0
ZW0+IERhdGFEZXRlY3Rpb246OmRlCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgY29udGV4dFJhbmdlID0gZW5jbG9zaW5n
VGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlv
bkZvcndhcmQpOworICAgICAgICBjb250ZXh0UmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0KIAogICAgIGlmICghY29udGV4dFJhbmdl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxv
b2t1cC5tbQkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EaWN0aW9uYXJ5TG9va3VwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNyArMzM4LDcgQEAg
c3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKgogICAgICAgICBoaXRJbmRl
eCA9IGNoYXJhY3RlckNvdW50KHsgKm1ha2VCb3VuZGFyeVBvaW50KHBhcmFncmFwaFN0YXJ0KSwg
Km1ha2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKSB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMgeyBwb3NpdGlv
biB9OwotICAgICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5n
R3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uQWNjb3VudGlu
Z0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5KTsKICAgICAgICAgcG9zaXRpb24gPSBzZWxlY3Rpb25BY2NvdW50aW5nRm9y
TGluZVJ1bGVzLnN0YXJ0KCk7CiAKICAgICAgICAgLy8gQXMgY29udGV4dCwgd2UgYXJlIGdvaW5n
IHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHBvaW50
LgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5
TG9va3VwTGVnYWN5Lm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUs
NyArMTI1LDcgQEAgc3RkOjp0dXBsZTxSZWZQdHI8UmFuZ2U+LCBOU0RpY3Rpb25hcnkgKgogICAg
ICAgICByZXR1cm4gcmFuZ2VGb3JTZWxlY3Rpb24oc2VsZWN0aW9uKTsKIAogICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcyB7IHBvc2l0aW9uIH07Ci0g
ICAgc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5
KFdvcmRHcmFudWxhcml0eSk7CisgICAgc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5l
eHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsK
ICAgICBwb3NpdGlvbiA9IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuc3RhcnQoKTsK
IAogICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgMjUwIGNoYXJhY3RlcnMg
b2YgdGV4dCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBwb2ludC4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ5LDE0ICs2NDksMTQg
QEAgc3RkOjp1bmlxdWVfcHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhcwogICAgICAgICBib29s
IGZvcmNpbmdQZW5kaW5nUG9saWN5ID0gZnJhbWUtPnNldHRpbmdzKCkuaXNGb3JjZVBlbmRpbmdX
ZWJHTFBvbGljeSgpOwogCiAgICAgICAgIGlmIChmb3JjaW5nUGVuZGluZ1BvbGljeSB8fCAocGFn
ZSAmJiAhdG9wRG9jdW1lbnQudXJsKCkuaXNMb2NhbEZpbGUoKSkpIHsKLSAgICAgICAgICAgIFdl
YkdMTG9hZFBvbGljeSBwb2xpY3kgPSBmb3JjaW5nUGVuZGluZ1BvbGljeSA/IFdlYkdMUGVuZGlu
Z0NyZWF0aW9uIDogcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkud2ViR0xQb2xp
Y3lGb3JVUkwodG9wRG9jdW1lbnQudXJsKCkpOworICAgICAgICAgICAgV2ViR0xMb2FkUG9saWN5
IHBvbGljeSA9IGZvcmNpbmdQZW5kaW5nUG9saWN5ID8gV2ViR0xMb2FkUG9saWN5OjpXZWJHTFBl
bmRpbmdDcmVhdGlvbiA6IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLndlYkdM
UG9saWN5Rm9yVVJMKHRvcERvY3VtZW50LnVybCgpKTsKIAotICAgICAgICAgICAgaWYgKHBvbGlj
eSA9PSBXZWJHTEJsb2NrQ3JlYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChwb2xpY3kgPT0gV2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0co
V2ViR0wsICJUaGUgcG9saWN5IGZvciB0aGlzIFVSTCAoJXMpIGlzIHRvIGJsb2NrIFdlYkdMLiIs
IHRvcERvY3VtZW50LnVybCgpLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHBvbGlj
eSA9PSBXZWJHTFBlbmRpbmdDcmVhdGlvbikgeworICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBX
ZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uKSB7CiAgICAgICAgICAgICAgICAg
TE9HKFdlYkdMLCAiV2ViR0wgcG9saWN5IGlzIHBlbmRpbmcuIE1heSBuZWVkIHRvIGJlIHJlc29s
dmVkIGxhdGVyLiIpOwogICAgICAgICAgICAgICAgIGlzUGVuZGluZ1BvbGljeVJlc29sdXRpb24g
PSB0cnVlOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAg
c3RydWN0IFN0cmluZ1dpdGhEaXJlY3Rpb247CiAKIHR5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lk
IChQb2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllcik+IEZyYW1lUG9saWN5RnVuY3Rp
b247CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyQ2xpZW50IHsKK2NsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICAvLyBBbiBpbmxpbmUgZnVuY3Rpb24gY2Fubm90IGJlIHRoZSBmaXJzdCBub24tYWJzdHJh
Y3QgdmlydHVhbCBmdW5jdGlvbiBkZWNsYXJlZApAQCAtMzQxLDggKzM0MSw4IEBAIHB1YmxpYzoK
ICAgICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wgY2FudmFzIGluc2lkZSB0
aGlzIGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8gbm90aWZpY2F0aW9uIHdp
dGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2RlIChzZWUg
RXh0ZW5zaW9uc0dMLmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlV2ViR0xDb250ZXh0KGlu
dCkgeyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29u
c3QgVVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVh
bCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2Fk
UG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdM
TG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBXZWJHTExvYWRQ
b2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJu
IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBjb21wbGV0ZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKSB7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjYxNTc3KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc0LDcgKzE3NCw3IEBAIGVudW0gU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2Ny
aXB0VVIKICAgICBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTAogfTsKIAotZW51
bSBXZWJHTExvYWRQb2xpY3kgeworZW51bSBjbGFzcyBXZWJHTExvYWRQb2xpY3kgOiB1aW50OF90
IHsKICAgICBXZWJHTEJsb2NrQ3JlYXRpb24sCiAgICAgV2ViR0xBbGxvd0NyZWF0aW9uLAogICAg
IFdlYkdMUGVuZGluZ0NyZWF0aW9uCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCBPcHRpb25hbDxTeXN0
ZW1QcmV2aWV3SW5mbz4gU3lzdGVtUHJldmllCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCplbGVt
ZW50KSwgV1RGTW92ZSgqcHJldmlld1JlY3QpLCBXVEZNb3ZlKCppc1ByZXZpZXcpIH0gfTsKIH0K
IAotZW51bSBjbGFzcyBMb2FkQ29tcGxldGlvblR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3Mg
TG9hZENvbXBsZXRpb25UeXBlIDogYm9vbCB7CiAgICAgRmluaXNoLAogICAgIENhbmNlbAogfTsK
IAotZW51bSBjbGFzcyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IHVpbnQ4X3QgeworZW51bSBj
bGFzcyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IGJvb2wgewogICAgIFllcywKICAgICBObywK
IH07CkBAIC0yNzEsMTEgKzI3MSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlNoCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQsCi0gICAg
ICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMsCi0gICAgICAgIFdlYkNv
cmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpObworICAgICAgICBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3ksCisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0Ny
ZWF0aW9uLAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbiwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRpbmdDcmVh
dGlvbgogICAgID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICsz
NzgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAg
ICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1
Z2dlc3Rpb25zV2l0aG91dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNl
bGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0
aW9uIHdvcmRTZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgd29y
ZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAg
ICAgICAgICAgICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxl
bmd0aCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHJldmlzaW9u
IDI2MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ2LDM1ICsyNDYsMzUgQEAgdm9pZCBET01TZWxlY3Rpb246Om1vZGlmeShj
b25zdCBTdHJpbmcmIAogCiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2Fy
ZCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICBkaXJl
Y3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAg
ICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9
IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJl
Y3Rpb24gPSBEaXJlY3Rpb25MZWZ0OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkxlZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
ZGlyZWN0aW9uU3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9u
UmlnaHQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHk7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3Ry
aW5nLCAiY2hhcmFjdGVyIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShn
cmFudWxhcml0eVN0cmluZywgIndvcmQiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXb3JkR3Jh
bnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3Jh
bnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFNlbnRl
bmNlR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZSIpKQotICAgICAgICBncmFudWxhcml0eSA9
IExpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaCIpKQotICAgICAgICBncmFudWxhcml0
eSA9IFBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJsaW5lYm91bmRhcnkiKSkKLSAg
ICAgICAgZ3JhbnVsYXJpdHkgPSBMaW5lQm91bmRhcnk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5
IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gU2VudGVuY2VCb3VuZGFyeTsKKyAgICAgICAgZ3Jh
bnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeTsKKyAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgIlRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeSIpKQorICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaGJvdW5kYXJ5Iikp
Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gUGFyYWdyYXBoQm91bmRhcnk7CisgICAgICAgIGdyYW51
bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeTsKICAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgImRvY3Vt
ZW50Ym91bmRhcnkiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBEb2N1bWVudEJvdW5kYXJ5Owor
ICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsNyArNjE0LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAgICAgICAgICAgLy8gTlNU
ZXh0VmlldyBiZWhhdmlvciBpcyB0byBhbHdheXMgc21hcnQgZGVsZXRlIG9uIG1vdmluZyBhIHNl
bGVjdGlvbiwKICAgICAgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0IGluc2VydCBpZiB0aGUg
c2VsZWN0aW9uIGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHkuCiAgICAgICAgICAgICBi
b29sIHNtYXJ0RGVsZXRlID0gZWRpdG9yLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwotICAg
ICAgICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRlICYmIGlubmVyRnJhbWUtPnNl
bGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNh
blNtYXJ0UmVwbGFjZSgpOworICAgICAgICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVs
ZXRlICYmIGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkgJiYgZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCk7CiAg
ICAgICAgICAgICBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50LnJlbGVhc2VO
b25OdWxsKCksIGRyYWdDYXJldC5iYXNlKCksIHNtYXJ0SW5zZXJ0LCBzbWFydERlbGV0ZSktPmFw
cGx5KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9E
cmFnQ2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwgZHJhZ0NhcmV0LCBwb2ludCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQzLDcg
KzU0Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3UKICAgICBp
ZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0aWF0aW9uU3Rh
dGUgPSBFeHRlbmRlZFNlbGVjdGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZ3JhbnVsYXJpdHkg
PSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICBtX3NlbGVjdGlvbkluaXRpYXRp
b25TdGF0ZSA9IFBsYWNlZENhcmV0OwogICAgIH0KIApAQCAtNTYxLDEzICs1NjEsMTMgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbQogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0
LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7
CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7Ci0gICAg
ICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3Bh
Y2UgJiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5h
cHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JN
b3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNw
YXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNl
bGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogCkBAIC02MDIsMTQgKzYwMiwxNCBAQCB2
b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdENvbnRleHR1CiAgICAgICAgICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQo
cmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICAgICAgaWYgKHBvcy5pc05v
dE51bGwoKSkgewogICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rp
b24ocG9zKTsKLSAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxh
cml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGFwcGVuZFRyYWls
aW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgJiYgbmV3U2Vs
ZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBlbmRUcmFpbGlu
Z1doaXRlc3BhY2UoKTsKICAgICAgICAgCi0gICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9S
ZXNwZWN0U2VsZWN0T25Nb3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFdvcmRH
cmFudWxhcml0eSk7CisgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNo
aW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0
T25Nb3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5KTsKICAgICB9CiB9CiAgICAgCkBAIC02MzMsNyArNjMzLDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICBpZiAocG9zLmlz
Tm90TnVsbCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVz
Y2VuZGFudE9mKCp1cmxFbGVtZW50KSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2li
bGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZSh1cmxFbGVtZW50KTsKIAot
ICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0
KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0
YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRh
dGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUs
IGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBu
ZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQog
fQogCkBAIC02NjgsMTAgKzY2OCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQ
cmVzc0V2ZW50CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigp
LT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlm
IChwb3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihwb3MpOwotICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShQ
YXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dy
YW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogICAgIH0K
IAotICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVj
dFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VE
b3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7Cisg
ICAgcmV0dXJuIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3Rh
cnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25Nb3VzZURvd24o
KnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3Jh
bnVsYXJpdHkpOwogfQogCiBzdGF0aWMgdWludDY0X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAgLTcxMSw3ICs3MTEsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgUG9zaXRpb24gcG9zID0g
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9u
IG5ld1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgVGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKIAogICAgIGlmICghbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkQWxs
b3dTaW5nbGVDbGlja1RvQ2hhbmdlU2VsZWN0aW9uKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24p
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczOSw3ICs3MzksNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bmV3U2VsZWN0aW9uLnNldEV4dGVudChwb3MpOwogCi0gICAgICAgIGlmIChtX2ZyYW1lLnNlbGVj
dGlvbigpLmdyYW51bGFyaXR5KCkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICAgICAg
aWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6
OkNoYXJhY3RlckdyYW51bGFyaXR5KSB7CiAgICAgICAgICAgICBncmFudWxhcml0eSA9IG1fZnJh
bWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKTsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5l
eHBhbmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSk7
CiAgICAgICAgIH0KQEAgLTEwNTcsNyArMTA1Nyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVTZWxlY3Rpb25Gb3JNb3UKICAgICBuZXdTZWxlY3Rpb24uc2V0RXh0ZW50KHRhcmdldFBvc2l0
aW9uKTsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHko
KSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5n
cmFudWxhcml0eSgpICE9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAg
ICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0
aW9uKCkuZ3JhbnVsYXJpdHkoKSk7CiAKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbkJ5TW91c2VJZkRpZmZlcmVudChuZXdTZWxlY3Rpb24sIG1fZnJhbWUuc2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSwKQEAgLTM1MTIsMTUgKzM1MTIsMTUgQEAgc3RhdGljIHZvaWQgc2V0SW5p
dGlhbEtleWJvYXJkU2VsZWN0aW9uKAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b247CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dh
cmQ6Ci0gICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAg
aWYgKGZvY3VzZWRFbGVtZW50KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJs
ZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShmb2N1c2VkRWxlbWVudCkpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBlbmRPZkRvY3VtZW50KGRvY3VtZW50
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgIGNhc2Ug
RGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6Cisg
ICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoZm9jdXNlZEVs
ZW1lbnQpCiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9z
aXRpb25BZnRlck5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAgICAgZWxzZQpAQCAtMzU0MSw4
ICszNTQxLDggQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAg
IGJvb2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgpOwogCiAgICAgRnJhbWVTZWxl
Y3Rpb246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgi
U2hpZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBE
aXJlY3Rpb25Gb3J3YXJkOwotICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJh
Y3RlckdyYW51bGFyaXR5OworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CisgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIHN3aXRjaCAo
Zm9jdXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigpKSkgewogICAgIGNhc2Ug
Rm9jdXNEaXJlY3Rpb25Ob25lOgpAQCAtMzU1MiwyMCArMzU1MiwyMCBAQCBzdGF0aWMgdm9pZCBo
YW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgotICAgICAgICBk
aXJlY3Rpb24gPSBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBpc0Nv
bW1hbmRlZCA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGRp
cmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CisgICAgICAgIGdyYW51bGFy
aXR5ID0gaXNDb21tYW5kZWQgPyBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBU
ZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGb2N1c0RpcmVjdGlvbkRvd246Ci0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkZvcndh
cmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBEb2N1bWVudEJvdW5kYXJ5
IDogTGluZUdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rp
b246OkZvcndhcmQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6Ci0gICAg
ICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkxlZnQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gKGlz
Q29tbWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0
eSA6IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25E
aXJlY3Rpb246OkxlZnQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6Ci0gICAg
ICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvblJpZ2h0OwotICAgICAgICBncmFudWxhcml0eSA9IChp
c0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJp
dHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpSaWdodDsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSAoaXNDb21tYW5kZWQpID8g
VGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSA6IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nzks
NyArNTc5LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc092ZXJUZXh0SW5zaWRlRm9ybQogICAg
IGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVm
UHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgUmVmUHRyPFJh
bmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24s
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZv
cndhcmQpOwogICAgIGlmICghd29yZFJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA1LTE0ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0gc2VyaWFs
aXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oOgorICAg
ICAgICAqIFNoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkdMTG9hZFBvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3kp
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Ondl
YkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKHRvVUlX
S1NlbGVjdGlvbkZsYWdzKToKKyAgICAgICAgKHRvU2VsZWN0aW9uRmxhZ3MpOgorICAgICAgICAo
dG9XS1RleHRHcmFudWxhcml0eSk6CisgICAgICAgICh0b1dLU2VsZWN0aW9uRGlyZWN0aW9uKToK
KyAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZSk6CisgICAgICAgIChzZWxlY3Rp
b25DaGFuZ2VkV2l0aFRvdWNoKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxl
Y3Rpb25XaXRoR2VzdHVyZUF0OndpdGhHZXN0dXJlOndpdGhTdGF0ZTp3aXRoRmxhZ3M6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNl
bGVjdGlvblRvdWNoOmJhc2VJc1N0YXJ0OndpdGhGbGFnczpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBjaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206dG86d2l0aEdlc3R1cmU6d2l0
aFN0YXRlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdFdvcmRGb3JSZXBsYWNl
bWVudF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleHRlbmRT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFu
Z2UgcmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOmluRGlyZWN0aW9u
Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9s
aWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
ZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OnJhbmdlQXRXb3JkQm91bmRhcnlG
b3JQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNo
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhE
aXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5
QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25J
bkRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdERpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBseUF1
dG9jb3JyZWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphdXRvY29y
cmVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0b3JMaW5rUG9zaXRp
b25JbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Om1vdmVCeUdyYW51bGFyaXR5UmVzcGVj
dGluZ1dvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REb2N1
bWVudEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJM
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToK
KwogMjAyMC0wNS0xMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtJUENdIFVzZSB0ZW1wbGF0ZXMgdG8gcmVkdWNlIGR1cGxpY2F0ZSBjb2RlIGluIElQQzo6
RGVjb2RlciBhbmQgSVBDOjpFbmNvZGVyIGNsYXNzZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2luZyBjb3B5KQpAQCAtNjE0LDYgKzYx
NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6UmVj
ZW50U2VhcmNoJzogWyc8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSc6IFsnPFdlYkNvcmUvQXVkaW9TZXNzaW9uLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyJzogWyc8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvbic6IFsnPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50
RGF0YSc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+JywgJzxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmg+JywgJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJEYXRhLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyJzogWyc8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nLCAnPFdlYkNvcmUvU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaD4nXSwKQEAgLTYzOCwxNyArNjM5LDIyIEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUnOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyc6IFsnPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZUJh
c2UuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyc6IFsnPFdlYkNv
cmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6V2lsbENvbnRpbnVlTG9hZGluZyc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVkaXRvclN0YXRlLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVh
SW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBb
JyJTZXNzaW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
ZmllcicgOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6Q29u
dGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLAorICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CisgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVy
VHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lv
blN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24n
OiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJl
c1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlNlbGVjdGlvblRvdWNoJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCc6
IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJvYXJkRXZlbnQnOiBb
JyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2ZW50JzogWyciV2Vi
RXZlbnQuaCInXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRp
bmdDb250ZXh0LmgJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Rv
Y3VtZW50RWRpdGluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBz
dHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgewogCiAgICAgT3B0aW9uU2V0PE9w
dGlvbnM+IG9wdGlvbnM7CiAKLSAgICBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgc3Vycm91bmRp
bmdHcmFudWxhcml0eSB7IFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5IH07CisgICAgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5IHN1cnJvdW5kaW5nR3JhbnVsYXJpdHkgeyBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IH07CiAgICAgaW50NjRfdCBncmFu
dWxhcml0eUNvdW50IHsgMCB9OwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCShyZXZpc2lvbiAyNjE1Nzcp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEyICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgR2VzdHVyZVR5cGVzX2gKLSNkZWZpbmUgR2VzdHVyZVR5cGVzX2gK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWVudW0gY2xhc3MgR2VzdHVyZVR5cGUgeworZW51bSBjbGFzcyBHZXN0dXJl
VHlwZSA6IHVpbnQ4X3QgewogICAgIExvdXBlLAogICAgIE9uZUZpbmdlclRhcCwKICAgICBUYXBB
bmRBSGFsZiwKQEAgLTQ1LDcgKzQ2LDcgQEAgZW51bSBjbGFzcyBHZXN0dXJlVHlwZSB7CiAgICAg
UGhyYXNlQm91bmRhcnkKIH07CiAKLWVudW0gY2xhc3MgU2VsZWN0aW9uVG91Y2ggeworZW51bSBj
bGFzcyBTZWxlY3Rpb25Ub3VjaCA6IHVpbnQ4X3QgewogICAgIFN0YXJ0ZWQsCiAgICAgTW92ZWQs
CiAgICAgRW5kZWQsCkBAIC01NCwyMyArNTUsMjEgQEAgZW51bSBjbGFzcyBTZWxlY3Rpb25Ub3Vj
aCB7CiAgICAgRW5kZWROb3RNb3ZpbmcKIH07CiAKLWVudW0gY2xhc3MgR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgOiB1aW50OF90IHsK
ICAgICBQb3NzaWJsZSwKICAgICBCZWdhbiwKICAgICBDaGFuZ2VkLAogICAgIEVuZGVkLAogICAg
IENhbmNlbGxlZCwKLSAgICBGYWlsZWQsCi0gICAgUmVjb2duaXplZCA9IEVuZGVkCisgICAgRmFp
bGVkCiB9OwogCi1lbnVtIGNsYXNzIFNoZWV0QWN0aW9uIHsKK2VudW0gY2xhc3MgU2hlZXRBY3Rp
b24gOiBib29sIHsKICAgICBDb3B5LAogICAgIFNhdmVJbWFnZQogfTsKIAotZW51bSBTZWxlY3Rp
b25GbGFncyB7Ci0gICAgTm9uZSA9IDAsCitlbnVtIFNlbGVjdGlvbkZsYWdzIDogdWludDhfdCB7
CiAgICAgV29yZElzTmVhclRhcCA9IDEgPDwgMCwKICAgICBQaHJhc2VCb3VuZGFyeUNoYW5nZWQg
PSAxIDw8IDEsCiB9OwpAQCAtODIsNCArODEsNTEgQEAgZW51bSBjbGFzcyBSZXNwZWN0U2VsZWN0
aW9uQW5jaG9yIDogYm9vbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEdl
c3R1cmVUeXBlc19oCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJLaXQ6Okdlc3R1cmVUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJl
VHlwZTo6TG91cGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRhcCwK
KyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwQW5kQUhhbGYsCisgICAgICAgIFdlYktp
dDo6R2VzdHVyZVR5cGU6OkRvdWJsZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6
VGFwQW5kSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6RG91YmxlVGFwSW5VbmVk
aXRhYmxlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXBJblVuZWRp
dGFibGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRhcFNlbGVjdHNB
bGwsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdlckRvdWJsZVRhcCwKKyAg
ICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxlVGFwLAorICAgICAgICBX
ZWJLaXQ6Okdlc3R1cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVUYXAsCisgICAgICAgIFdlYktpdDo6
R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmUsCisgICAgICAgIFdlYktp
dDo6R2VzdHVyZVR5cGU6OlRhcE9uTGlua1dpdGhHZXN0dXJlLAorICAgICAgICBXZWJLaXQ6Okdl
c3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeQorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYktpdDo6U2VsZWN0aW9uVG91Y2g+IHsKKyAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoLAorICAgICAgICBX
ZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpTdGFydGVkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlv
blRvdWNoOjpNb3ZlZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWQsCisg
ICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nRm9yd2FyZCwKKyAgICAg
ICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdCYWNrd2FyZCwKKyAgICAgICAg
V2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWROb3RNb3ZpbmcKKyAgICA+OworfTsKKworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6R2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0
YXRlOjpQb3NzaWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpC
ZWdhbiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDaGFuZ2VkLAor
ICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkVuZGVkLAorICAgICAgICBX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNhbmNlbGxlZCwKKyAgICAgICAgV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQKKyAgICA+OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NDUsMTYgKzU3NDUsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBt
X25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11dGFibGUgewotICAgICAg
ICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgfSk7CisgICAgbV9u
YXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgV1RGTW92ZShyZXBs
eSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVS
TCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29s
dmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldIChX
ZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgcmVwbHkoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHBvbGljeSkpOwotICAgIH0pOworICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwxNCArMjE5LDEzIEBAIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnVi
YmxlOwogCi1lbnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3Q7Ci0KIGVudW0gY2xhc3Mg
QXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9u
c2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0IDogYm9vbDsKIGVu
dW0gY2xhc3MgSGFzSW5zZWN1cmVDb250ZW50IDogYm9vbDsKIGVudW0gY2xhc3MgTm90aWZpY2F0
aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDog
dWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Q7
CkBAIC00MDAsOCArMzk5LDggQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9udElu
Zm8mLAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90PiBHZXN0dXJlQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdD4gVG91Y2hlc0NhbGxiYWNrOwor
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJl
VHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4g
R2VzdHVyZUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4gVG91
Y2hlc0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+Jj4gU2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTc1Miw5ICs3NTEsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOwogICAgIHZvaWQgd2lsbENvbW1pdExheWVy
VHJlZShUcmFuc2FjdGlvbklEKTsKIAotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25p
emVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50LCBTZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9p
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2Vs
ZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RX
aXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxl
Y3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTIwOTIsOCArMjA5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b25DYWxsYmFjayhjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tJRCk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdG91
Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91
Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2VsZWN0aW9u
Q29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIGludGVycHJldEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiwgYm9vbCBpc0NoYXJFdmVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQo
dWludDMyX3QgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3Ry
aW5nIHBsdWdpblVSTFN0cmluZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5n
LCBTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJH
TFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgU3luY2hyb25v
dXMKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKHVpbnQzMl90IGxv
YWRQb2xpY3kpIFN5bmNocm9ub3VzCisgICAgV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4g
KGVudW06dWludDhfdCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hy
b25vdXMKKyAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hyb25vdXMKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgRGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKHN0
cnVjdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICBEaWRSZWNl
aXZlRXZlbnQodWludDMyX3QgdHlwZSwgYm9vbCBoYW5kbGVkKQpAQCAtMTgwLDggKzE4MCw4IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKICAgICBGb250QXR0cmlidXRlc0Nh
bGxiYWNrKHN0cnVjdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEdl
c3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWlu
dDhfdCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25T
ZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51
bTp1aW50OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5n
IGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0
YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAg
IERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTYs
MjUgKzQ5NiwyNSBAQCBpbmxpbmUgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHRvV2ViR0xMCiB7
CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKICAgICBjYXNlIGtXS1dlYkdMTG9hZFBv
bGljeUxvYWROb3JtYWxseToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVh
dGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogICAgIGNhc2Uga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2Uga1dLV2Vi
R0xMb2FkUG9saWN5UGVuZGluZzoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMUGVuZGlu
Z0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TFBlbmRpbmdDcmVhdGlvbjsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIGlubGluZSBX
S1dlYkdMTG9hZFBvbGljeSB0b0FQSShXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2Fk
UG9saWN5KQogewogICAgIHN3aXRjaCAod2ViR0xMb2FkUG9saWN5KSB7Ci0gICAgY2FzZSBXZWJD
b3JlOjpXZWJHTEFsbG93Q3JlYXRpb246CisgICAgY2FzZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3k6OldlYkdMQWxsb3dDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGlj
eUxvYWROb3JtYWxseTsKLSAgICBjYXNlIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjoKKyAg
ICBjYXNlIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOgogICAg
ICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDsKLSAgICBjYXNlIFdlYkNvcmU6
OldlYkdMUGVuZGluZ0NyZWF0aW9uOgorICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTFBlbmRpbmdDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGlj
eVBlbmRpbmc7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwOSwyMSArNDA5LDIxIEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJD
b3IKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5
QWxsb3dDcmVhdGlvbjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlv
bjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOwogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbjoKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2UgX1dL
V2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
V2ViR0xQZW5kaW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
IAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGlj
eShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViR0xBbGxvd0NyZWF0aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xMb2Fk
UG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00NDAsNyArNDQwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
Ogogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExv
YWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29u
c3QKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI2MTU3NykKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM1MTIsNyArMzUxMiw3IEBAIC0gKHZvaWQpc2VsZWN0Rm9yV2Vi
VmlldzooaWQpc2VuZGVyCiB7CiAgICAgW190ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgc2VsZWN0
V29yZF07CiAgICAgLy8gV2UgY2Fubm90IHVzZSBzZWxlY3RXb3JkIGNvbW1hbmQsIGJlY2F1c2Ug
d2Ugd2FudCB0byBiZSBhYmxlIHRvIHNlbGVjdCB0aGUgd29yZCBldmVuIHdoZW4gaXQgaXMgdGhl
IGxhc3QgaW4gdGhlIHBhcmFncmFwaC4KLSAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OldvcmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKIC0gKHZvaWQpc2VsZWN0
QWxsRm9yV2ViVmlldzooaWQpc2VuZGVyCkBAIC0zODIwLDMyICszODIwLDQyIEBAIHN0YXRpYyBp
bmxpbmUgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHQKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxp
bmUgVUlXS1NlbGVjdGlvbkZsYWdzIHRvVUlXS1NlbGVjdGlvbkZsYWdzKFdlYktpdDo6U2VsZWN0
aW9uRmxhZ3MgZmxhZ3MpCitzdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rpb25GbGFncyB0b1VJV0tT
ZWxlY3Rpb25GbGFncyhPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MpCiB7
CiAgICAgTlNJbnRlZ2VyIHVpRmxhZ3MgPSBVSVdLTm9uZTsKLSAgICBpZiAoZmxhZ3MgJiBXZWJL
aXQ6OldvcmRJc05lYXJUYXApCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYktpdDo6V29yZElz
TmVhclRhcCkpCiAgICAgICAgIHVpRmxhZ3MgfD0gVUlXS1dvcmRJc05lYXJUYXA7Ci0gICAgaWYg
KGZsYWdzICYgV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpCisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKFdlYktpdDo6UGhyYXNlQm91bmRhcnlDaGFuZ2VkKSkKICAgICAgICAgdWlGbGFncyB8
PSBVSVdLUGhyYXNlQm91bmRhcnlDaGFuZ2VkOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJ
V0tTZWxlY3Rpb25GbGFncz4odWlGbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IHRvU2VsZWN0aW9uRmxhZ3MoVUlXS1NlbGVjdGlvbkZs
YWdzIHVpRmxhZ3MpCit7CisgICAgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZs
YWdzOworICAgIGlmICh1aUZsYWdzICYgVUlXS1dvcmRJc05lYXJUYXApCisgICAgICAgIGZsYWdz
LmFkZChXZWJLaXQ6OldvcmRJc05lYXJUYXApOworICAgIGlmICh1aUZsYWdzICYgVUlXS1BocmFz
ZUJvdW5kYXJ5Q2hhbmdlZCkKKyAgICAgICAgZmxhZ3MuYWRkKFdlYktpdDo6UGhyYXNlQm91bmRh
cnlDaGFuZ2VkKTsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKIHN0YXRpYyBpbmxpbmUgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5IHRvV0tUZXh0R3JhbnVsYXJpdHkoVUlUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAgIGNhc2UgVUlU
ZXh0R3JhbnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpDaGFyYWN0
ZXJHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVdvcmQ6Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4
dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTZW50ZW5jZUdy
YW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlQYXJhZ3JhcGg6Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAg
Y2FzZSBVSVRleHRHcmFudWxhcml0eUxpbmU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpMaW5l
R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5RG9jdW1lbnQ6Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OwogICAgIH0KIH0K
IApAQCAtMzg1NCwyOSArMzg2NCwyOSBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIFVJVGV4dExheW91
dERpcmVjdGlvbkRvd246CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25SaWdodDoKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvblJpZ2h0OworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAgICBjYXNlIFVJVGV4dExheW91dERp
cmVjdGlvblVwOgogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uTGVmdDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvbkxlZnQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVUlUZXh0
RGlyZWN0aW9uIGlzIG5vdCBhbiBlbnVtLCBidXQgd2Ugb25seSB3YW50IHRvIGFjY2VwdCB2YWx1
ZXMgZnJvbSBVSVRleHRMYXlvdXREaXJlY3Rpb24uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKFdLQ29udGVudFZpZXcgKnZpZXcs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikKK3N0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShX
S0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktp
dDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBb
KFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFu
dF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1
cmU6dG9VSVdLR2VzdHVyZVR5cGUoKFdlYktpdDo6R2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUpIHdp
dGhTdGF0ZTp0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkpIHdpdGhGbGFnczoodG9VSVdLU2Vs
ZWN0aW9uRmxhZ3MoKFdlYktpdDo6U2VsZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CisgICAgWyhVSVdL
VGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNl
bGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRv
VUlXS0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGUoZ2VzdHVyZVN0YXRlKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxh
Z3MpXTsKIH0KIAotc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRl
bnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRv
dWNoLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQor
c3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2gg
dG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBbKFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0
aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0
b1VJV0tTZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZs
YWdzOnN0YXRpY19jYXN0PFVJV0tTZWxlY3Rpb25GbGFncz4oZmxhZ3MpXTsKKyAgICBbKFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3Vj
aDp0b1VJV0tTZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0
aEZsYWdzOnRvVUlXS1NlbGVjdGlvbkZsYWdzKGZsYWdzKV07CiB9CiAKIC0gKEJPT0wpX2hhc0Zv
Y3VzZWRFbGVtZW50CkBAIC0zODkyLDggKzM5MDIsOCBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlv
bldpdGhHZXN0dXJlQXQ6KENHCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6
KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3
aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZSB3aXRoRmxhZ3M6KFVJV0tT
ZWxlY3Rpb25GbGFncylmbGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZ
RVM7Ci0gICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50
KSwgV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0
b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1
cmVSZWNvZ25pemVyU3RhdGUoc3RhdGUpKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtzZWxm
LCBzdGF0ZSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgaW5uZXJGbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNo
YW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwg
ZmxhZ3MgfCBpbm5lckZsYWdzLCBlcnJvcik7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJl
KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRv
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RhdGUsIGZsYWdzXShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUs
IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYs
IHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB0b1NlbGVjdGlvbkZsYWdzKGZsYWdz
KSB8IGlubmVyRmxhZ3MsIGVycm9yKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZUVuZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNh
bmNlbGxlZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAg
ICB9KTsKQEAgLTM5MDIsOSArMzkxMiw5IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdl
c3R1cmVBdDooQ0cKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlz
U3RhcnQ6KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxh
Z3MKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT51
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSksIGJhc2VJc1N0YXJ0LCBb
c2VsZiwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91
Y2gsIHVpbnQzMl90IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50LCB0b3Vj
aCwgZmxhZ3MgfCBpbm5lckZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlmICh0b3VjaCAhPSBVSVdL
U2VsZWN0aW9uVG91Y2hTdGFydGVkICYmIHRvdWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaE1vdmVk
KQorICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dChwb2ludCksIHRvU2VsZWN0aW9uVG91Y2godG91Y2gpLCBiYXNlSXNTdGFydCwgW3NlbGYsIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGZsYWdzXShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6
OlNlbGVjdGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChzZWxmLCBwb2ludCwg
dG91Y2gsIHRvU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOworICAg
ICAgICBpZiAodG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25Ub3Vj
aFN0YXJ0ZWQgJiYgdG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25U
b3VjaE1vdmVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwog
ICAgIH0pOwogfQpAQCAtMzkxMiw5ICszOTIyLDkgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25X
aXRoVG91Y2hBdDooQ0dQbwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206
KENHUG9pbnQpZnJvbSB0bzooQ0dQb2ludCl0byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBl
KWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVT
dGF0ZQogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgX3BhZ2Ut
PnNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50KGZyb20pLCBXZWJDb3JlOjpJ
bnRQb2ludCh0byksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBlKGdlc3R1cmVU
eXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2Vz
dHVyZVN0YXRlKSksIFtzZWxmXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0V2l0
aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRv
KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShn
ZXN0dXJlU3RhdGUpLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBl
LCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8
V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9p
bnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlm
IChnZXN0dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQgfHwgZ2VzdHVy
ZVN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKKyAgICAgICAgaWYg
KHRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkgPT0gVUlHZXN0dXJlUmVj
b2duaXplclN0YXRlRW5kZWQgfHwgdG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0
YXRlKSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCiAgICAgICAgICAgICBf
dXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87CiAgICAgfSk7CiB9CkBAIC02NTEzLDcgKzY1
MjMsNyBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAKIC0gKHZvaWQpc2VsZWN0V29yZEZv
clJlcGxhY2VtZW50CiB7Ci0gICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpXb3Jk
R3JhbnVsYXJpdHkpOworICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogfQogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RS
SVZFTl9URVhUX0NIRUNLSU5HKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
NyArMTQ0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
R2VzdHVyZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0x
NTUsNyArMTU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdAog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1
cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRv
dWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFncywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNr
cy50YWtlPFRvdWNoZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDI4LDIxICs0MjgsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVyVHJlZUNvbW1p
dENvbXBsZQogICAgIHBhZ2VDbGllbnQoKS5sYXllclRyZWVDb21taXRDb21wbGV0ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQ
b2ludCgpLCBHZXN0dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3Np
YmxlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlIl9zKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQz
Ml90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsIGdl
c3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgU2VsZWN0aW9u
VG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6
OkludFBvaW50KCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIFNlbGVjdGlvblRvdWNoOjpT
dGFydGVkLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dFRleHRXaXRoR3JhbnVsYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2lu
dCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0
eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTUyNCw3ICs1MjQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9u
KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0g
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihwb2ludCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbiwgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KCk7CiAgICAgfSk7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1v
dmVTZWxlY3Rpb25BdEJvdW5kYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihncmFudWxhcml0eSwgZGlyZWN0aW9uKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtNjMwLDEwICs2MzAsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVU
eXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCBHZXN0
dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLCB7IH0sIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NTQsNyArNzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
KSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RXh0ZW5kU2VsZWN0aW9uKGdyYW51bGFyaXR5KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3YXJkKCkKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsCiAgICAgfQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQiX3MpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJp
dHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSks
IG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zm
c2V0KGdyYW51bGFyaXR5LCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0
KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCShy
ZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgLSAoTlNBcnJheSAqKXRleHRSZWN0cwogCiAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFu
ZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcnMgaW5E
aXJlY3Rpb246KFdLRE9NUmFuZ2VEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVj
dGlvbkF0V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2Fy
ZCA/ICBfaW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCksIGNoYXJh
Y3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdlYkNvcmU6
OkRpcmVjdGlvbkZvcndhcmQgOiBXZWJDb3JlOjpEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJ
bkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9u
Rm9yd2FyZCA/ICBfaW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCks
IGNoYXJhY3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFdlYkNvcmU6OlNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQpOwogCiAgICAgcmV0dXJuIFtbW1dLRE9NUmFuZ2UgYWxsb2NdIF9p
bml0V2l0aEltcGw6bmV3UmFuZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5IFdlYkZyYW1lTG9hZGVyQwogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+d2ViR0xQb2xpY3lGb3JVUkwobV9mcmFtZS5w
dHIoKSwgdXJsKTsKIAotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJu
IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TChjb25zdCBVUkwmIHVybCkgY29uc3QKQEAgLTE2MzYsNyArMTYzNiw3IEBAIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckMKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIHdlYlBhZ2UtPnJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTChtX2ZyYW1lLnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVh
dGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ5LDEyICsxMDQ5LDEyIEBA
IFJlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWIKICNpZiBFTkFCTEUoV0VC
R0wpICYmICFQTEFURk9STShNQUMpCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6
d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewotICAgIHJldHVybiBX
ZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKLSAgICByZXR1cm4g
V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxs
b3dDcmVhdGlvbjsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMCArMTk1
LDEyIEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDog
aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0
aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogZW51bSBj
bGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4X3Q7CitlbnVt
IGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJl
Y3Rpb24gOiB1aW50OF90OwogCiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKQEAgLTY4NSwxOSAr
Njg3LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmx1ckZvY3VzZWRFbGVtZW50KCk7CiAgICAg
dm9pZCByZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDYWxsYmFja0lEKTsKLSAgICB2
b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBleHRlbmRTZWxlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHkpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lk
IHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVT
ZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25D
b250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBT
dHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBAIC03MjIsNyArNzI0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCB1aW50NjRfdCByZXF1ZXN0
SUQpOwogICAgIHZvaWQgaGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0Zvckdy
YW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGludDMyX3QsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJv
b2wpOwogICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CkBAIC0xMzY1LDcgKzEzNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGxldGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ss
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpTeW50aGV0aWNDbGlja1R5cGUsIFdlYkNvcmU6
OlBvaW50ZXJJRCA9IFdlYkNvcmU6Om1vdXNlUG9pbnRlcklEKTsKICAgICB2b2lkIHNlbmRUYXBI
aWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpO
b2RlKik7CiAgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRnJhbWVCZWZv
cmVTZWxlY3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2Vs
ZWN0aW9uVG91Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjMsMTkgKzYzLDE5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hN
b3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBJbnNwZWN0b3JO
b2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAg
Qmx1ckZvY3VzZWRFbGVtZW50KCkKLSAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0
aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wg
YmFzZUlzU3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFdp
dGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRv
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBFeHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVs
YXJpdHkpCisgICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVu
dW06dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
ZW51bTp1aW50OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNT
dGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aFR3b1Rv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIGVudW06
dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgRXh0ZW5kU2VsZWN0aW9uKGVudW06dWludDhfdCBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgU2VsZWN0V29yZEJhY2t3YXJkKCkK
ICAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQpIC0+ICgpIEFzeW5jCi0g
ICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQpIC0+ICgpIEFzeW5jCi0gICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAo
KSBBc3luYwotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uKSAtPiAoKSBBc3luYworICAgIFNlbGVj
dFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5jCisgICAgU2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgp
IEFzeW5jCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24s
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24s
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBlbnVtOmJvb2wgV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9y
IHJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBT
dHJpbmcgbmV3VGV4dCkKICAgICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBT
dHJpbmcgbmV3VGV4dCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVycywgdWludDY0X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRG
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50
MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGVudW06dWludDhfdCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQo
aW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBTdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoYm9vbCBzaG91bGRTdG9yZSkK
ICAgICBTdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9zaXRp
b25JbldpbmRvdykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjgzLDcgKzI4Myw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmEK
ICAgICAgICAgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IHN0YXJ0Tm9kZUlzSW5zaWRl
Rml4ZWRQb3NpdGlvbjsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBw
b3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZv
bGxvd2luZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24u
Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250
ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCks
IFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXRE
YXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBwb3N0
TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5n
ZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkuZ2V0KCkpOwogICAgICAgICBpZiAoc2Vs
ZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICBjaGFyYWN0ZXJzQXJvdW5k
UG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckFmdGVy
U2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24sIHBvc3RM
YXlvdXREYXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CkBAIC0zMTksOCArMzE5LDgg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxh
aW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwotICAgICAgICBwb3N0TGF5b3V0RGF0
YS5zZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpEaXJlY3Rpb25CYWNrd2FyZCk7Ci0g
ICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9
IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlRW5kKCksIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6RGlyZWN0
aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBh
cmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2li
bGVTdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9u
RW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0
aW9uLnZpc2libGVFbmQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiB9CiAKQEAgLTU0NSw4ICs1NDUs
OCBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhCiAgICAgY29uc3Qg
aW50IHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCA9IDM1MDsKICAgICAKICAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKTsKLSAgICBTdHJpbmcgdGV4dEJlZm9yZSA9
IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9u
QXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2Vs
ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCkpOwot
ICAgIFN0cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmVuZCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlv
bkZvcndhcmQpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRp
c3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnko
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRD
b250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKS5nZXQoKSk7CisgICAg
U3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hh
cmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKS5nZXQoKSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIHRleHRCZWZvcmUsIHRl
eHRBZnRlciwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTMzOSw3ICsxMzM5LDcgQEAgc3RhdGljIElu
dFBvaW50IGNvbnN0cmFpblBvaW50KGNvbnN0IEludAogICAgIHJldHVybiBjb25zdHJhaW5lZFBv
aW50OwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50
JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVj
b2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRF
bGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PEdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkgPT0gR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6QmVnYW4pCiAgICAgICAgIHNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRB
dExvY2F0aW9uKHBvaW50KTsKQEAgLTEzNDgsMTEgKzEzNDgsMTEgQEAgdm9pZCBXZWJQYWdlOjpz
ZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9
IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgp
KSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNr
KHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCAwLCBjYWxsYmFja0lEKSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIFNlbGVjdGlvbkZsYWdz
IGZsYWdzID0gTm9uZTsKKyAgICBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzOwogICAg
IEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgd2tHZXN0dXJlU3RhdGUgPSBzdGF0aWNfY2FzdDxHZXN0
dXJlUmVjb2duaXplclN0YXRlPihnZXN0dXJlU3RhdGUpOwogICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8R2VzdHVyZVR5cGU+KGdlc3R1cmVUeXBlKSkgewogICAgIGNhc2UgR2VzdHVyZVR5cGU6OlBo
cmFzZUJvdW5kYXJ5OgpAQCAtMTM2NSw3ICsxMzY1LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RX
aXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICBpZiAocG9zaXRpb24gPiBtYXJrZWRSYW5nZS0+
ZW5kUG9zaXRpb24oKSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbWFya2VkUmFuZ2UtPmVuZFBv
c2l0aW9uKCk7CiAgICAgICAgIGlmICh3a0dlc3R1cmVTdGF0ZSAhPSBHZXN0dXJlUmVjb2duaXpl
clN0YXRlOjpCZWdhbikKLSAgICAgICAgICAgIGZsYWdzID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRp
b25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpICE9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbikgPyBQaHJhc2VCb3VuZGFyeUNoYW5nZWQgOiBOb25l
OworICAgICAgICAgICAgZmxhZ3MgPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQo
KSkgIT0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIHBvc2l0aW9uKSA/IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA6IE9wdGlvblNldDxTZWxlY3Rp
b25GbGFncz4geyB9OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmbGFncyA9IFBocmFzZUJv
dW5kYXJ5Q2hhbmdlZDsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pOwpAQCAtMTQzOSw3ICsxNDM5LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZpbmdlckRvdWJsZVRhcDoKLSAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpKSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpIHsKICAgICAgICAgICAgIC8vIERvdWJsZS10YXAgYXQgZW5kIG9mIGxpbmUgb25seSBw
bGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB0
byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAgICAgICAg
ICAgIC8vIHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCkBAIC0xNDUwLDE3ICsxNDUwLDE3IEBA
IHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW4KIAogICAgIGNhc2UgR2Vz
dHVyZVR5cGU6OlR3b0ZpbmdlclNpbmdsZVRhcDoKICAgICAgICAgLy8gU2luZ2xlIHRhcCB3aXRo
IHR3byBmaW5nZXJzIHNlbGVjdHMgdGhlIGVudGlyZSBwYXJhZ3JhcGguCi0gICAgICAgIHJhbmdl
ID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRyaXBsZVRhcDoKLSAgICAgICAgaWYg
KGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVj
dGlvbkZvcndhcmQpKSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCkpIHsKICAgICAgICAgICAgIC8vIFRyaXBsZS10YXAgYXQgZW5kIG9mIGxpbmUg
b25seSBwbGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBo
ZWxwcyB0byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAg
ICAgICAgICAgIC8vIHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCiAgICAgICAgICAgICByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3
YXJkKTsKKyAgICAgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBA
IC0xNDY5LDcgKzE0NjksNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0
IEluCiAgICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSwgY2FsbGJh
Y2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNr
KHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgY2FsbGJhY2tJRCkpOwog
fQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBib29sIGJhc2VJc1N0YXJ0KQpAQCAtMTUyMywyNyArMTUyMywyNyBAQCBzdGF0aWMgUmVm
UHRyPFJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJh
bmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNl
SXNTdGFydCA/IERpcmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICBTZWxl
Y3Rpb25EaXJlY3Rpb24gb3Bwb3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlv
bkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gc2Ft
ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gb3Bw
b3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJh
c2UgPSBiYXNlSXNTdGFydCA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGV4dGVudCA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS52aXNpYmxlU3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gaW5pdGlhbEV4dGVudCA9
IHBvc2l0aW9uOwogCi0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29y
ZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGly
ZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeS4gTGVhdmUgc2Vs
ZWN0aW9uIHdoZXJlIGl0IGlzLgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9w
cG9zaXRlRGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikp
IHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmQgYm91bmRhcnkgaW4gdGhlIHdyb25nIGRpcmVj
dGlvbi4gTnVkZ2UgdGhlIHNlbGVjdGlvbiB0byBhIGNoYXJhY3RlciBiZWZvcmUgcHJvY2VlZGlu
Zy4KICAgICAgICAgZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBleHRlbnQucHJldmlvdXMoKSA6IGV4
dGVudC5uZXh0KCk7CiAgICAgfQogCiAgICAgLy8gRXh0ZW5kIHRvIHRoZSBib3VuZGFyeSBvZiB0
aGUgd29yZC4KIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQm91bmRhcnkgPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwgc2FtZURp
cmVjdGlvbik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pOwogICAgIGlmICh3b3JkQm91bmRhcnkuaXNOb3ROdWxs
KCkKLSAgICAgICAgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkod29yZEJvdW5kYXJ5LCBXb3Jk
R3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmIGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHdvcmRCb3VuZGFyeSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNh
bWVEaXJlY3Rpb24pCiAgICAgICAgICYmIGluaXRpYWxFeHRlbnQgIT0gd29yZEJvdW5kYXJ5KSB7
CiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICAgICAgcmV0dXJuIChiYXNlIDwg
ZXh0ZW50KSA/IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQp
IDogUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CkBAIC0x
NTU0LDEwICsxNTU0LDEwIEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRh
cnkKIAogICAgIC8vIElmIHRoaXMgaXMgd2hlcmUgdGhlIGV4dGVudCB3YXMgaW5pdGlhbGx5LCB0
aGVuIGl0ZXJhdGUgaW4gdGhlIG90aGVyIGRpcmVjdGlvbiBpbiB0aGUgZG9jdW1lbnQgdW50aWwg
d2UgaGl0IHRoZSBuZXh0IHdvcmQuCiAgICAgd2hpbGUgKGV4dGVudC5pc05vdE51bGwoKQotICAg
ICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHks
IHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQogICAg
ICAgICAmJiBleHRlbnQgIT0gYmFzZQotICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoZXh0ZW50LCBMaW5lR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCi0gICAgICAgICYmICFh
dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgb3Bwb3NpdGVE
aXJlY3Rpb24pKSB7CisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQorICAgICAg
ICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CiAgICAgICAgIGV4dGVudCA9IGJh
c2VJc1N0YXJ0ID8gZXh0ZW50Lm5leHQoKSA6IGV4dGVudC5wcmV2aW91cygpOwogICAgIH0KIApA
QCAtMTY3MywyMSArMTY3MywyMCBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91
c2VFdmVuCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNT
dGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIFNlbGVjdGlvblRvdWNoIHNlbGVj
dGlvblRvdWNoLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBJbnRQb2ludCBwb2ludEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJv
b3RWaWV3VG9Db250ZW50cyhwb2ludCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0g
ZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkRvY3VtZW50KTsKICAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHNl
bGVjdGlvblRvdWNoLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsK
LSAgICBTZWxlY3Rpb25GbGFncyBmbGFncyA9IE5vbmU7CisgICAgT3B0aW9uU2V0PFNlbGVjdGlv
bkZsYWdzPiBmbGFnczsKIAotICAgIGF1dG8gc2VsZWN0aW9uVG91Y2ggPSBzdGF0aWNfY2FzdDxT
ZWxlY3Rpb25Ub3VjaD4odG91Y2hlcyk7CiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGlj
TW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3lu
dGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2lu
dCk7CiAKQEAgLTE3MDYsMTEgKzE3MDUsMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6
OkVuZGVkTW92aW5nRm9yd2FyZDoKLSAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIERpcmVjdGlvbkZvcndh
cmQpOworICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJh
bWUsIHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVk
TW92aW5nQmFja3dhcmQ6Ci0gICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uKCZmcmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBEaXJlY3Rpb25CYWNrd2FyZCk7
CisgICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZmcmFtZSwg
cG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpNb3ZlZDoKQEAgLTE3MjAs
MTAgKzE3MTksMTAgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcwog
ICAgIGlmIChyYW5nZSkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShyYW5nZS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIGZs
YWdzLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3Vj
aGVzQ2FsbGJhY2socG9pbnQsIHNlbGVjdGlvblRvdWNoLCBmbGFncywgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZnJvbVBvc2l0aW9uID0g
ZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29u
dGVudHMoZnJvbSkpOwpAQCAtMTczOCwxNCArMTczNywxNCBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0CiAgICAgfQogCiAgICAgLy8gV2UgY2FuIHVzZSB0aGUgc2Ft
ZSBjYWxsYmFjayBmb3IgdGhlIGdlc3R1cmVzIHdpdGggb25lIHBvaW50LgotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1cmVUeXBlLCBn
ZXN0dXJlU3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Okdlc3R1cmVDYWxsYmFjayhmcm9tLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7
IH0sIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHkpCit2b2lkIFdlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbihXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICAvLyBGb3Ig
dGhlIG1vbWVudCB3ZSBoYW5kbGUgb25seSBXb3JkR3JhbnVsYXJpdHkuCi0gICAgaWYgKGdyYW51
bGFyaXR5ICE9IFdvcmRHcmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgp
KQorICAgIC8vIEZvciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5LgorICAgIGlmIChncmFudWxhcml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwpAQCAtMTc4OCw3ICsxNzg3LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICByZXR1cm47CiAKICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
OwotICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpOworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoc3RhcnRQ
b3NpdGlvbi5pc05vdE51bGwoKSAmJiBzdGFydFBvc2l0aW9uICE9IHBvc2l0aW9uKQogICAgICAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZm
aW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMs
IFVzZXJUcmlnZ2VyZWQpOwogfQpAQCAtMTgwMCwxMCArMTc5OSwxMCBAQCB2b2lkIFdlYlBhZ2U6
Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICBpZiAoc3Rh
cnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rp
b25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAw
ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKG9mZnNldCk7ICsraSkgewotICAgICAgICBwb3NpdGlv
biA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTkzOSw3ICsxOTM4LDcgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZQogICAgIHJlcGx5KFdURk1vdmUo
cmVjdHNUb0F2b2lkSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVs
YXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0g
bV9zdG9yZWRTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5LmlzTm9uZSgpID8gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkgOiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHk7CkBA
IC0xOTUxLDkgKzE5NTAsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlX
aXRoCiAgICAgfQogCiAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclBvc2l0
aW9uV2l0aE9mZnNldChzZWxlY3Rpb25TdGFydCwgb2Zmc2V0KTsKLSAgICBTZWxlY3Rpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwgMCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0
aW9uRm9yd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwg
MCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZv
cndhcmQ7CiAKLSAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFy
aXR5KSwgZGlyZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICBpZiAoIXJh
bmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNlbGVjdGlvblJlY3RzQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTIwNDQsNTIgKzIwNDMsNTIgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQ
b3NpdGlvbkF0UG9pbnQoY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJl
Y3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKLSAgICAgICAg
cG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRp
Y19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9u
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFy
aXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAg
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIFVQU1RSRUFNLCBX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdn
ZXJlZCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCiAgICAgaWYgKCFmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewotICAgICAgICBib29sIGlzRm9yd2Fy
ZCA9IChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uUmlnaHQpOworICAgICAgICBib29sIGlzRm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gU2VsZWN0
aW9uRGlyZWN0aW9uOjpGb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246
OlJpZ2h0KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gKGlzRm9yd2FyZCkg
PyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkgOiBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKLSAgICAgICAgcG9zaXRpb24gPSBw
b3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PFNlbGVj
dGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25P
Zk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rp
b24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBE
T1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
LVJlZlB0cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUm
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpCitSZWZQdHI8UmFuZ2U+
IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KEZyYW1lJiBmcmFtZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKIHsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9p
bnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKIAogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVs
YXJpdHk6CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmFuZ2UgPSBtYWtlUmFuZ2UocG9z
aXRpb24sIHBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
cmFuZ2UgPSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIHJhbmdlID0gZW5jbG9zaW5n
VGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBTZW50ZW5jZUdyYW51bGFyaXR5LCBEaXJl
Y3Rpb25Gb3J3YXJkKTsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxh
cml0eToKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHJhbmdl
ID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEZJWE1FOiBJ
dCdzIG5vdCBjbGVhciB3aHkgdGhpcyBtdXRhdGVzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBhbmQg
cmV0dXJucyBudWxsLgogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3RBbGwoKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0yMTE0LDcgKzIxMTMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvY3Vz
ZWRGcmFtZUJlZm9yZVNlbGVjCiAgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0
Rm9jdXNlZEZyYW1lKHJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNldEZvY3VzZWRGcmFt
ZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKHBvaW50KTsKIApAQCAtMjEyNiwxMyArMjEy
NSwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBtX3NlbGVjdGlv
bkFuY2hvciA9IChzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikgPT0g
RGlyZWN0aW9uTGVmdCkgPyBTdGFydCA6IEVuZDsKKyAgICBtX3NlbGVjdGlvbkFuY2hvciA9IGRp
cmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQgPyBTdGFydCA6IEVuZDsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25B
bmNob3IgPT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25J
bkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50KTsKQEAgLTIyMjgsNyArMjIyNyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERp
Y3RhdGlvbkNvbnRleHQoQ2EKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0UG9zaXRpb24g
PSBzdGFydFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdGF0
aW9uQ29udGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjdXJyZW50UG9zaXRpb24g
PSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9z
aXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKyAgICAgICAgICAg
IGN1cnJlbnRQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGxhc3RQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50
UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBs
YXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yMjQyLDcgKzIyNDEsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhCiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBjdXJyZW50UG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIGxhc3RQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGljdGF0aW9uQ29udGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBj
dXJyZW50UG9zaXRpb24gPSBlbmRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkobGFzdFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKTsK
KyAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKTsKICAgICAgICAgICAgIGlm
IChjdXJyZW50UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBsYXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yNDI4LDcgKzI0Mjcs
NyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hCiAgICAgaWYgKGNv
cnJlY3Rpb24ubGVuZ3RoKCkpCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQoY29y
cmVjdGlvbiwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9h
cmQgOiBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlIGlmIChvcmlnaW5h
bFRleHQubGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDczLDcgKzI0NzIsNyBA
QCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWluQ29udGV4dFdvcmRDb3VudDsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHRCZWZvcmUubGVuZ3RoKCkgPj0gbWluQ29udGV4dExlbmdo
dCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOwor
ICAgICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWlu
VGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQ
b3NpdGlvbiwgY3VycmVudFBvc2l0aW9uKS5wdHIoKSk7CkBAIC0yNDg0LDE1ICsyNDgzLDE1IEBA
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY28KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgY3VycmVudFBv
c2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBj
dXJyZW50UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKQorICAgICAgICAgICAgICAgIGlmIChhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gbWFrZVN0cmluZygiXG4gIl9zLCBjb250ZXh0QmVm
b3JlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRQb3NpdGlv
biAhPSBlbmRPZkVkaXRhYmxlQ29udGVudChlbmRQb3NpdGlvbikpIHsKICAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBuZXh0UG9zaXRpb247Ci0gICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKLSAgICAgICAgICAgICAgICBuZXh0UG9zaXRpb24g
PSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgICAgIGlmICghYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFu
dWxhcml0eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpCisgICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9u
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
OwogICAgICAgICAgICAgaWYgKG5leHRQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKICAgICAg
ICAgfQpAQCAtMjYyNiw5ICsyNjI1LDkgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlua1Bv
c2l0aW9uSW5mbwogICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LmRv
Y3VtZW50KCkpOwogICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwog
ICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5
Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0
aW9uKCksCi0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVj
dGlvbkJhY2t3YXJkKS5nZXQoKSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRl
eHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpLmdldCgpKTsKICAgICBpbmZv
LnRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLAotICAg
ICAgICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJk
KS5nZXQoKSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTQwNjIs
NyArNDA2MSw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkKIHsK
ICAgICBBU1NFUlQoZ3JhbnVsYXJpdHlDb3VudCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTm90
TnVsbCgpKTsKLSAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25CYWNr
d2FyZDsKKyAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkOwogICAgIGF1dG8gZmFydGhlc3RQb3NpdGlvbkluRGlyZWN0aW9uID0gYmFj
a3dhcmRzID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudChwb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxl
Q29udGVudChwb3NpdGlvbik7CiAgICAgaWYgKHBvc2l0aW9uID09IGZhcnRoZXN0UG9zaXRpb25J
bkRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuIGJhY2t3YXJkcyA/IHN0YXJ0T2ZXb3JkKHBvc2l0
aW9uKSA6IGVuZE9mV29yZChwb3NpdGlvbik7CkBAIC00MDc2LDggKzQwNzUsOCBAQCBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG1vdmVCeUdyYW51bGFyaXR5CiAgICAgICAgIGlmIChhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQog
ICAgICAgICAgICAgLS1ncmFudWxhcml0eUNvdW50OwogICAgIH0gd2hpbGUgKGdyYW51bGFyaXR5
Q291bnQpOwotICAgIGlmIChncmFudWxhcml0eSA9PSBTZW50ZW5jZUdyYW51bGFyaXR5KSB7Ci0g
ICAgICAgIEFTU0VSVChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFNl
bnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOworICAgIGlmIChncmFudWxhcml0eSA9PSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgQVNTRVJUKGF0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRQ
b3NpdGlvbjsKICAgICB9CiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgcm91bmRzIHRvIHRoZSBuZWFy
ZXN0IHdvcmQsIHdoaWNoIG1heSBjcm9zcyBhIGxpbmUgYm91bmRhcnkgd2hlbiB1c2luZyBsaW5l
IGdyYW51bGFyaXR5LgpAQCAtNDE5MCw4ICs0MTg5LDggQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udAogICAgIFZpc2libGVQb3NpdGlvbiBjb250ZXh0QWZ0ZXJFbmQ7
CiAgICAgYXV0byBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9u
UmFuZ2UoKTsKICAgICBpZiAocmVxdWVzdC5ncmFudWxhcml0eUNvdW50KSB7Ci0gICAgICAgIGNv
bnRleHRCZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFy
eShyYW5nZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCBy
ZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQsIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICAgICAgY29u
dGV4dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJh
bmdlT2ZJbnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0
LmdyYW51bGFyaXR5Q291bnQsIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBjb250ZXh0QmVm
b3JlU3RhcnQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VP
ZkludGVyZXN0U3RhcnQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5n
cmFudWxhcml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAg
Y29udGV4dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5
KHJhbmdlT2ZJbnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1
ZXN0LmdyYW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgY29udGV4dEJlZm9yZVN0YXJ0ID0gcmFuZ2VPZkludGVyZXN0U3Rh
cnQ7CiAgICAgICAgIGNvbnRleHRBZnRlckVuZCA9IHJhbmdlT2ZJbnRlcmVzdEVuZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg+CkBAIC03NzMsMjQgKzc3NCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQ
YWdlc1RvUERGRnJvbVBERkRvY3VtCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1XZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJH
TFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVpbnQzMl90
IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViR0xMb2FkUG9saWN5Pihwb2xpY3lSZXN1bHQpOwotCi0gICAgcmV0dXJuIFdl
YkdMQWxsb3dDcmVhdGlvbjsKKyAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5UmVzdWx0ID0gV2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpOworICAgIHJldHVy
biBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIHVpbnQzMl90IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKHVybCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVz
dWx0KSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGlj
eVJlc3VsdCk7Ci0KLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9h
ZFBvbGljeSBwb2xpY3lSZXN1bHQgPSBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
bjsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpSZXBseShwb2xpY3lSZXN1bHQpKTsKKyAgICByZXR1cm4gcG9saWN5UmVzdWx0Owog
fQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgZW51bSBz
ZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBhZ2dyZXNzaXZlbHlFeHBhbmRT
ZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAodG9UZXh0R3JhbnVsYXJpdHkpOgor
ICAgICAgICAodG9TZWxlY3Rpb25EaXJlY3Rpb24pOgorCiAyMDIwLTA1LTEwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWNraW5nIGEgdGVsOi8v
IGxpbmsgb24gaVBhZCB3aXRoIGEgdHJhY2twYWQgcHJlc2VudHMgZGlmZmVyZW50IFVJIHRoYW4g
dGFwcGluZyBvbiBpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00ODQsNyArNDg0LDcgQEAgLSAodm9pZClhZ2dyZXNzaXZlbHlFeHBhbmRTZWxl
Y3Rpb25Ub1dvcgogCiAgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGdl
dCB0aGUgaW1wcm92ZW1lbnRzCiAgICAgLy8gSSdtIHdvcmtpbmcgb24gZm9yIFJUTCBzZWxlY3Rp
b24uCi0gICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFy
aXR5KQorICAgIGlmIChmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oZnJh
bWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSwgZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9u
KCkuZW5kKCkpOwogICAgIAogICAgIGlmIChmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0Nh
cmV0KCkpIHsKQEAgLTYwNCwyMyArNjA0LDIzIEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvblRvUG9p
bnQ6KENHUG9pbnQpcG8KIAogLSAodm9pZClzZXRTZWxlY3Rpb25HcmFudWxhcml0eTooV2ViVGV4
dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5CiB7Ci0gICAgVGV4dEdyYW51bGFyaXR5IHdjR3JhbnVs
YXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxhcml0eUNoYXJh
Y3RlcjoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsK
KyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51
bGFyaXR5V29yZDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7
CisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJp
dHlTZW50ZW5jZToKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdyYW51bGFy
aXR5OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRH
cmFudWxhcml0eVBhcmFncmFwaDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBQYXJhZ3Jh
cGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBEb2N1
bWVudEdyYW51bGFyaXR5LgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFncmFwaEdy
YW51bGFyaXR5OworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50R3JhbnVsYXJpdHkuCisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaWJsZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyNjE1NzcpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIwNSwyNyArMjA1LDI3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dEdyYW51bGFyaXR5IHRv
VGV4dEdyYW4KICAgICAKICAgICBzd2l0Y2ggKHdlYkdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5Q2hhcmFjdGVyOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkg
PSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gV29yZEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgICAgICBncmFudWxhcml0
eSA9IFNlbnRlbmNlR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gTGluZUdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgZ3JhbnVsYXJp
dHkgPSBQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBkZWZhdWx0OgpAQCAtMjQyLDI3ICsyNDIsMjcgQEAgc3RhdGljIGlubGluZSBT
ZWxlY3Rpb25EaXJlY3Rpb24gdG9TZWxlYwogICAgIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
CiAgICAgICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRGb3J3YXJkOgotICAgICAgICAgICAgcmVz
dWx0ID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDoKLSAgICAgICAgICAgIHJlc3VsdCA9
IERpcmVjdGlvbkJhY2t3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgV2ViVGV4dEFkanVzdG1lbnRSaWdodDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVj
dGlvblJpZ2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdo
dDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgV2ViVGV4
dEFkanVzdG1lbnRMZWZ0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFVwOgotICAg
ICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAg
ICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudERvd246Ci0gICAgICAgICAgICByZXN1bHQgPSBE
aXJlY3Rpb25SaWdodDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6
UmlnaHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNl
IGVudW0gc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01SYW5nZSBtb3ZlOmluRGlyZWN0aW9u
Ol0pOgorICAgICAgICAoLVtET01SYW5nZSBleHRlbmQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2Nh
blNtYXJ0Q29weU9yRGVsZXRlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBk
b0NvbXBsZXRpb25dKToKKwogMjAyMC0wNS0xMSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIEVuYWJsZSB0aGUgbW9jayB2aWRlbyBwcmVzZW50YXRpb24gbW9kZSBp
biByZWxhdGVkIGxheW91dCB0ZXN0cyBhbmQgZml4IHRlc3QgZmFpbHVyZXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQkocmV2
aXNpb24gMjYxNTc3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsMTUgKzgyLDE1IEBAIC0gKHZvaWQpbW92
ZTooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvbjoKICAgICBXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
biBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UpOwogICAg
IAotICAgIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFdlYkNvcmU6OkNo
YXJhY3RlckdyYW51bGFyaXR5OworICAgIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAg
ICAgLy8gVW50aWwgV2ViS2l0IHN1cHBvcnRzIHZlcnRpY2FsIGxheW91dCwgImRvd24iIGlzIGVx
dWl2YWxlbnQgdG8gImZvcndhcmQgYnkgYSBsaW5lIiBhbmQKICAgICAvLyAidXAiIGlzIGVxdWl2
YWxlbnQgdG8gImJhY2t3YXJkIGJ5IGEgbGluZSIuCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBXZWJU
ZXh0QWRqdXN0bWVudERvd24pIHsKICAgICAgICAgZGlyZWN0aW9uID0gV2ViVGV4dEFkanVzdG1l
bnRGb3J3YXJkOwotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OkxpbmVHcmFudWxhcml0
eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eTsKICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVu
dFVwKSB7CiAgICAgICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50QmFja3dhcmQ7Ci0g
ICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6TGluZUdyYW51bGFyaXR5OworICAgICAgICBn
cmFudWxhcml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5Owog
ICAgIH0KICAgICAKICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQpAQCAt
MTExLDcgKzExMSw3IEBAIC0gKHZvaWQpZXh0ZW5kOihVSW50MzIpYW1vdW50IGluRGlyZWN0aW8K
ICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UpOwogICAgIAogICAgIGZvciAoVUludDMy
IGkgPSAwOyBpIDwgYW1vdW50OyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgKFdlYkNvcmU6OlNlbGVj
dGlvbkRpcmVjdGlvbilkaXJlY3Rpb24sIFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsK
KyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCAoV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uKWRpcmVjdGlvbiwg
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgCiAg
ICAgUG9zaXRpb24gc3RhcnQgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IGZyYW1lU2VsZWN0
aW9uLnNlbGVjdGlvbigpLmVuZCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI2MTU3NykKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTE2LDEyICsyMTE2LDEyIEBAIHN0YXRpYyBib29sIHNob3VsZEJs
b2NrV2ViR0woKQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OndlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNo
b3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6
OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb24gOiBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29u
c3QgVVJMJikgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2ViQ29y
ZTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAg
IHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6Oldl
YkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAyNjE1Nzcp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzMyLDcgKzU3MzIsNyBAQCAtIChCT09MKV9jYW5TbWFydENvcHlPckRl
bGV0ZQogICAgIGlmICghW1tzZWxmIF93ZWJWaWV3XSBzbWFydEluc2VydERlbGV0ZUVuYWJsZWRd
KQogICAgICAgICByZXR1cm4gTk87CiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSA9PSBXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIGNv
cmVGcmFtZSAmJiBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk7CiB9CiAKICNpZiBQTEFURk9STShN
QUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0
aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjYxNTc3KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKWRvQ29t
cGxldGlvbgogICAgICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbX2h0bWxWaWV3IF9mcmFtZV07CiAg
ICAgICAgIERPTVJhbmdlICpzZWxlY3Rpb24gPSBraXQoY3JlYXRlTGl2ZVJhbmdlKGNvcmUoZnJh
bWUpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKS5nZXQoKSk7
CiAgICAgICAgIERPTVJhbmdlICp3aG9sZVdvcmQgPSBbZnJhbWUgX3JhbmdlQnlBbHRlcmluZ0N1
cnJlbnRTZWxlY3Rpb246RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQKLSAgICAgICAg
ICAgIGRpcmVjdGlvbjpEaXJlY3Rpb25CYWNrd2FyZCBncmFudWxhcml0eTpXb3JkR3JhbnVsYXJp
dHldOworICAgICAgICAgICAgZGlyZWN0aW9uOlNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQg
Z3JhbnVsYXJpdHk6VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHldOwogICAgICAgICBE
T01SYW5nZSAqcHJlZml4ID0gW3dob2xlV29yZCBjbG9uZVJhbmdlXTsKICAgICAgICAgW3ByZWZp
eCBzZXRFbmQ6W3NlbGVjdGlvbiBzdGFydENvbnRhaW5lcl0gb2Zmc2V0OltzZWxlY3Rpb24gc3Rh
cnRPZmZzZXRdXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399345</attachid>
            <date>2020-05-14 02:30:55 -0700</date>
            <delta_ts>2020-05-14 09:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514023054.patch</filename>
            <type>text/plain</type>
            <size>233744</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHU3RyZWFtZXJdIENhbid0IHJlcGxheSBibG9iIHZpZGVvcyBpbiB3ZWIud2hhdHNh
cHAuY29tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMTEsNyArMjAxMSw3IEBAIFZpc2libGVQb3NpdGlvblJhbmdl
IEFjY2Vzc2liaWxpdHlSZW5kZXIKICAgICAvLyB3aWxsIGJlIGEgY2FyZXQgYXQgdmlzaWJsZVBv
cy4KICAgICBGcmFtZVNlbGVjdGlvbiBzZWxlY3Rpb247CiAgICAgc2VsZWN0aW9uLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKHZpc2libGVQb3MpKTsKLSAgICBzZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25SaWdodCwgTGluZUJv
dW5kYXJ5KTsKKyAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
RXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeSk7CiAgICAgCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdlKHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2li
bGVFbmQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIw
MTIsNyArMjAxMiw3IEBAIC0gKHZvaWQpYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjooVGUK
ICAgICBpZiAoZnJhbWVTZWxlY3Rpb24uaXNOb25lKCkgJiYgKHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSA8IHJhbmdlLnN0YXJ0IHx8IHNlbGVjdGlvbi52aXNpYmxlRW5kKCkgPiByYW5nZS5lbmQp
KQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2Uuc3RhcnQsIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIAotICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgKGluY3JlYXNlKSA/IERpcmVjdGlvblJpZ2h0IDogRGlyZWN0aW9uTGVm
dCwgZ3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgKGluY3JlYXNlKSA/IFNlbGVjdGlv
bkRpcmVjdGlvbjo6UmlnaHQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIGdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogLSAodm9pZClhY2Nlc3NpYmlsaXR5SW5jcmVhc2VTZWxl
Y3Rpb246KFRleHRHcmFudWxhcml0eSlncmFudWxhcml0eQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nQmVoYXZpb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5
Niw3IEBAIHB1YmxpYzoKICAgICAvLyBPbiBpT1MsIHdlIGRvbid0IHdhbnQgdG8gc2VsZWN0IGFs
bCB0aGUgdGV4dCB3aGVuIGZvY3VzaW5nIGEgZmllbGQuIEluc3RlYWQsIG1hdGNoIHBsYXRmb3Jt
IGJlaGF2aW9yIGJ5IGdvaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCiAgICAgYm9vbCBzaG91
bGRNb3ZlU2VsZWN0aW9uVG9FbmRXaGVuRm9jdXNpbmdUZXh0SW5wdXQoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gRWRpdGluZ0lPU0JlaGF2aW9yOyB9CiAgICAgCi0gICAgLy8gT24gaU9TLCB3
aGVuIHNtYXJ0IGRlbGV0ZSBpcyBvbiwgaXQgaXMgYWx3YXlzIG9uLCBhbmQgc2hvdWxkIGRvIG5v
dCBhZGRpdGlvbmFsIGNoZWNrcyAoaS5lLiBXb3JkR3JhbnVsYXJpdHkpLgorICAgIC8vIE9uIGlP
Uywgd2hlbiBzbWFydCBkZWxldGUgaXMgb24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBk
byBub3QgYWRkaXRpb25hbCBjaGVja3MgKGkuZS4gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHkpLgogICAgIGJvb2wgc2hvdWxkQWx3YXlzU21hcnREZWxldGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gRWRpdGluZ0lPU0JlaGF2aW9yOyB9CiAgICAgCiAgICAgLy8gT24gaU9TLCB3
ZSBzaG91bGQgdHVybiBvbiBzbWFydCBpbnNlcnQgYW5kIGRlbGV0ZSBhbmQgbmV3bGluZXMgYXJv
dW5kIHBhcmFncmFwaHMgdG8gbWF0Y2ggVUlLaXQgYmVoYXZpb3VyLgpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBF
ZGl0b3I6OnNob3VsZFNtYXJ0RGVsZXRlKCkKIHsKICAgICBpZiAoYmVoYXZpb3IoKS5zaG91bGRB
bHdheXNTbWFydERlbGV0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eTsKKyAg
ICByZXR1cm4gbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogfQogCiBib29sIEVkaXRvcjo6c21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkKQEAgLTU2OCwxMiArNTY4LDEyIEBAIGJvb2wgRWRpdG9yOjpkZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGkKICAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcpCiAg
ICAgICAgICAgICBvcHRpb25zIHw9IFR5cGluZ0NvbW1hbmQ6OkFkZHNUb0tpbGxSaW5nOwogICAg
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6
Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6
CiAgICAgICAgICAgICBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlc3NlZChkb2N1
bWVudCgpLCBvcHRpb25zLCBncmFudWxhcml0eSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0Ogor
ICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CisgICAgICAgIGNhc2Ug
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6ZGVs
ZXRlS2V5UHJlc3NlZChkb2N1bWVudCgpLCBvcHRpb25zLCBncmFudWxhcml0eSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjMzMSw3ICsyMzMxLDcgQEAgU3RyaW5nIEVkaXRv
cjo6bWlzc3BlbGxlZFdvcmRBdENhcmV0T3JSYQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHdvcmRTZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0g
ICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7
CisgICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICBhdXRvIHdvcmRSYW5nZSA9IHdvcmRTZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXdvcmRSYW5nZSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwpAQCAtMjQwMiw3ICsyNDAyLDcgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpn
dWVzc2VzRm9yTWlzc3BlbAogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24u
aXNDYXJldCgpICYmIGJlaGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dlc3Rpb25zV2l0
aG91dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHdvcmRTZWxl
Y3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgICAgICAgICAg
d29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7Cisg
ICAgICAgICAgICB3b3JkU2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgcmFuZ2UgPSB3b3JkU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmFu
Z2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKQEAgLTI1OTMsNyArMjU5Myw3IEBA
IHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmcKIAogICAgICAgICAvLyBS
ZXNldCB0aGUgY2hhcmV0IG9uZSBjaGFyYWN0ZXIgZnVydGhlci4KICAgICAgICAgbV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5tb3ZlVG8obV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5l
bmQoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHkpOworICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgfQogCiAgICAgaWYgKCFpc0dyYW1t
YXJDaGVja2luZ0VuYWJsZWQoKSkKQEAgLTI5MTksMTEgKzI5MTksMTEgQEAgdm9pZCBFZGl0b3I6
Om1hcmtBbmRSZXBsYWNlRm9yKGNvbnN0IFNwZQogICAgICAgICAgICAgYXV0byBzZWxlY3Rpb25S
YW5nZSA9IGV4dGVuZGVkUGFyYWdyYXBoLnN1YnJhbmdlKHsgMCwgc2VsZWN0aW9uT2Zmc2V0IH0p
OwogICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb3ZlVG8oc2VsZWN0aW9uUmFu
Z2UtPmVuZFBvc2l0aW9uKCksIERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKGFkanVzdFNl
bGVjdGlvbkZvclBhcmFncmFwaEJvdW5kYXJpZXMpCi0gICAgICAgICAgICAgICAgbV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgICAgICAgICAgbV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBm
YWlscyBmb3IgYW55IHJlYXNvbiwgdGhlIGZhbGxiYWNrIGlzIHRvIGdvIG9uZSBwb3NpdGlvbiBi
ZXlvbmQgdGhlIGxhc3QgcmVwbGFjZW1lbnQKICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0
aW9uKCkubW92ZVRvKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwot
ICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00
MjE1LDcgKzQyMTUsNyBAQCB2b2lkIEVkaXRvcjo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoVGV4
CiAgICAgfSBlbHNlCiAgICAgICAgIGluc2VydFRleHQoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQsIG51bGxwdHIpOwogCi0gICAgUmVmUHRyPFJhbmdlPiBpbnNlcnRlZENhbmRpZGF0ZVJh
bmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnko
c2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5s
ZW5ndGgoKSwgRGlyZWN0aW9uQmFja3dhcmQpOworICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRD
YW5kaWRhdGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29y
ZEJvdW5kYXJ5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVw
bGFjZW1lbnQubGVuZ3RoKCksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwogICAgIGlm
IChpbnNlcnRlZENhbmRpZGF0ZVJhbmdlKQogICAgICAgICBpbnNlcnRlZENhbmRpZGF0ZVJhbmdl
LT5zdGFydENvbnRhaW5lcigpLmRvY3VtZW50KCkubWFya2VycygpLmFkZE1hcmtlcigqaW5zZXJ0
ZWRDYW5kaWRhdGVSYW5nZSwgRG9jdW1lbnRNYXJrZXI6OkFjY2VwdGVkQ2FuZGlkYXRlLCBhY2Nl
cHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDMyICszMDQs
MzIgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSYgZnJhbWUsIAogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRl
V2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZh
bHNlLCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZURlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIExPR19FUlJPUigiRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0
ZXIgaXMgbm90IGltcGxlbWVudGVkLCBkb2luZyBEZWxldGVCYWNrd2FyZCBpbnN0ZWFkIik7Ci0g
ICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUZvcndhcmQoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGluZShGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBMaW5l
Qm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6TGlu
ZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVk
aXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJv
dW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMz
Nyw3ICszMzcsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhCiB7
CiAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhl
IG5ld2xpbmUgYXQgdGhlIGVuZCBvZgogICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQg
dGhlIGVuZCBvZiBhIHBhcmFncmFwaCAobGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KLSAg
ICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIExp
bmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNDUs
NyArMzQ1LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZQYXJhZ3JhcAogewog
ICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBu
ZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGguCi0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVj
dGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwor
ICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2NiwxMyArMzY2LDEzIEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUmIGYKIAogc3RhdGljIGJvb2wgZXhlY3V0ZURl
bGV0ZVdvcmRCYWNrd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0
aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAg
ICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6
QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkRm9y
d2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlv
bkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLmVkaXRv
cigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC00MjQsNyArNDI0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcndhcmRE
ZWxldGUoRnJhbWUmIAogewogICAgIHN3aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5k
RnJvbU1lbnVPcktleUJpbmRpbmc6Ci0gICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhE
aXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDb21tYW5k
RnJvbURPTToKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJbnRlcmZhY2U6CkBAIC02
MDYsNDcgKzYwNiw0NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTWFrZVRleHRXcml0aW5nRGlyZWN0
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFj
a3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVEb3duKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBM
aW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFy
aXR5OjpMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9y
d2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlTGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmln
Z2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rp
b24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25MZWZ0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRy
aWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0
eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC02ODgsMjAzICs2ODgsMjAzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFn
ZVVwQW5kTW9kaWZ5U2UKIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVSaWdodChGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBy
ZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVk
KTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25S
aWdodCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0
aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJk
LCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExp
bmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIExpbmVC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlBh
cmFncmFwaChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIFVz
ZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGhB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBo
Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZlNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5
LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5j
ZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnko
RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQsIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRv
Y3VtZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIERvY3VtZW50Qm91bmRhcnksIFVzZXJU
cmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFy
aXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2UoRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uRm9yd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQs
IERpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIExp
bmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmVBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnks
IFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaChGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25Gb3J3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7Cisg
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3Jh
bnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoR3Jh
bnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVk
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVVcChGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFu
dWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJh
Y2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFVz
ZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
TW92ZVdvcmRCYWNrd2FyZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmQoRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgRGlyZWN0aW9uRm9yd2FyZCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERp
cmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVXb3JkTGVmdChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0LCBXb3JkR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25SaWdodCwg
V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246
OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZFJpZ2h0
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0LCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bk1vdmUsIERpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uTGVmdCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmln
aHRFbmRPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRy
aWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25SaWdodCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJv
dW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTAzNSwx
NyArMTAzNSwxNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0QWxsKEZyYW1lJiBmcmFtCiAK
IHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRTZWxl
Y3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBMaW5lR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBl
eHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RQYXJhZ3JhcGgoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFBhcmFncmFw
aEdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShm
cmFtZSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVTZWxlY3RTZW50ZW5jZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eShmcmFtZSwgU2VudGVuY2VHcmFudWxhcml0eSk7CisgICAgcmV0dXJu
IGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RUb01hcmso
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZy
YW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RXb3JkKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBl
eHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBXb3JkR3JhbnVsYXJpdHkpOworICAg
IHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTZXRNYXJrKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9u
IDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNob3Vs
ZEFsd2F5c1VzZURpcmVjdAogRnJhbWVTZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3hQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbihOb1hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbigp
KQotICAgICwgbV9ncmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAsIG1fZ3Jh
bnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKICNpZiBFTkFC
TEUoVEVYVF9DQVJFVCkKICAgICAsIG1fY2FyZXRCbGlua1RpbWVyKCp0aGlzLCAmRnJhbWVTZWxl
Y3Rpb246OmNhcmV0QmxpbmtUaW1lckZpcmVkKQogI2VuZGlmCkBAIC02NzYsMjIgKzY3NiwyMiBA
QCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChFQWx0CiAgICAgICAgICAgICBi
YXNlSXNTdGFydCA9IGZhbHNlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0
aW9uKSB7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0
aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9
IHRydWU7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBm
YWxzZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6
CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAg
YmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03NjUsMzQgKzc2NSwzNCBAQCBWaXNpYmxl
UG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0ZW5kcyBmb3J3
YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OkxU
UiwKICAgICAvLyBidXQgaXQgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xv
c2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChncmFudWxhcml0
eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9IHBv
cy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBuZXh0
V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
cG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToK
ICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFy
aXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nQmFj
a3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IGFsbCBvZiB0aGUgYWJvdmU/CiAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC04
MDYsMzQgKzgwNiwzNCBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4
CiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2Ug
Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5l
eHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9uKHBvcyk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRMaW5lUG9zaXRp
b24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oRVhU
RU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBw
b3MgPSBuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9j
a0RpcmVjdGlvbk5hdmlnYXRpb24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
U2VudGVuY2VCb3VuZGFyeToKICAgICAgICAgcG9zID0gZW5kT2ZTZW50ZW5jZShlbmRGb3JQbGF0
Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVu
ZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJh
Z3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnk6CiAgICAgICAgIHBvcyA9IGVuZE9mUGFyYWdyYXBoKGVuZEZvclBsYXRmb3JtKCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZEZvclBsYXRmb3Jt
KCk7CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkp
KQogICAgICAgICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKQEAgLTg1Myw3
ICs4NTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAg
ICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxzZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgaWYgKGlzUmFuZ2UoKSkgewogICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQ
b3NpdGlvbihtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CkBAIC04
NjIsNyArODYyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVj
dGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucmlnaHQodHJ1ZSwgcmVhY2hl
ZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6IHsK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CiAgICAgICAgIGJv
b2wgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+
ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9IHJpZ2h0V29yZFBvc2l0
aW9uKGN1cnJlbnRQb3NpdGlvbiwgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCk7CkBAIC04NzAs
MTkgKzg3MCwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAg
ICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9zID09IGN1cnJlbnRQb3NpdGlvbjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAg
IGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYWxsIG9mIHRoZSBh
Ym92ZS4KICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nRm9yd2FyZChncmFudWxhcml0eSwgcmVh
Y2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gcmln
aHRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2soKSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1
bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51
bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtODk1LDE1ICs4OTUsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5Ogot
ICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToK
ICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gZW5kRm9yUGxhdGZvcm0oKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKQEAgLTkxMiwxOSArOTEyLDE5IEBAIFZpc2libGVQb3NpdGlvbiBG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIC8v
IEZJWE1FOiBTdGF5IGluIGVkaXRhYmxlIGNvbnRlbnQgZm9yIHRoZSBsZXNzIGNvbW1vbiBncmFu
dWxhcml0aWVzLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3Rl
ckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQ
b3NpdGlvbihtX3NlbGVjdGlvbi5lbmQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5l
eHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3Jk
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
ICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKGN1cnJlbnRQb3NpdGlv
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcG9zID0g
bmV4dFNlbnRlbmNlUG9zaXRpb24oY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGlu
ZUdyYW51bGFyaXR5OiB7CiAgICAgICAgIC8vIGRvd24tYXJyb3dpbmcgZnJvbSBhIHJhbmdlIHNl
bGVjdGlvbiB0aGF0IGVuZHMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBuZWVkcwogICAgICAgICAv
LyB0byBsZWF2ZSB0aGUgc2VsZWN0aW9uIGF0IHRoYXQgbGluZSBzdGFydCAobm8gbmVlZCB0byBj
YWxsIG5leHRMaW5lUG9zaXRpb24hKQogICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CkBA
IC05MzIsMjIgKzkzMiwyMiBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlv
blBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKFNUQVJUKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFn
cmFwaFBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tE
aXJlY3Rpb25OYXZpZ2F0aW9uKFNUQVJUKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9j
dW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFu
dWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VCb3VuZGFyeToKICAgICAgICAgcG9zID0gZW5kT2ZTZW50ZW5jZShjdXJyZW50UG9zaXRp
b24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsRW5kT2ZM
aW5lKGVuZEZvclBsYXRmb3JtKCksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlBhcmFncmFwaChjdXJyZW50UG9z
aXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGN1
cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVlcEVx
dWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBlbmRPZkVkaXRhYmxlQ29udGVudChwb3Mp
OwpAQCAtOTU2LDEzICs5NTYsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNbwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0
eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgICAgICpy
ZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAgICBicmVhazsK
QEAgLTk4MiwzMyArOTgyLDMzIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5RXgKICAgICAvLyBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OkxUUiwKICAgICAvLyBidXQgaXQgZXh0ZW5kcyBm
b3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246
OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6
CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gcG9zLm5leHQoQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRH
cmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5Ogog
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246
OkxUUikKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShw
b3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9IG1v
ZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFu
dWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVu
Y2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1l
bnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRh
cnk6CiAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTAyNywzOCArMTAyNywzOCBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gSXQgd2Fz
IGRvbmUgaGVyZSBpbnN0ZWFkIG9mIGluIFZpc2libGVQb3NpdGlvbiBiZWNhdXNlIHdlIHdhbnQg
VlBzIHRvIGl0ZXJhdGUKICAgICAvLyBvdmVyIGV2ZXJ5dGhpbmcuCiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwb3MucHJl
dmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2Vu
dGVuY2VQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJs
b2NrRGlyZWN0aW9uTmF2aWdhdGlvbihFWFRFTlQpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24o
cG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oRVhURU5U
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRP
ZlNlbnRlbmNlKHN0YXJ0Rm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAg
ICAgICAgIHBvcyA9IGxvZ2ljYWxTdGFydE9mTGluZShzdGFydEZvclBsYXRmb3JtKCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFn
cmFwaChzdGFydEZvclBsYXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6
CiAgICAgICAgIHBvcyA9IHN0YXJ0Rm9yUGxhdGZvcm0oKTsKICAgICAgICAgaWYgKGlzRWRpdGFi
bGVQb3NpdGlvbihwb3MuZGVlcEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBzdGFy
dE9mRWRpdGFibGVDb250ZW50KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9
IHN0YXJ0T2ZEb2N1bWVudChwb3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJp
dHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1v
ZGlmeU1vCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxzZTsKICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3Rl
ckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3Mg
PSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5p
dHkoKSk7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3Np
dGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkubGVmdCh0
cnVlLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eTogeworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsK
ICAgICAgICAgYm9vbCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ID0gbV9kb2N1bWVudCAmJiBt
X2RvY3VtZW50LT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFNraXBTcGFjZVdoZW5Nb3ZpbmdS
aWdodCgpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0aW9uKG1fc2VsZWN0
aW9uLmV4dGVudCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgcG9zID0gbGVm
dFdvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQp
OwpAQCAtMTA5MSwxOSArMTA5MSwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeU1vCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9zID09IGN1cnJlbnRQ
b3NpdGlvbjsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgU2VudGVuY2VHcmFudWxh
cml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGlu
ZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
YWxsIG9mIHRoZSBhYm92ZS4KICAgICAgICAgcG9zID0gbW9kaWZ5TW92aW5nQmFja3dhcmQoZ3Jh
bnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGlu
ZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IGxlZnRCb3VuZGFyeU9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpE
b2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMTExNiwxNSArMTExNiwxNSBAQCBWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBmYWxz
ZTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0aW9uOwogICAgIHN3aXRjaCAoZ3Jh
bnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNl
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
Y3VycmVudFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmV4dGVudCgpLCBt
X3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1
bWVudEJvdW5kYXJ5OgogICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBzdGFydEZvclBsYXRmb3Jt
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMTMyLDUyICsxMTMyLDUyIEBA
IFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICB9CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBD
aGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBW
aXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3Nl
bGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkucHJldmlvdXMoQ2Fubm90
Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKGN1cnJlbnRQ
b3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
cG9zID0gcHJldmlvdXNTZW50ZW5jZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzTGluZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbiwgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZp
Z2F0aW9uKFNUQVJUKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogog
ICAgICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbiwg
bGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKFNUQVJUKSk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlNlbnRl
bmNlKGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBv
cyA9IGxvZ2ljYWxTdGFydE9mTGluZShzdGFydEZvclBsYXRmb3JtKCksIHJlYWNoZWRCb3VuZGFy
eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFy
dE9mUGFyYWdyYXBoKGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeToKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9uOwogICAgICAgICBpZiAoaXNFZGl0
YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9IHN0
YXJ0T2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9z
ID0gc3RhcnRPZkRvY3VtZW50KHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxh
cml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5k
YXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBpZiAocmVh
Y2hlZEJvdW5kYXJ5KQogICAgICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJy
ZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogCiBzdGF0aWMgYm9vbCBpc0JvdW5k
YXJ5KFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICByZXR1cm4gZ3JhbnVsYXJp
dHkgPT0gTGluZUJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5IHx8
IGdyYW51bGFyaXR5ID09IERvY3VtZW50Qm91bmRhcnk7CisgICAgcmV0dXJuIGdyYW51bGFyaXR5
ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnkgfHwgZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OwogfQogCiBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBG
cmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudChFQWx0ZXJhdGlvbiBhbHRlciwgU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQpA
QCAtMTIwMiw1NSArMTIwMiw1NSBAQCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBGcmFtZVNlbGVj
dGlvbjo6CiAgICAgfSBlbHNlCiAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlU2VsZWN0aW9uRXh0ZW5kOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBj
YXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9
IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5OgogICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlXb3JkOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRl
bmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlTZW50ZW5jZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNl
bGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBo
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5Ogog
ICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlEb2N1bWVudDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJvb2wgYm91bmRh
cnkgPSBmYWxzZTsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0
ZXJHcmFudWxhcml0eToKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJh
Z3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIExpbmVCb3VuZGFy
eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKLSAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25E
aXJlY3Rpb246OlJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgog
ICAgICAgICBpZiAoYm91bmRhcnkpCiAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVj
dGlvbiA9IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmcgOiBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25FbmQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVudC5z
ZWxlY3Rpb24uZGlyZWN0aW9uID0gZmxpcCA/IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZp
b3VzIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBEaXJlY3Rpb25MZWZ0OgotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2Fz
ZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246
OkJhY2t3YXJkOgogICAgICAgICBpZiAoYm91bmRhcnkpCiAgICAgICAgICAgICBpbnRlbnQuc2Vs
ZWN0aW9uLmRpcmVjdGlvbiA9IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQgOiBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAgIGVsc2UKQEAgLTEyNjIs
NTggKzEyNjIsNTggQEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246Ogog
CiBzdGF0aWMgQVhUZXh0U2VsZWN0aW9uIHRleHRTZWxlY3Rpb25XaXRoRGlyZWN0aW9uQW5kR3Jh
bnVsYXJpdHkoU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5KQogewotICAgIC8vIEZJWE1FOiBBY2NvdW50IGZvciBCSURJIGluIERpcmVjdGlv
blJpZ2h0ICYgRGlyZWN0aW9uTGVmdC4gKEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAg
dG8gUHJldmlvdXMvQmVnaW5uaW5nIGFuZCBMZWZ0IHRvIE5leHQvRW5kLikKKyAgICAvLyBGSVhN
RTogQWNjb3VudCBmb3IgQklESSBpbiBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0ICYgU2VsZWN0
aW9uRGlyZWN0aW9uOjpMZWZ0LiAoSW4gYSBSVEwgYmxvY2ssIFJpZ2h0IHdvdWxkIG1hcCB0byBQ
cmV2aW91cy9CZWdpbm5pbmcgYW5kIExlZnQgdG8gTmV4dC9FbmQuKQogICAgIEFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvbiBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25V
bmtub3duOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3
YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICBpbnRl
bnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpSaWdodDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKKyAg
ICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgIGludGVudERpcmVj
dGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246Okxl
ZnQ6CiAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblBy
ZXZpb3VzOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHkgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25v
d247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5Ogog
ICAgICAgICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hh
cmFjdGVyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBpbnRlbnRHcmFu
dWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5V29yZDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFy
eTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVj
dCBkaXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9u
R3JhbnVsYXJpdHlTZW50ZW5jZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAg
ICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmU7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhCb3VuZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0
aW9uLgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6IC8vIEZJWE1FOiBCb3Vu
ZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkg
PSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeTog
Ly8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpEb2N1bWVudEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBk
aXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlEb2N1bWVudDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgaW50ZW50
R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmU7CiAgICAgICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICAg
ICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CiAgICAgICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQ7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25E
aXJlY3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
bkJlZ2lubmluZzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkxl
ZnQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAg
aW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEzNDQsMjUgKzEzNDQsMjUgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgIFBvc2l0aW9uIG9yaWdpbmFs
U3RhcnRQb3NpdGlvbiA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBEaXJlY3Rpb25S
aWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIGlmIChh
bHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92
aW5nUmlnaHQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ1JpZ2h0KGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlv
bkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChn
cmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nRm9yd2FyZChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlv
bjo6TGVmdDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25Nb3ZlKQogICAgICAgICAg
ICAgcG9zaXRpb24gPSBtb2RpZnlNb3ZpbmdMZWZ0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5k
YXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRp
bmdMZWZ0KGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25C
YWNrd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAg
IGlmIChhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5kKQogICAgICAgICAgICAgcG9zaXRpb24gPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKQEAgLTE0
MDIsNyArMTQwMiw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAK
ICAgICBjYXNlIEFsdGVyYXRpb25FeHRlbmQ6CiAKICAgICAgICAgaWYgKCFtX3NlbGVjdGlvbi5p
c0NhcmV0KCkKLSAgICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBXb3JkR3JhbnVsYXJpdHkg
fHwgZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0g
TGluZUdyYW51bGFyaXR5KQorICAgICAgICAgICAgJiYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHkpCiAgICAgICAgICAgICAmJiBtX2RvY3VtZW50ICYmICFtX2RvY3Vt
ZW50LT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEV4dGVuZFNlbGVjdGlvbkJ5V29yZE9yTGlu
ZUFjcm9zc0NhcmV0KCkpIHsKICAgICAgICAgICAgIC8vIERvbid0IGxldCB0aGUgc2VsZWN0aW9u
IGdvIGFjcm9zcyB0aGUgYmFzZSBwb3NpdGlvbiBkaXJlY3RseS4gTmVlZGVkIHRvIG1hdGNoIG1h
YwogICAgICAgICAgICAgLy8gYmVoYXZpb3Igd2hlbiwgZm9yIGluc3RhbmNlLCB3b3JkLXNlbGVj
dGluZyBiYWNrd2FyZHMgc3RhcnRpbmcgd2l0aCB0aGUgY2FyZXQgaW4KQEAgLTE0MjAsNyArMTQy
MCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAg
ICAgIHNldEV4dGVudChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpOwotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3
YXJkIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBkaXJlY3Rpb24g
PT0gRGlyZWN0aW9uUmlnaHQpIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJU
TCAmJiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uTGVmdCkpCisgICAgICAgICAgICBpZiAoZGlyZWN0
aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6Umln
aHQpIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCAmJiBkaXJlY3Rpb24g
PT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0KSkKICAgICAgICAgICAgICAgICBzZXRFbmQocG9z
aXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHNldFN0YXJ0KHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKQEAgLTE0MjgsMTEgKzE0MjgsMTEg
QEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSB8
fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0g
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkKICAgICAgICAgbV94UG9zRm9y
VmVydGljYWxBcnJvd05hdmlnYXRpb24gPSB4OwogCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0g
VXNlclRyaWdnZXJlZCkKLSAgICAgICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFy
aXR5OworICAgICAgICBtX2dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eTsKIAogICAgIHNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7CiAKQEAgLTE0NjQs
NyArMTQ2NCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB3aWxsQmVNb2RpZmllZChhbHRl
ciwgZGlyZWN0aW9uID09IERpcmVjdGlvblVwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rp
b25Gb3J3YXJkKTsKKyAgICB3aWxsQmVNb2RpZmllZChhbHRlciwgZGlyZWN0aW9uID09IERpcmVj
dGlvblVwID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCk7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zOwogICAgIExheW91dFVuaXQg
eFBvczsKQEAgLTE1MjQsNyArMTUyNCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShF
QWx0ZXJhdGlvbiAKICAgICB9CiAKICAgICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dl
cmVkKQotICAgICAgICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAg
ICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OwogCiAgICAgbV9zZWxlY3Rpb24uc2V0SXNEaXJlY3Rpb25hbChzaG91bGRBbHdheXNVc2VEaXJl
Y3Rpb25hbFNlbGVjdGlvbihtX2RvY3VtZW50KSB8fCBhbHRlciA9PSBBbHRlcmF0aW9uRXh0ZW5k
KTsKIApAQCAtMTU3MiwxMyArMTU3MiwxMyBAQCBMYXlvdXRVbml0IEZyYW1lU2VsZWN0aW9uOjps
aW5lRGlyZWN0aW9uCiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OmNsZWFyKCkKIHsKLSAgICBtX2dy
YW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgbV9ncmFudWxhcml0eSA9IFRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oKSk7CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246OndpbGxCZVJlbW92
ZWRGcm9tRnJhbWUoKQogewotICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0
eTsKKyAgICBtX2dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eTsKIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQogICAgIG1fY2FyZXRCbGlua1RpbWVyLnN0
b3AoKTsKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OndpbGxCZVJl
bW92ZWRGcm9tRnIKICAgICBpZiAoYXV0byogdmlldyA9IG1fZG9jdW1lbnQtPnJlbmRlclZpZXco
KSkKICAgICAgICAgdmlldy0+c2VsZWN0aW9uKCkuY2xlYXJTZWxlY3Rpb24oKTsKIAotICAgIHNl
dFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlvbigpLCBk
ZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQs
IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdB
cHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
KSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKICAgICBtX3ByZXZpb3VzQ2FyZXROb2RlID0gbnVsbHB0cjsKICAgICBt
X3R5cGluZ1N0eWxlID0gbnVsbHB0cjsKICAgICBtX2FwcGVhcmFuY2VVcGRhdGVUaW1lci5zdG9w
KCk7CkBAIC0yMTY1LDcgKzIxNjUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBl
YXJhbmNlKCkKICAgICAvLyBDb25zdHJ1Y3QgYSBuZXcgVmlzaWJsZVNvbHV0aW9uLCBzaW5jZSBt
X3NlbGVjdGlvbiBpcyBub3QgbmVjZXNzYXJpbHkgdmFsaWQsIGFuZCB0aGUgZm9sbG93aW5nIHN0
ZXBzCiAgICAgLy8gYXNzdW1lIGEgdmFsaWQgc2VsZWN0aW9uLiBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU2Mz4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMDIz
Mjg2Nj4uCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgVmlzaWJsZVBvc2l0aW9uIGVuZFZp
c2libGVQb3NpdGlvbiA9IHBhaW50QmxvY2tDdXJzb3IgPyBtb2RpZnlFeHRlbmRpbmdGb3J3YXJk
KENoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52aXNpYmxlRW5kKCk7CisgICAg
VmlzaWJsZVBvc2l0aW9uIGVuZFZpc2libGVQb3NpdGlvbiA9IHBhaW50QmxvY2tDdXJzb3IgPyBt
b2RpZnlFeHRlbmRpbmdGb3J3YXJkKFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHkpIDogb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNl
bGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIGVuZFZpc2libGVQb3NpdGlvbik7
CiAjZWxzZQogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKG9sZFNlbGVjdGlvbi52aXNp
YmxlU3RhcnQoKSwgb2xkU2VsZWN0aW9uLnZpc2libGVFbmQoKSk7CkBAIC0yNzQzLDEwICsyNzQz
LDEwIEBAIFZpc2libGVTZWxlY3Rpb24gRnJhbWVTZWxlY3Rpb246OndvcmRTZWwKICAgICAvLyBU
aGlzIGhhcyB0aGUgZWZmZWN0IG9mIHNlbGVjdGluZyB0aGUgd29yZCBvbiB0aGUgbGluZSAod2hp
Y2ggaXMKICAgICAvLyB3aGF0IHdlIHdhbnQsIHJhdGhlciB0aGFuIHNlbGVjdGluZyBwYXN0IHRo
ZSBlbmQgb2YgdGhlIGxpbmUpLgogICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKGVuZFZpc2libGVQ
b3NCZWZvcmVFeHBhbnNpb24pICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoZW5kVmlzaWJsZVBvc0Jl
Zm9yZUV4cGFuc2lvbikpCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxl
Y3Rpb24gPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKTsKLSAgICBuZXdTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIG5ld1NlbGVjdGlvbi5l
eHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsK
ICAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0
U2VsZWN0aW9uT3B0aW9ucygpLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBBbGlnbkN1cnNv
ck9uU2Nyb2xsSWZOZWVkZWQsIGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkpOwogCiAgICAg
UG9zaXRpb24gc3RhcnRQb3MoZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSk7CkBA
IC0yNzk2LDcgKzI3OTYsNyBAQCBWaXNpYmxlU2VsZWN0aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3Jk
U2VsCiAgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOwogICAgICAgICB9CiAg
ICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhzdGFydFZpc2libGVQb3MpOwotICAgICAgICBm
cmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERp
cmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFtZVNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAg
ICAgc3RhcnRQb3MgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpOwogICAgICAg
ICBlbmRQb3MgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICAgICAgc3Rh
cnRWaXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKHN0YXJ0UG9zLCBWUF9ERUZBVUxUX0FGRklO
SVRZKTsKQEAgLTI4NzIsOSArMjg3Miw5IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZVNl
bGVjdGlvbjo6cmEKIAogICAgIEZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0aW9uOwogICAgIGZy
YW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihtX3NlbGVjdGlvbik7Ci0gICAgU2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IGFtb3VudCA+IDAgPyBEaXJlY3Rpb25Gb3J3YXJkIDogRGlyZWN0
aW9uQmFja3dhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGFtb3VudCA+
IDAgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKGFtb3VudCk7IGkrKykKLSAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOworICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoYWx0ZXJhdGlvbiwg
ZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICBy
ZXR1cm4gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24g
MjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZVdpdGhv
dXRWYWxpZGF0aW9uVG8oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2Vs
ZWN0aW9uSGFzRGlyZWN0aW9uLCBib29sIHNob3VsZFNldEZvY3VzLCBTZWxlY3Rpb25SZXZlYWxN
b2RlLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCgpKTsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxl
Y3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRp
b24+ID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxp
Z25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNl
dFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9s
bElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkQ2xvc2VUeXBpbmcgOiBib29sIHsg
Tm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShSYW5n
ZSosIEVBZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkID0gTm90VXNl
clRyaWdnZXJlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5
LmgJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEdyYW51
bGFyaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAvLyBGSVhNRTogVGhpcyByZWFsbHkgc2hvdWxkIGJlIGJyb2tlbiB1cCBpbnRvIG1v
cmUgdGhhbiBvbmUgY29uY2VwdC4KIC8vIEZyYW1lIGRvZXNuJ3QgbmVlZCB0aGUgMyBib3VuZGFy
aWVzIGluIHRoaXMgZW51bS4KLWVudW0gVGV4dEdyYW51bGFyaXR5IHsKK2VudW0gY2xhc3MgVGV4
dEdyYW51bGFyaXR5IDogdWludDhfdCB7CiAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAg
V29yZEdyYW51bGFyaXR5LAogICAgIFNlbnRlbmNlR3JhbnVsYXJpdHksCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSwxNiArMTAxLDE2IEBAIHN0YXRpYyBpbmxpbmUgRWRpdEFjdGlvbiBlZGl0QWN0aW9uRm9y
VHkKICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbjoKICAgICAgICAgcmV0
dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVNlbGVjdGlvbjsKICAgICBjYXNlIFR5cGluZ0Nv
bW1hbmQ6OkRlbGV0ZUtleTogewotICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51
bGFyaXR5KQorICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHkpCiAgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRl
V29yZEJhY2t3YXJkOwotICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gTGluZUJvdW5kYXJ5KQor
ICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkp
CiAgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlTGluZUJhY2t3YXJk
OwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlQmFja3dhcmQ7CiAgICAg
fQogICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6Rm9yd2FyZERlbGV0ZUtleToKLSAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5
ID09IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAgICAgICAgcmV0dXJu
IEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVdvcmRGb3J3YXJkOwotICAgICAgICBpZiAoZ3JhbnVs
YXJpdHkgPT0gTGluZUJvdW5kYXJ5KQorICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdy
YW51bGFyaXR5OjpMaW5lQm91bmRhcnkpCiAgICAgICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6
VHlwaW5nRGVsZXRlTGluZUZvcndhcmQ7CiAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBp
bmdEZWxldGVGb3J3YXJkOwogICAgIGNhc2UgVHlwaW5nQ29tbWFuZDo6SW5zZXJ0VGV4dDoKQEAg
LTE3OSw3ICsxNzksNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZVNlbGVjdGlvbihEb2N1
CiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2N1bWVudCYgZG9jdW1l
bnQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAg
IGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkgeworICAgIGlmIChncmFu
dWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KSB7CiAgICAg
ICAgIGlmIChSZWZQdHI8VHlwaW5nQ29tbWFuZD4gbGFzdFR5cGluZ0NvbW1hbmQgPSBsYXN0VHlw
aW5nQ29tbWFuZElmU3RpbGxPcGVuRm9yVHlwaW5nKGRvY3VtZW50KSkgewogICAgICAgICAgICAg
dXBkYXRlU2VsZWN0aW9uSWZEaWZmZXJlbnRGcm9tQ3VycmVudFNlbGVjdGlvbihsYXN0VHlwaW5n
Q29tbWFuZC5nZXQoKSwgZG9jdW1lbnQpOwogICAgICAgICAgICAgbGFzdFR5cGluZ0NvbW1hbmQt
PnNldElzQXV0b2NvbXBsZXRpb24ob3B0aW9ucyAmIElzQXV0b2NvbXBsZXRpb24pOwpAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChEb2MKIHZv
aWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBPcHRpb25zIG9wdGlvbnMsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICAvLyBGSVhNRTogRm9yd2FyZCBkZWxldGUgaW4gVGV4dEVkaXQgYXBwZWFycyB0byBvcGVuIGFu
ZCBjbG9zZSBhIG5ldyB0eXBpbmcgY29tbWFuZC4KLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hh
cmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0Nv
bW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZv
clR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVy
ZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3VtZW50
KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9w
dGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFR5cGlu
Z0NvbW1hbmQ6Omluc2VydFRleHRBbmROb3RpZnlBCiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5z
ZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyhjb25zdCBTdHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0
SW5zZXJ0ZWRUZXh0KQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoSW5z
ZXJ0VGV4dCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIHRleHQpKQorICAgIGlmICghd2lsbEFkZFR5
cGluZ1RvT3BlbkNvbW1hbmQoSW5zZXJ0VGV4dCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eSwgdGV4dCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gY29tbWFuZCA9
IEluc2VydFRleHRDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dCwgc2VsZWN0SW5zZXJ0
ZWRUZXh0LApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0TGlu
ZUJyZWFrKCkKICAgICBpZiAoIWNhbkFwcGVuZE5ld0xpbmVGZWVkVG9TZWxlY3Rpb24oZW5kaW5n
U2VsZWN0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXdpbGxBZGRUeXBpbmdU
b09wZW5Db21tYW5kKEluc2VydExpbmVCcmVhaywgTGluZUdyYW51bGFyaXR5KSkKKyAgICBpZiAo
IXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydExpbmVCcmVhaywgVGV4dEdyYW51bGFy
aXR5OjpMaW5lR3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKICAgICBhcHBseUNvbW1h
bmRUb0NvbXBvc2l0ZShJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSkp
OwpAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBo
U2VwYXIKICAgICBpZiAoIWNhbkFwcGVuZE5ld0xpbmVGZWVkVG9TZWxlY3Rpb24oZW5kaW5nU2Vs
ZWN0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09w
ZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgUGFyYWdyYXBoR3JhbnVsYXJpdHkp
KQorICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0UGFyYWdyYXBoU2Vw
YXJhdG9yQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZhbHNlLCBmYWxzZSwgRWRpdEFjdGlv
bjo6VHlwaW5nSW5zZXJ0UGFyYWdyYXBoKSk7CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBUeXBp
bmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcgogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omlu
c2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCgpCiB7Ci0gICAgaWYgKCF3aWxs
QWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENv
bnRlbnQsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09w
ZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCwgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIElmIHRoZSBzZWxlY3Rpb24gc3RhcnRzIGluc2lkZSBhIHRhYmxlLCBqdXN0IGluc2VydCB0
aGUgcGFyYWdyYXBoIHNlcGFyYXRvciBub3JtYWxseQpAQCAtNjUwLDkgKzY1MCw5IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKIAogICAgICAgICBGcmFtZVNlbGVj
dGlvbiBzZWxlY3Rpb247CiAgICAgICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oZW5kaW5nU2Vs
ZWN0aW9uKCkpOwotICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgZ3JhbnVsYXJpdHkpOwotICAgICAgICBp
ZiAoc2hvdWxkQWRkVG9LaWxsUmluZyAmJiBzZWxlY3Rpb24uaXNDYXJldCgpICYmIGdyYW51bGFy
aXR5ICE9IENoYXJhY3RlckdyYW51bGFyaXR5KQotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIENo
YXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgZ3Jh
bnVsYXJpdHkpOworICAgICAgICBpZiAoc2hvdWxkQWRkVG9LaWxsUmluZyAmJiBzZWxlY3Rpb24u
aXNDYXJldCgpICYmIGdyYW51bGFyaXR5ICE9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpCisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVTdGFydCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwog
ICAgICAgICBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHByZXZpb3VzUG9zaXRpb24gPSB2aXNpYmxl
U3RhcnQucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwpAQCAtNjg3LDcgKzY4
Nyw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlS2V5UHJlc3NlZChUZXgKICAgICAgICAg
ICAgIGlmIChpc0xhc3RQb3NpdGlvbkJlZm9yZVRhYmxlKHZpc2libGVTdGFydCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBzZWxlY3Rpb24gYmFj
a3dhcmQgaW50byB0aGUgbGFzdCBjZWxsLCB0aGVuIGRlbGV0aW9uIHdpbGwgaGFuZGxlIHRoZSBt
b3ZlLgotICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgICAg
IHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgLy8gSWYgdGhl
IGNhcmV0IGlzIGp1c3QgYWZ0ZXIgYSB0YWJsZSwgc2VsZWN0IHRoZSB0YWJsZSBhbmQgZG9uJ3Qg
ZGVsZXRlIGFueXRoaW5nLgogICAgICAgICB9IGVsc2UgaWYgKE5vZGUqIHRhYmxlID0gaXNGaXJz
dFBvc2l0aW9uQWZ0ZXJUYWJsZSh2aXNpYmxlU3RhcnQpKSB7CiAgICAgICAgICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUodGFibGUpLCBl
bmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBET1dOU1RSRUFNLCBlbmRpbmdTZWxlY3Rpb24oKS5p
c0RpcmVjdGlvbmFsKCkpKTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxl
Y3Rpb24uc2VsZWN0aW9uKCk7CiAKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3Rl
ckdyYW51bGFyaXR5ICYmIHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLmNvbnRhaW5lck5vZGUoKSA9
PSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmNvbnRhaW5lck5vZGUoKQorICAgICAgICBpZiAo
Z3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBz
ZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxl
dGUuc3RhcnQoKS5jb250YWluZXJOb2RlKCkKICAgICAgICAgICAgICYmIHNlbGVjdGlvblRvRGVs
ZXRlLmVuZCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAtIHNlbGVjdGlvblRvRGVs
ZXRlLnN0YXJ0KCkuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpID4gMSkgewogICAgICAg
ICAgICAgLy8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIFVuaWNvZGUgY29kZSBwb2ludHMgdG8gYmUg
ZGVsZXRlZCwgYWRqdXN0IHRoZSByYW5nZSB0byBtYXRjaCBwbGF0Zm9ybSBjb252ZW50aW9ucy4K
ICAgICAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlLnNldFdpdGhvdXRWYWxpZGF0aW9uKHNlbGVj
dGlvblRvRGVsZXRlLmVuZCgpLCBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5wcmV2aW91cyhCYWNr
d2FyZERlbGV0aW9uKSk7CkBAIC03NzMsMTEgKzc3MywxMSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6
OmZvcndhcmREZWxldGVLZXlQcmVzCiAgICAgICAgIC8vIHJvb3QgZWRpdGFibGUgZWxlbWVudCBv
ciBhdCB0aGUgc3RhcnQgb2YgYSBkb2N1bWVudC4KICAgICAgICAgRnJhbWVTZWxlY3Rpb24gc2Vs
ZWN0aW9uOwogICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigp
KTsKLSAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgZ3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb24u
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rp
b246OkZvcndhcmQsIGdyYW51bGFyaXR5KTsKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUo
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcg
JiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxh
cml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAg
ICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBn
cmFudWxhcml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQorICAg
ICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKIAogICAgICAgICBQb3NpdGlvbiBkb3duc3RyZWFtRW5kID0gZW5kaW5n
U2VsZWN0aW9uKCkuZW5kKCkuZG93bnN0cmVhbSgpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKQEAgLTc5NSw4ICs3
OTUsOCBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBkZWxldGluZyB0byBlbmQgb2YgcGFyYWdyYXBoIHdoZW4gYXQgZW5k
IG9mIHBhcmFncmFwaCBuZWVkcyB0byBtZXJnZSB0aGUgbmV4dCBwYXJhZ3JhcGggKGlmIGFueSkK
LSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlv
bi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2Vs
ZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoQm91bmRhcnkgJiYgc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSAm
JiBpc0VuZE9mUGFyYWdyYXBoKHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpKQor
ICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5KTsKIAogICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZSA9IHNlbGVjdGlv
bi5zZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKCFzdGFydGluZ1NlbGVjdGlvbigpLmlzUmFuZ2Uo
KSB8fCBzZWxlY3Rpb25Ub0RlbGV0ZS5iYXNlKCkgIT0gc3RhcnRpbmdTZWxlY3Rpb24oKS5zdGFy
dCgpKQpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0
ZUtleVByZXMKIAogdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oYm9vbCBzbWFy
dERlbGV0ZSkKIHsKLSAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbiwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpKQorICAgIGlmICghd2lsbEFkZFR5cGluZ1Rv
T3BlbkNvbW1hbmQoRGVsZXRlU2VsZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OmRlbGV0ZVNlbGVjdGlvbihzbWFydERlbGV0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1R5cGluZ0NvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuaAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDggQEAgcHVi
bGljOgogICAgIHR5cGVkZWYgdW5zaWduZWQgT3B0aW9uczsKIAogICAgIHN0YXRpYyB2b2lkIGRl
bGV0ZVNlbGVjdGlvbihEb2N1bWVudCYsIE9wdGlvbnMgPSAwLCBUZXh0Q29tcG9zaXRpb25UeXBl
ID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7Ci0gICAgc3RhdGljIHZvaWQgZGVsZXRlS2V5UHJlc3Nl
ZChEb2N1bWVudCYsIE9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7Ci0gICAgc3RhdGljIHZvaWQgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9jdW1l
bnQmLCBPcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OworICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25zID0g
MCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgc3RhdGljIHZvaWQgZm9yd2FyZERlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBP
cHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYsIE9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25O
b25lKTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRUZXh0KERvY3VtZW50JiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUg
PSBUZXh0Q29tcG9zaXRpb25Ob25lKTsKICAgICBzdGF0aWMgdm9pZCBpbnNlcnRMaW5lQnJlYWso
RG9jdW1lbnQmLCBPcHRpb25zKTsKQEAgLTg2LDE0ICs4NiwxNCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPFR5cGluZ0NvbW1hbmQ+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIEVUeXBpbmdDb21tYW5kIGNvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCA9
IGVtcHR5U3RyaW5nKCksIE9wdGlvbnMgb3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlIGNvbXBv
c2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5vbmUpCisgICAgc3RhdGljIFJlZjxUeXBpbmdD
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5k
LCBjb25zdCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRpb25zIG9wdGlvbnMgPSAw
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlIGNvbXBvc2l0aW9uVHlwZSA9IFRleHRD
b21wb3NpdGlvbk5vbmUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBp
bmdDb21tYW5kKGRvY3VtZW50LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBncmFudWxhcml0eSwg
Y29tcG9zaXRpb25UeXBlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxUeXBpbmdDb21tYW5k
PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5kLCBjb25z
dCBTdHJpbmcmIHRleHQsIE9wdGlvbnMgb3B0aW9ucywgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21w
b3NpdGlvblR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBpbmdD
b21tYW5kKGRvY3VtZW50LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBDaGFyYWN0ZXJHcmFudWxh
cml0eSwgY29tcG9zaXRpb25UeXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFR5
cGluZ0NvbW1hbmQoZG9jdW1lbnQsIGNvbW1hbmQsIHRleHQsIG9wdGlvbnMsIFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOwogICAgIH0KIAog
ICAgIFR5cGluZ0NvbW1hbmQoRG9jdW1lbnQmLCBFVHlwaW5nQ29tbWFuZCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25zLCBUZXh0R3JhbnVsYXJpdHksIFRleHRDb21wb3NpdGlvblR5cGUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsMTIwICsyNzEsMTIwIEBAIHZvaWQgVmlzaWJsZVNl
bGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm8KICAgICB9CiAKICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICAv
LyBEb24ndCBkbyBhbnkgZXhwYW5zaW9uLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OiB7Ci0gICAgICAgICAgICAvLyBHZW5lcmFsIGNhc2U6IFNlbGVj
dCB0aGUgd29yZCB0aGUgY2FyZXQgaXMgcG9zaXRpb25lZCBpbnNpZGUgb2YsIG9yIGF0IHRoZSBz
dGFydCBvZiAoUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KS4KLSAgICAgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQg
bGluZSBvciB0aGUgbGFzdCB3b3JkIGluCi0gICAgICAgICAgICAvLyB0aGUgZG9jdW1lbnQsIHNl
bGVjdCB0aGF0IGxhc3Qgd29yZCAoTGVmdFdvcmRJZk9uQm91bmRhcnkpLgotICAgICAgICAgICAg
Ly8gRWRnZSBjYXNlOiBJZiB0aGUgY2FyZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qgd29yZCBpbiBhIHBh
cmFncmFwaCwgc2VsZWN0IGZyb20gdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgIC8vIGxhc3Qg
d29yZCB0byB0aGUgbGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRhcnkpOwotICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQs
IG1fYWZmaW5pdHkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG9yaWdpbmFsRW5kKG1f
ZW5kLCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIEVXb3JkU2lkZSBzaWRlID0gUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFi
bGVDb250ZW50KHN0YXJ0KSB8fCAoaXNFbmRPZkxpbmUoc3RhcnQpICYmICFpc1N0YXJ0T2ZMaW5l
KHN0YXJ0KSAmJiAhaXNFbmRPZlBhcmFncmFwaChzdGFydCkpKQotICAgICAgICAgICAgICAgIHNp
ZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
V29yZChzdGFydCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIHNpZGUgPSBS
aWdodFdvcmRJZk9uQm91bmRhcnk7Ci0gICAgICAgICAgICBpZiAoaXNFbmRPZkVkaXRhYmxlT3JO
b25FZGl0YWJsZUNvbnRlbnQob3JpZ2luYWxFbmQpIHx8IChpc0VuZE9mTGluZShvcmlnaW5hbEVu
ZCkgJiYgIWlzU3RhcnRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc0VuZE9mUGFyYWdyYXBoKG9y
aWdpbmFsRW5kKSkpCi0gICAgICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJvdW5kYXJ5
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRFbmQo
ZW5kT2ZXb3JkKG9yaWdpbmFsRW5kLCBzaWRlKSk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gZW5kKHdvcmRFbmQpOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eToKKyAgICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFuc2lvbi4KKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTogeworICAgICAg
ICAvLyBHZW5lcmFsIGNhc2U6IFNlbGVjdCB0aGUgd29yZCB0aGUgY2FyZXQgaXMgcG9zaXRpb25l
ZCBpbnNpZGUgb2YsIG9yIGF0IHRoZSBzdGFydCBvZiAoUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KS4K
KyAgICAgICAgLy8gRWRnZSBjYXNlOiBJZiB0aGUgY2FyZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qgd29y
ZCBpbiBhIHNvZnQtd3JhcHBlZCBsaW5lIG9yIHRoZSBsYXN0IHdvcmQgaW4KKyAgICAgICAgLy8g
dGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBsYXN0IHdvcmQgKExlZnRXb3JkSWZPbkJvdW5kYXJ5
KS4KKyAgICAgICAgLy8gRWRnZSBjYXNlOiBJZiB0aGUgY2FyZXQgaXMgYWZ0ZXIgdGhlIGxhc3Qg
d29yZCBpbiBhIHBhcmFncmFwaCwgc2VsZWN0IGZyb20gdGhlIGVuZCBvZiB0aGUKKyAgICAgICAg
Ly8gbGFzdCB3b3JkIHRvIHRoZSBsaW5lIGJyZWFrIChhbHNvIFJpZ2h0V29yZElmT25Cb3VuZGFy
eSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0
YXJ0LCBtX2FmZmluaXR5KTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG9yaWdpbmFsRW5kKG1f
ZW5kLCBtX2FmZmluaXR5KTsKKyAgICAgICAgRVdvcmRTaWRlIHNpZGUgPSBSaWdodFdvcmRJZk9u
Qm91bmRhcnk7CisgICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVu
dChzdGFydCkgfHwgKGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGluZShzdGFydCkg
JiYgIWlzRW5kT2ZQYXJhZ3JhcGgoc3RhcnQpKSkKKyAgICAgICAgICAgIHNpZGUgPSBMZWZ0V29y
ZElmT25Cb3VuZGFyeTsKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0LCBzaWRl
KS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
OworICAgICAgICBpZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQob3JpZ2lu
YWxFbmQpIHx8IChpc0VuZE9mTGluZShvcmlnaW5hbEVuZCkgJiYgIWlzU3RhcnRPZkxpbmUob3Jp
Z2luYWxFbmQpICYmICFpc0VuZE9mUGFyYWdyYXBoKG9yaWdpbmFsRW5kKSkpCisgICAgICAgICAg
ICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHdvcmRFbmQoZW5kT2ZXb3JkKG9yaWdpbmFsRW5kLCBzaWRlKSk7CisgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQod29yZEVuZCk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNFbmRPZlBhcmFn
cmFwaChvcmlnaW5hbEVuZCkgJiYgIWlzRW1wdHlUYWJsZUNlbGwobV9zdGFydC5kZXByZWNhdGVk
Tm9kZSgpKSkgeworICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBwYXJhZ3JhcGggYnJlYWsgKHRo
ZSBzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0IG9mIAorICAg
ICAgICAgICAgLy8gdGhlIG5leHQgb25lKSB0byBtYXRjaCBUZXh0RWRpdC4KKyAgICAgICAgICAg
IGVuZCA9IHdvcmRFbmQubmV4dCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNF
bmRPZlBhcmFncmFwaChvcmlnaW5hbEVuZCkgJiYgIWlzRW1wdHlUYWJsZUNlbGwobV9zdGFydC5k
ZXByZWNhdGVkTm9kZSgpKSkgewotICAgICAgICAgICAgICAgIC8vIFNlbGVjdCB0aGUgcGFyYWdy
YXBoIGJyZWFrICh0aGUgc3BhY2UgZnJvbSB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoIHRvIHRoZSBz
dGFydCBvZiAKLSAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dCBvbmUpIHRvIG1hdGNoIFRleHRF
ZGl0LgotICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQubmV4dCgpOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFm
dGVyVGFibGUoZW5kKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGFyYWdyYXBoIGJy
ZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGEgYmxvY2sg
dGFibGUgZW5kcwotICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgdGhlIHBh
cmFncmFwaCBhZnRlciB0aGUgdGFibGUuCi0gICAgICAgICAgICAgICAgICAgIGlmIChpc0Jsb2Nr
KHRhYmxlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENy
b3NzRWRpdGluZ0JvdW5kYXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgZW5kID0gd29yZEVuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGVuZC5pc051bGwoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZW5kID0gd29yZEVuZDsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZh
bGVudCgpOwotICAgICAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9yZSBzdGFydC4KLSAg
ICAgICAgICAgIGlmIChtX3N0YXJ0LmRlcHJlY2F0ZWROb2RlKCkgPT0gbV9lbmQuZGVwcmVjYXRl
ZE5vZGUoKSAmJiBtX3N0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBtX2VuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKSB7Ci0gICAgICAgICAgICAgICAgUG9zaXRpb24gc3dhcCht
X3N0YXJ0KTsKLSAgICAgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAgIAotICAgICAgICAg
ICAgICAgIG1fZW5kID0gc3dhcDsgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKLSAgICAg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQs
IG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgbV9lbmQgPSBlbmRP
ZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFs
ZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIExpbmVH
cmFudWxhcml0eTogewotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZMaW5lKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBlbmRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fZW5k
LCBtX2FmZmluaXR5KSk7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgZW5kIG9mIHRoaXMgbGluZSBp
cyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLCBpbmNsdWRlIHRoZSBzcGFjZSAKLSAgICAgICAg
ICAgIC8vIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGxpbmUgaW4gdGhlIHNlbGVjdGlvbi4KLSAgICAg
ICAgICAgIGlmIChpc0VuZE9mUGFyYWdyYXBoKGVuZCkpIHsKLSAgICAgICAgICAgICAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dCA9IGVuZC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHQu
aXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IG5leHQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAg
ICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZm
aW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkxpbmUo
VmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OiB7Ci0g
ICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1fc3RhcnQsIG1fYWZmaW5pdHkpOwotICAg
ICAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChwb3MpKQotICAgICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cygp
OwotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgocG9zKS5kZWVwRXF1aXZh
bGVudCgpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQg
PSBlbmRPZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgLy8gSW5jbHVkZSB0aGUgInBhcmFncmFwaCBicmVhayIg
KHRoZSBzcGFjZSBmcm9tIHRoZSBlbmQgb2YgdGhpcyBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0Ci0g
ICAgICAgICAgICAvLyBvZiB0aGUgbmV4dCBvbmUpIGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gZW5kKHZpc2libGVQYXJhZ3JhcGhFbmQubmV4dCgpKTsKLSAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlv
bkFmdGVyVGFibGUoZW5kKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHRhYmxlID0gaXNGaXJz
dFBvc2l0aW9uQWZ0ZXJUYWJsZShlbmQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFn
cmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IGJsb2NrIHRhYmxlIGVuZHMKLSAgICAgICAgICAgICAgICAvLyBhdCB0aGUgc3RhcnQgb2YgdGhl
IHBhcmFncmFwaCBhZnRlciB0aGUgdGFibGUsIG5vdCBhdCB0aGUgcG9zaXRpb24ganVzdCBhZnRl
ciB0aGUgdGFibGUuCisgICAgICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJh
Z3JhcGggYWZ0ZXIgdGhlIHRhYmxlLgogICAgICAgICAgICAgICAgIGlmIChpc0Jsb2NrKHRhYmxl
KSkKICAgICAgICAgICAgICAgICAgICAgZW5kID0gZW5kLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOwotICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHBhcmFyZ3JhcGggYnJl
YWsgYWZ0ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYW4gaW5saW5l
IHRhYmxlLgogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZW5kID0g
dmlzaWJsZVBhcmFncmFwaEVuZDsKKyAgICAgICAgICAgICAgICAgICAgZW5kID0gd29yZEVuZDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAKKyAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKGVuZC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxlUGFyYWdyYXBo
RW5kOworICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQ7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgotICAgICAgICAg
ICAgbV9zdGFydCA9IHN0YXJ0T2ZEb2N1bWVudChtX3N0YXJ0LmRvY3VtZW50KCkpLmRlZXBFcXVp
dmFsZW50KCk7Ci0gICAgICAgICAgICBtX2VuZCA9IGVuZE9mRG9jdW1lbnQobV9lbmQuZG9jdW1l
bnQoKSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFBhcmFncmFwaEJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3Jh
cGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgp
OwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9l
bmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFy
dE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICAvLyBFbmQgbXVzdCBu
b3QgYmUgYmVmb3JlIHN0YXJ0LgorICAgICAgICBpZiAobV9zdGFydC5kZXByZWNhdGVkTm9kZSgp
ID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkgeworICAgICAgICAgICAg
UG9zaXRpb24gc3dhcChtX3N0YXJ0KTsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBtX2VuZDsgICAg
CisgICAgICAgICAgICBtX2VuZCA9IHN3YXA7ICAgIAorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eTog
eworICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0
YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRP
ZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFs
ZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5OiB7CisgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxl
UG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IFZpc2libGVQb3NpdGlvbiBlbmQgPSBlbmRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBt
X2FmZmluaXR5KSk7CisgICAgICAgIC8vIElmIHRoZSBlbmQgb2YgdGhpcyBsaW5lIGlzIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGgsIGluY2x1ZGUgdGhlIHNwYWNlIAorICAgICAgICAvLyBhZnRl
ciB0aGUgZW5kIG9mIHRoZSBsaW5lIGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIGlmIChpc0Vu
ZE9mUGFyYWdyYXBoKGVuZCkpIHsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBuZXh0ID0g
ZW5kLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChuZXh0LmlzTm90TnVsbCgpKQorICAgICAgICAg
ICAgICAgIGVuZCA9IG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVx
dWl2YWxlbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lQm91bmRhcnk6CisgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxl
UG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eTogeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKG1f
c3RhcnQsIG1fYWZmaW5pdHkpOworICAgICAgICBpZiAoaXNTdGFydE9mTGluZShwb3MpICYmIGlz
RW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KHBvcykpCisgICAgICAgICAgICBwb3Mg
PSBwb3MucHJldmlvdXMoKTsKKyAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgocG9z
KS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBhcmFn
cmFwaEVuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0
eSkpOworICAgICAgICAKKyAgICAgICAgLy8gSW5jbHVkZSB0aGUgInBhcmFncmFwaCBicmVhayIg
KHRoZSBzcGFjZSBmcm9tIHRoZSBlbmQgb2YgdGhpcyBwYXJhZ3JhcGggdG8gdGhlIHN0YXJ0Cisg
ICAgICAgIC8vIG9mIHRoZSBuZXh0IG9uZSkgaW4gdGhlIHNlbGVjdGlvbi4KKyAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGVuZCh2aXNpYmxlUGFyYWdyYXBoRW5kLm5leHQoKSk7CisKKyAgICAgICAg
aWYgKE5vZGUqIHRhYmxlID0gaXNGaXJzdFBvc2l0aW9uQWZ0ZXJUYWJsZShlbmQpKSB7CisgICAg
ICAgICAgICAvLyBUaGUgcGFyYWdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFwaCBp
biB0aGUgbGFzdCBjZWxsIG9mIGEgYmxvY2sgdGFibGUgZW5kcworICAgICAgICAgICAgLy8gYXQg
dGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhlIHRhYmxlLCBub3QgYXQgdGhlIHBv
c2l0aW9uIGp1c3QgYWZ0ZXIgdGhlIHRhYmxlLgorICAgICAgICAgICAgaWYgKGlzQmxvY2sodGFi
bGUpKQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKKyAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHBhcmFyZ3JhcGggYnJlYWsgYWZ0
ZXIgdGhlIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYW4gaW5saW5lIHRhYmxl
LgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3Jh
cGhFbmQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5kLmlzTnVsbCgpKQorICAgICAgICAg
ICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKKworICAgICAgICBtX2VuZCA9IGVuZC5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CisgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mRG9jdW1l
bnQobV9zdGFydC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9
IGVuZE9mRG9jdW1lbnQobV9lbmQuZG9jdW1lbnQoKSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5Ogor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChWaXNpYmxlUG9zaXRpb24obV9zdGFy
dCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZQ
YXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxl
bnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnk6CisgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0
aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2Vu
ZCA9IGVuZE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvIG5vdCBoYXZl
IGEgZGFuZ2xpbmcgc3RhcnQgb3IgZW5kLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpbmNsdWRlICJUZXh0R3JhbnVsYXJpdHkuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM1LDcgKzM2LDcgQEAgY2xhc3MgUG9zaXRpb247CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CiAKIGNvbnN0IEVBZmZpbml0eSBTRUxfREVGQVVMVF9BRkZJTklUWSA9IERPV05TVFJFQU07Ci1l
bnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3QgeyBEaXJlY3Rpb25Gb3J3YXJkLCBEaXJl
Y3Rpb25CYWNrd2FyZCwgRGlyZWN0aW9uUmlnaHQsIERpcmVjdGlvbkxlZnQgfTsKK2VudW0gY2xh
c3MgU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IEZvcndhcmQsIEJhY2t3YXJkLCBSaWdo
dCwgTGVmdCB9OwogCiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uIHsKIHB1YmxpYzoKQEAgLTExNyw3
ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaXRob3V0VmFsaWRhdGlvbihjb25zdCBQ
b3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB2YWxpZGF0
ZShUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgdm9pZCB2YWxp
ZGF0ZShUZXh0R3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKIAogICAgIC8vIFN1cHBvcnQgbWV0aG9kcyBmb3IgdmFsaWRhdGUoKQogICAgIHZvaWQg
c2V0QmFzZUFuZEV4dGVudFRvRGVlcEVxdWl2YWxlbnRzKCk7CkBAIC0xNjQsMyArMTY1LDE3IEBA
IFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3IKIHZvaWQgc2hvd1RyZWUo
Y29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpOwogdm9pZCBzaG93VHJlZShjb25zdCBX
ZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uKik7CiAjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U2Vs
ZWN0aW9uRGlyZWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkZv
cndhcmQsCisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsCisg
ICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsCisgICAgICAgIFdlYkNv
cmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlz
aW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU1OCwyMCArMTU1OCwyMCBAQCBWaXNpYmxlUG9zaXRpb24gcmln
aHRCb3VuZGFyeU9mTGluZShjb25zCiAKIHN0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVh
bShTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0g
RGlyZWN0aW9uQmFja3dhcmQpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZWxzZSBpZiAoZGlyZWN0
aW9uID09IERpcmVjdGlvbkZvcndhcmQpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6
IHRoaXMgY29kZSBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmlnaW5hbCBkaXJlY3Rp
b24gb2YgdGhlIGVsZW1lbnQuCiAgICAgLy8gSSdtIG5vdCBmaXhpbmcgdGhpcyBub3cgYmVjYXVz
ZSBJJ20gYWZyYWlkIHRoZXJlIGlzIHNvbWUgY29kZSBpbiBVSUtpdCByZWx5aW5nIG9uCiAgICAg
Ly8gdGhpcyB3cm9uZyBiZWhhdmlvci4KLSAgICByZXR1cm4gZGlyZWN0aW9uID09IERpcmVjdGlv
blJpZ2h0OworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdo
dDsKIH0KIAogYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5
KQorICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBib3Vu
ZGFyeTsKQEAgLTE1NzksNyArMTU3OSw3IEBAIGJvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
Y29uc3QgVmlzaWIKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJl
YW0oZGlyZWN0aW9uKTsKIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdv
cmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5
OgogICAgICAgICAvLyB2aXNpYmxlX3VuaXRzIGNsYWltcyBlcnJvbmVvdXNseSB0aGF0IHRoZSBz
dGFydCBhbmQgdGhlIGVuZAogICAgICAgICAvLyBvZiBhIHBhcmFncmFwaCBhcmUgdGhlIGVuZCBh
bmQgc3RhcnQgb2YgYSB3b3JkLCByZXNwZWN0aXZlbHkuCiAgICAgICAgIGlmICgodXNlRG93bnN0
cmVhbSAmJiBpc1N0YXJ0T2ZQYXJhZ3JhcGgodnApKSB8fCAoIXVzZURvd25zdHJlYW0gJiYgaXNF
bmRPZlBhcmFncmFwaCh2cCkpKQpAQCAtMTU4OSwyMiArMTU4OSwyMiBAQCBib29sIGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0
cmVhbSA/IGVuZE9mV29yZCh2cCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpIDogc3RhcnRPZldvcmQo
dnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZlNlbnRl
bmNlKHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbih2cCkpIDogc3RhcnRPZlNlbnRlbmNlKG5leHRT
ZW50ZW5jZVBvc2l0aW9uKHZwKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAg
ICAgICAgLy8gQWZmaW5pdHkgaGFzIHRvIGJlIHNldCB0byBnZXQgcmlnaHQgYm91bmRhcnkgb2Yg
dGhlIGxpbmUuCiAgICAgICAgIGJvdW5kYXJ5ID0gdnA7CiAgICAgICAgIGJvdW5kYXJ5LnNldEFm
ZmluaXR5KHVzZURvd25zdHJlYW0gPyBWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSA6IERPV05TVFJF
QU0pOwogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkxpbmUoYm91bmRh
cnkpIDogc3RhcnRPZkxpbmUoYm91bmRhcnkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEdyYW51bGFyaXR5OgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZlBh
cmFncmFwaCh2cCkgOiBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVu
ZE9mRG9jdW1lbnQodnApIDogc3RhcnRPZkRvY3VtZW50KHZwKTsKICAgICAgICAgYnJlYWs7CiAK
QEAgLTE2MTgsNyArMTYxOCw3IEBAIGJvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29uc3Qg
VmlzaWIKIAogYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uKQogewotICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBEb2N1bWVudEdyYW51bGFyaXR5KQorICAgIGlmIChncmFu
dWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IHx8IGdyYW51
bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oZGlyZWN0aW9uKTsKQEAgLTE2MjcsNyArMTYyNyw3IEBAIGJvb2wgd2l0aGluVGV4dFVu
aXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dEJvdW5kYXJ5
OwogICAgIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICAvLyBOb3RlIHRoYXQgIkxlZnQiIGFuZCAiUmlnaHQiIGluIHRoaXMgY29udGV4dCBhcHBhcmVu
dGx5IG1lYW4gInVwc3RyZWFtL3ByZXZpb3VzIiBhbmQgImRvd25zdHJlYW0vbmV4dCIuCiAgICAg
ICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZXb3JkKHZwLCAodXNlRG93bnN0cmVhbSA/IFJpZ2h0
V29yZElmT25Cb3VuZGFyeSA6IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSk7CiAgICAgICAgIG5leHRC
b3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91
bmRhcnkgOiBMZWZ0V29yZElmT25Cb3VuZGFyeSkpOwpAQCAtMTYzOCwxMiArMTYzOCwxMiBAQCBi
b29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25zdCBWCiAKICAgICAgICAgYnJlYWs7
CiAKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZT
ZW50ZW5jZSh2cCk7CiAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2UodnApOwog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZMaW5lKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKIApA
QCAtMTY1NSw3ICsxNjU1LDcgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29u
c3QgVgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6
CiAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZQYXJhZ3JhcGgodnApOwogICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBlbmRPZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4
NSw3ICsxNjg1LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Q2hhcmFjdGVyQm91bgog
c3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAg
ICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGlyZWN0aW9uKTsK
LSAgICBib29sIHdpdGhpblVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRPZkdyYW51
bGFyaXR5KHZwLCBXb3JkR3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5V
bml0T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHJlc3VsdDsKICAgICAKICAgICBpZiAodXNlRG93bnN0cmVhbSkgewpAQCAtMTc1OSw3ICsx
NzU5LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJvdW5kYXJ5SQogc3RhdGlj
IFZpc2libGVQb3NpdGlvbiBuZXh0U2VudGVuY2VCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdnAsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAg
Ym9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7Ci0g
ICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxh
cml0eSh2cCwgU2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICBib29sIHdpdGhp
blVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHJlc3VsdDsKIAogICAgIGlmICh3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSkKQEAg
LTE4MDEsOSArMTgwMSw5IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaEJv
dW4KIHsKICAgICBhdXRvIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oZGly
ZWN0aW9uKTsKICAgICBhdXRvIGxpbmVEaXJlY3Rpb24gPSBwb3NpdGlvbi5saW5lRGlyZWN0aW9u
UG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oKTsKLSAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQor
ICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIHVzZURv
d25zdHJlYW0gPyBzdGFydE9mUGFyYWdyYXBoKG5leHRQYXJhZ3JhcGhQb3NpdGlvbihwb3NpdGlv
biwgbGluZURpcmVjdGlvbikpIDogZW5kT2ZQYXJhZ3JhcGgocHJldmlvdXNQYXJhZ3JhcGhQb3Np
dGlvbihwb3NpdGlvbiwgbGluZURpcmVjdGlvbikpOwotICAgIEFTU0VSVCh3aXRoaW5UZXh0VW5p
dE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBkaXJlY3Rpb24p
KTsKKyAgICBBU1NFUlQod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0
R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKTsKICAgICByZXR1
cm4gdXNlRG93bnN0cmVhbSA/IGVuZE9mUGFyYWdyYXBoKHBvc2l0aW9uKSA6IHN0YXJ0T2ZQYXJh
Z3JhcGgocG9zaXRpb24pOwogfQogCkBAIC0xODE1LDE3ICsxODE1LDE3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dERvY3VtZW50Qm91bmQKIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAg
ICAgICByZXR1cm4gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlv
biwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHJldHVy
biBuZXh0V29yZEJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlv
bih2cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dExpbmVC
b3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgUGFyYWdyYXBoR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5
OgogICAgICAgICByZXR1cm4gbmV4dFBhcmFncmFwaEJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRp
cmVjdGlvbik7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dERvY3Vt
ZW50Qm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE4NDQsNTIgKzE4NDQsNTIgQEAgUmVmUHRy
PFJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYQogICAgIGJvb2wgdXNlRG93bnN0cmVh
bSA9IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwogCiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgcHJldkJvdW5kYXJ5ID0gdnA7Ci0gICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBwcmV2Qm91
bmRhcnkubmV4dCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXb3JkR3Jh
bnVsYXJpdHk6Ci0gICAgICAgICAgICAvLyBOQjogIkxlZnQiIGFuZCAiUmlnaHQiIGluIHRoaXMg
Y29udGV4dCBhcHBhcmVudGx5IG1lYW4gInVwc3RyZWFtL3ByZXZpb3VzIiBhbmQgImRvd25zdHJl
YW0vbmV4dCIuCi0gICAgICAgICAgICBpZiAodXNlRG93bnN0cmVhbSkgewotICAgICAgICAgICAg
ICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91bmRhcnkp
OwotICAgICAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgUmlnaHRXb3Jk
SWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJl
dkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAg
ICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5k
YXJ5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0g
dnA7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IHByZXZCb3VuZGFyeS5uZXh0KCk7CisgICAgICAg
IGJyZWFrOwogCi0gICAgICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgICAg
IHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZTZW50ZW5jZSh2cCk7Ci0gICAgICAgICAgICBuZXh0Qm91
bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRP
ZkxpbmUodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKLQot
ICAgICAgICAgICAgaWYgKHByZXZCb3VuZGFyeSA9PSBuZXh0Qm91bmRhcnkpIHsKLSAgICAgICAg
ICAgICAgICBuZXh0Qm91bmRhcnkgPSBuZXh0TGluZVBvc2l0aW9uKG5leHRCb3VuZGFyeSwgMCk7
Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNldEFmZmluaXR5KFVQU1RSRUFNKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIWluU2FtZUxpbmUocHJldkJvdW5kYXJ5LCBuZXh0Qm91bmRhcnkp
KQotICAgICAgICAgICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSB2cC5uZXh0KCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5OgorICAgICAgICAvLyBOQjogIkxlZnQiIGFuZCAiUmlnaHQiIGluIHRoaXMg
Y29udGV4dCBhcHBhcmVudGx5IG1lYW4gInVwc3RyZWFtL3ByZXZpb3VzIiBhbmQgImRvd25zdHJl
YW0vbmV4dCIuCisgICAgICAgIGlmICh1c2VEb3duc3RyZWFtKSB7CisgICAgICAgICAgICBwcmV2
Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAg
ICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZX
b3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZldvcmQodnAsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKIAotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlBhcmFncmFwaCh2cCk7Ci0gICAgICAgICAgICBuZXh0
Qm91bmRhcnkgPSBlbmRPZlBhcmFncmFwaCh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkg
PSBzdGFydE9mRG9jdW1lbnQodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZE
b2N1bWVudCh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICAg
ICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlNlbnRlbmNlKHZwKTsKKyAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3Rh
cnRPZkxpbmUodnApOworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkxpbmUodnApOworCisg
ICAgICAgIGlmIChwcmV2Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7CisgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBuZXh0TGluZVBvc2l0aW9uKG5leHRCb3VuZGFyeSwgMCk7CisgICAgICAg
ICAgICBuZXh0Qm91bmRhcnkuc2V0QWZmaW5pdHkoVVBTVFJFQU0pOworICAgICAgICAgICAgaWYg
KCFpblNhbWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKKyAgICAgICAgICAgICAg
ICBuZXh0Qm91bmRhcnkgPSB2cC5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAg
IHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZQYXJhZ3JhcGgodnApOworICAgICAgICBuZXh0Qm91bmRh
cnkgPSBlbmRPZlBhcmFncmFwaCh2cCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9
IHN0YXJ0T2ZEb2N1bWVudCh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1l
bnQodnApOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
cHJldkJvdW5kYXJ5LmlzTnVsbCgpIHx8IG5leHRCb3VuZGFyeS5pc051bGwoKSkKQEAgLTE5MjEs
MTQgKzE5MjEsMTQgQEAgdm9pZCBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oY29uc3QgVmlzaQog
ICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0gcG9zaXRpb247CiAKLSAgICBWaXNpYmxlUG9zaXRpb24g
bmV4dFBvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24s
IERpcmVjdGlvbkZvcndhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dFBvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rp
b24ocG9zaXRpb24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0
aW5nQm91bmRhcnkpOwogICAgIGlmIChuZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAg
IGVuZFBvc2l0aW9uID0gbmV4dFBvc2l0aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzUG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwg
RGlyZWN0aW9uQmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gcHJldmlvdXNQb3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGly
ZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBDYW5ub3RDcm9z
c0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkp
IHsKICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHByZXZpb3VzUG9zaXRpb247Ci0gICAgICAgIHBy
ZXZpb3VzUG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwcmV2aW91
c1Bvc2l0aW9uLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
OworICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJl
Y3Rpb24ocHJldmlvdXNQb3NpdGlvbiwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5p
c05vdE51bGwoKSkKICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9u
OwogICAgIH0KQEAgLTE5NTIsMTEgKzE5NTIsMTEgQEAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VG
cm9tUG9zaXRpb24oY29ucwogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVu
aXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3
YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51
bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAKICAgICBpZiAoIXJhbmdlKSB7CiAgICAgICAgIC8v
IFdlIGNvdWxkIGJlIGF0IHRoZSBzdGFydCBvZiBhIHdvcmQsIHRyeSBmb3J3YXJkLgotICAgICAg
ICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0KIAogICAgIGlmIChy
YW5nZSkKQEAgLTE5NjQsMTEgKzE5NjQsMTEgQEAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9t
UG9zaXRpb24oY29ucwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IHBv
c2l0aW9uOwogICAgIGRvIHsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICB9IHdoaWxlIChjdXJyZW50UG9zaXRpb24uaXNOb3RO
dWxsKCkgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOworICAgICAgICBjdXJyZW50UG9zaXRpb24g
PSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkKTsKKyAgICB9IHdoaWxlIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgIWF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKIAogICAgIGlmIChj
dXJyZW50UG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0
aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAKICAgICBpZiAoY3Vy
cmVudFBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCks
IGN1cnJlbnRQb3NpdGlvbiwgcG9zaXRpb24pOwpAQCAtMTk4MywyMyArMTk4MywyMyBAQCBWaXNp
YmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBvCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHJlc3VsdDsKIAogICAgIC8vIG1vdmUgdGhlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHdv
cmQKLSAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgIC8vIERvbid0IGNyb3NzIGxpbmUgYm91bmRh
cmllcy4KICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247Ci0gICAgfSBlbHNlIGlmICh3aXRoaW5U
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCkpIHsKKyAgICB9IGVsc2UgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCkpIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGxpZXMgd2l0aGluIGEg
d29yZC4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5p
dE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2Fy
ZCk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgICAgICByZXN1bHQgPSB3b3JkUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9u
cyhwb3NpdGlvbiwgcmVzdWx0KSA+IDEpCiAgICAgICAgICAgICByZXN1bHQgPSB3b3JkUmFuZ2Ut
PmVuZFBvc2l0aW9uKCk7Ci0gICAgfSBlbHNlIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpIHsKKyAgICB9IGVs
c2UgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpIHsKICAgICAg
ICAgLy8gVGhlIHBvc2l0aW9uIGlzIGF0IHRoZSBlbmQgb2YgYSB3b3JkLgogICAgICAgICByZXN1
bHQgPSBwb3NpdGlvbjsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBUaGUgcG9zaXRpb24gaXMg
bm90IHdpdGhpbiBhIHdvcmQuCiAgICAgICAgIC8vIEdvIHRvIHRoZSBuZXh0IGJvdW5kYXJ5Lgot
ICAgICAgICByZXN1bHQgPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcmVzdWx0
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwog
CiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1Y2ggYm91bmRhcnkgd2UgZ28gdG8gdGhlIGVu
ZCBvZiB0aGUgZWxlbWVudC4KICAgICAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKQEAgLTIwMTMs
MTUgKzIwMTMsMTUgQEAgUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSQog
ICAgIFBvc2l0aW9uIHN0YXJ0ID0gcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKICAgICBQb3Np
dGlvbiBlbmQgPSBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBhbmQ7ICsraSkgewotICAgICAgICBpZiAoZGly
ZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpCiAgICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnBy
ZXZpb3VzKENoYXJhY3Rlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVuZCA9IGVuZC5u
ZXh0KENoYXJhY3Rlcik7CiAgICAgfQogICAgIAotICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uQmFja3dhcmQgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHN0YXJ0LCBXb3JkR3JhbnVs
YXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSkKKyAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlv
bkRpcmVjdGlvbjo6QmFja3dhcmQgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHN0YXJ0LCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCkpCiAgICAgICAgIHN0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJkICYmICFhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShlbmQsIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpCisg
ICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgJiYgIWF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGVuZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpCiAgICAgICAgIGVuZCA9IGVuZE9mV29yZChl
bmQpLmRlZXBFcXVpdmFsZW50KCk7CiAKICAgICByZXR1cm4gbWFrZVJhbmdlKHN0YXJ0LCBlbmQp
OwpAQCAtMjA0MSwxMiArMjA0MSwxMiBAQCBSZWZQdHI8UmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91
bmRQb3NpdGlvCiAKIHN0ZDo6cGFpcjxWaXNpYmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3VuZGFy
eT4gd29yZEJvdW5kYXJ5Rm9yUG9zaXRpb25XaXRob3V0Q3Jvc3NpbmdMaW5lKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChh
dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpCiAgICAgICAgIHJldHVybiB7
IHBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiAKLSAgICBpZiAod2l0aGluVGV4
dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpKSB7CisgICAgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpIHsKICAgICAgICAgYXV0byBhZGp1c3RlZFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
ICAgIGlmIChhdXRvIHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgICAgICBp
ZiAoYXV0byB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQpKSB7CiAgICAgICAgICAgICBhZGp1c3RlZFBvc2l0aW9uID0gd29yZFJhbmdlLT5z
dGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBpZiAoZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25z
KHBvc2l0aW9uLCBhZGp1c3RlZFBvc2l0aW9uKSA+IDEpCiAgICAgICAgICAgICAgICAgYWRqdXN0
ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+ZW5kUG9zaXRpb24oKTsKQEAgLTIwNTQsMTAgKzIwNTQs
MTAgQEAgc3RkOjpwYWlyPFZpc2libGVQb3NpdGlvbiwgV2l0aGluV29yZEJvdQogICAgICAgICBy
ZXR1cm4geyBhZGp1c3RlZFBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk6OlllcyB9OwogICAg
IH0KIAotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51
bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCkpCiAgICAgICAgIHJldHVybiB7IHBvc2l0aW9uLCBXaXRoaW5X
b3JkQm91bmRhcnk6Ok5vIH07CiAKLSAgICBhdXRvIG5leHRXb3JkQm91bmRhcnkgPSBwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBE
aXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBhdXRvIG5leHRXb3JkQm91bmRhcnkgPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgcmV0dXJuIHsg
bmV4dFdvcmRCb3VuZGFyeS5pc05vdE51bGwoKSA/IG5leHRXb3JkQm91bmRhcnkgOiBlbmRPZkVk
aXRhYmxlQ29udGVudChwb3NpdGlvbiksIFdpdGhpbldvcmRCb3VuZGFyeTo6Tm8gfTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQko
cmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0aW9uYWw8RGV0
ZWN0ZWRJdGVtPiBEYXRhRGV0ZWN0aW9uOjpkZQogICAgICAgICBpZiAocG9zaXRpb24uaXNOdWxs
KCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogCi0gICAgICAgIGNvbnRleHRSYW5nZSA9IGVu
Y2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBE
aXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgY29udGV4dFJhbmdlID0gZW5jbG9zaW5nVGV4dFVu
aXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0
eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAoIWNvbnRl
eHRSYW5nZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxv
b2t1cC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rp
b25hcnlMb29rdXAubW0JKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMz
OCw3IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICoKICAgICAgICAg
aGl0SW5kZXggPSBjaGFyYWN0ZXJDb3VudCh7ICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhT
dGFydCksICptYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbikgfSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsg
cG9zaXRpb24gfTsKLSAgICAgICAgc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbkFj
Y291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgIHBvc2l0aW9uID0gc2VsZWN0aW9uQWNjb3Vu
dGluZ0ZvckxpbmVSdWxlcy5zdGFydCgpOwogCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFy
ZSBnb2luZyB0byB1c2UgMjUwIGNoYXJhY3RlcnMgb2YgdGV4dCBiZWZvcmUgYW5kIGFmdGVyIHRo
ZSBwb2ludC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29r
dXBMZWdhY3kubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cExlZ2FjeS5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTI1LDcgKzEyNSw3IEBAIHN0ZDo6dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5
ICoKICAgICAgICAgcmV0dXJuIHJhbmdlRm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAKICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMgeyBwb3NpdGlv
biB9OwotICAgIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFu
dWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5l
UnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSk7CiAgICAgcG9zaXRpb24gPSBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLnN0
YXJ0KCk7CiAKICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFy
YWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MiwxNCAr
NjUyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXMKICAgICAg
ICAgYm9vbCBmb3JjaW5nUGVuZGluZ1BvbGljeSA9IGZyYW1lLT5zZXR0aW5ncygpLmlzRm9yY2VQ
ZW5kaW5nV2ViR0xQb2xpY3koKTsKIAogICAgICAgICBpZiAoZm9yY2luZ1BlbmRpbmdQb2xpY3kg
fHwgKHBhZ2UgJiYgIXRvcERvY3VtZW50LnVybCgpLmlzTG9jYWxGaWxlKCkpKSB7Ci0gICAgICAg
ICAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5ID0gZm9yY2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJH
TFBlbmRpbmdDcmVhdGlvbiA6IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLndl
YkdMUG9saWN5Rm9yVVJMKHRvcERvY3VtZW50LnVybCgpKTsKKyAgICAgICAgICAgIFdlYkdMTG9h
ZFBvbGljeSBwb2xpY3kgPSBmb3JjaW5nUGVuZGluZ1BvbGljeSA/IFdlYkdMTG9hZFBvbGljeTo6
V2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQo
KS53ZWJHTFBvbGljeUZvclVSTCh0b3BEb2N1bWVudC51cmwoKSk7CiAKLSAgICAgICAgICAgIGlm
IChwb2xpY3kgPT0gV2ViR0xCbG9ja0NyZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5
ID09IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgTE9HKFdlYkdMLCAiVGhlIHBvbGljeSBmb3IgdGhpcyBVUkwgKCVzKSBpcyB0byBibG9jayBX
ZWJHTC4iLCB0b3BEb2N1bWVudC51cmwoKS5ob3N0KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
IChwb2xpY3kgPT0gV2ViR0xQZW5kaW5nQ3JlYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChwb2xp
Y3kgPT0gV2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRpbmdDcmVhdGlvbikgewogICAgICAgICAg
ICAgICAgIExPRyhXZWJHTCwgIldlYkdMIHBvbGljeSBpcyBwZW5kaW5nLiBNYXkgbmVlZCB0byBi
ZSByZXNvbHZlZCBsYXRlci4iKTsKICAgICAgICAgICAgICAgICBpc1BlbmRpbmdQb2xpY3lSZXNv
bHV0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEw
OSw3IEBAIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9uOwogCiB0eXBlZGVmIFdURjo6RnVuY3Rp
b248dm9pZCAoUG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGlj
eUZ1bmN0aW9uOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7Citj
bGFzcyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgLy8gQW4gaW5saW5lIGZ1bmN0aW9uIGNhbm5vdCBiZSB0aGUgZmlyc3Qgbm9u
LWFic3RyYWN0IHZpcnR1YWwgZnVuY3Rpb24gZGVjbGFyZWQKQEAgLTMzOSw4ICszMzksOCBAQCBw
dWJsaWM6CiAgICAgLy8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBp
bnNpZGUgdGhpcyBmcmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAogICAgIC8vIG5vdGlmaWNh
dGlvbiB3aXRoIHRoZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29k
ZSAoc2VlIEV4dGVuc2lvbnNHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29u
dGV4dChpbnQpIHsgfQotICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQotICAg
IHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBV
UkwmKSBjb25zdCB7IHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KKyAgICB2aXJ0dWFsIFdl
YkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVy
biBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2Vi
R0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7
IHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29tcGxldGVQYWdlVHJhbnNpdGlvbklmTmVlZGVkKCkgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDI2
MTY4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBlbnVtIFNob3VsZFJlcGxhY2VEb2N1bWVudElm
SmF2YVNjcmlwdFVSCiAgICAgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwKIH07
CiAKLWVudW0gV2ViR0xMb2FkUG9saWN5IHsKK2VudW0gY2xhc3MgV2ViR0xMb2FkUG9saWN5IDog
dWludDhfdCB7CiAgICAgV2ViR0xCbG9ja0NyZWF0aW9uLAogICAgIFdlYkdMQWxsb3dDcmVhdGlv
biwKICAgICBXZWJHTFBlbmRpbmdDcmVhdGlvbgpAQCAtMjIyLDEyICsyMjIsMTIgQEAgT3B0aW9u
YWw8U3lzdGVtUHJldmlld0luZm8+IFN5c3RlbVByZXZpZQogICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqZWxlbWVudCksIFdURk1vdmUoKnByZXZpZXdSZWN0KSwgV1RGTW92ZSgqaXNQcmV2aWV3KSB9
IH07CiB9CiAKLWVudW0gY2xhc3MgTG9hZENvbXBsZXRpb25UeXBlIDogdWludDhfdCB7CitlbnVt
IGNsYXNzIExvYWRDb21wbGV0aW9uVHlwZSA6IGJvb2wgewogICAgIEZpbmlzaCwKICAgICBDYW5j
ZWwKIH07CiAKLWVudW0gY2xhc3MgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiB1aW50OF90IHsK
K2VudW0gY2xhc3MgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiBib29sIHsKICAgICBZZXMsCiAg
ICAgTm8sCiB9OwpAQCAtMjcxLDExICsyNzEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpTaAogICAgID47CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0PiB7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeT4gewogICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
LAotICAgICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzLAotICAgICAg
ICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6Tm8KKyAgICAgICAgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5LAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdM
QmxvY2tDcmVhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb24sCisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5k
aW5nQ3JlYXRpb24KICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzgsNyArMzc4LDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SQog
ICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEFsbG93U3Bl
bGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChzZWxlY3Rpb24uaXNDYXJldE9yUmFuZ2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgICAgICAgICAg
ICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkp
OworICAgICAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbih3b3JkU2VsZWN0aW9uKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRl
eHQoKS5sZW5ndGgoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NiwzNSArMjQ2LDM1IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpt
b2RpZnkoY29uc3QgU3RyaW5nJiAKIAogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywg
ImZvcndhcmQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAg
ICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImJhY2t3YXJk
IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJkOworICAgICAgICBkaXJl
Y3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQiKSkKLSAgICAg
ICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0
aW9uRGlyZWN0aW9uOjpMZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGRpcmVjdGlvblN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IERp
cmVjdGlvblJpZ2h0OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJp
Z2h0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5OwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxh
cml0eVN0cmluZywgImNoYXJhY3RlciIpKQotICAgICAgICBncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hh
cmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJ3b3JkIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0g
V29yZEdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGdyYW51bGFyaXR5U3RyaW5nLCAic2VudGVuY2UiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkg
PSBTZW50ZW5jZUdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgImxpbmUiKSkKLSAgICAgICAgZ3JhbnVs
YXJpdHkgPSBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGgiKSkKLSAgICAgICAgZ3Jh
bnVsYXJpdHkgPSBQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZWJvdW5kYXJ5
IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gTGluZUJvdW5kYXJ5OwotICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAic2VudGVuY2Vi
b3VuZGFyeSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNlQm91bmRhcnk7CisgICAg
ICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk7CisgICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnkiKSkKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGhib3Vu
ZGFyeSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEJvdW5kYXJ5OworICAgICAg
ICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcs
ICJkb2N1bWVudGJvdW5kYXJ5IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gRG9jdW1lbnRCb3Vu
ZGFyeTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91
bmRhcnk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoY28KICAgICAgICAgICAg
IC8vIE5TVGV4dFZpZXcgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3Zp
bmcgYSBzZWxlY3Rpb24sCiAgICAgICAgICAgICAvLyBidXQgb25seSB0byBzbWFydCBpbnNlcnQg
aWYgdGhlIHNlbGVjdGlvbiBncmFudWxhcml0eSBpcyB3b3JkIGdyYW51bGFyaXR5LgogICAgICAg
ICAgICAgYm9vbCBzbWFydERlbGV0ZSA9IGVkaXRvci5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
KTsKLSAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAmJiBpbm5lckZy
YW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSAmJiBkcmFn
RGF0YS5jYW5TbWFydFJlcGxhY2UoKTsKKyAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBz
bWFydERlbGV0ZSAmJiBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNtYXJ0UmVwbGFj
ZSgpOwogICAgICAgICAgICAgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudC5y
ZWxlYXNlTm9uTnVsbCgpLCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxl
dGUpLT5hcHBseSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNldFNlbGVj
dGlvblRvRHJhZ0NhcmV0KGlubmVyRnJhbWUuZ2V0KCksIGRyYWdDYXJldCwgcG9pbnQpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNjE2ODApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0Myw3ICs1NDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91
CiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgIG1fc2VsZWN0aW9uSW5pdGlh
dGlvblN0YXRlID0gRXh0ZW5kZWRTZWxlY3Rpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGdyYW51
bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgbV9zZWxlY3Rpb25J
bml0aWF0aW9uU3RhdGUgPSBQbGFjZWRDYXJldDsKICAgICB9CiAKQEAgLTU2MSwxMyArNTYxLDEz
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb20KICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50
KHJlc3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKHBvcy5pc05vdE51
bGwoKSkgewogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3Mp
OwotICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdy
YW51bGFyaXR5KTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFy
aXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChhcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlICYmIG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxl
Y3Rpb24uYXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0
aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRT
ZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0
aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VE
b3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jl
c3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApAQCAtNjAyLDE0ICs2MDIs
MTQgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZv
clBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmIChw
b3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxl
U2VsZWN0aW9uKHBvcyk7Ci0gICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5n
R3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rp
b24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYm
IG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5k
VHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25G
b3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVj
dGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24p
LCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25E
aXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVj
dFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogICAgIApAQCAtNjMzLDcgKzYzMyw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHUKICAgICAgICAgaWYg
KHBvcy5pc05vdE51bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgp
LT5pc0Rlc2NlbmRhbnRPZigqdXJsRWxlbWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24g
PSBWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUodXJsRWxlbWVu
dCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxl
Y3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNl
RG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAg
ICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJn
ZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0
Tm9kZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwog
ICAgIH0KIH0KIApAQCAtNjY4LDEwICs2NjgsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZU1vdXNlUHJlc3NFdmVudAogICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVu
ZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsK
ICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2li
bGVTZWxlY3Rpb24ocG9zKTsKLSAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVs
YXJpdHkoUGFyYWdyYXBoR3JhbnVsYXJpdHkpOworICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KTsK
ICAgICB9CiAKLSAgICByZXR1cm4gdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hp
bmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RP
bk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdyYXBoR3JhbnVsYXJp
dHkpOworICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1Nl
bGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91
c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5KTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IHRleHREaXN0YW5jZShjb25z
dCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC03MTEsNyArNzExLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIFBvc2l0aW9u
IHBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgVmlzaWJsZVNl
bGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwot
ICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5Owor
ICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHk7CiAKICAgICBpZiAoIW1fZnJhbWUuZWRpdG9yKCkuY2xpZW50KCktPnNo
b3VsZEFsbG93U2luZ2xlQ2xpY2tUb0NoYW5nZVNlbGVjdGlvbigqdGFyZ2V0Tm9kZSwgbmV3U2Vs
ZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03MzksNyArNzM5LDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIG5ld1NlbGVjdGlvbi5zZXRFeHRlbnQocG9zKTsKIAotICAgICAgICBpZiAobV9mcmFt
ZS5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSB7Cisg
ICAgICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICAgICAgZ3JhbnVsYXJpdHkg
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCk7CiAgICAgICAgICAgICBuZXdTZWxl
Y3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFy
aXR5KCkpOwogICAgICAgICB9CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91CiAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudCh0YXJn
ZXRQb3NpdGlvbik7CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51
bGFyaXR5KCkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0
aW9uKCkuZ3JhbnVsYXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KQogICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1l
LnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkpOwogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb25CeU1vdXNlSWZEaWZmZXJlbnQobmV3U2VsZWN0aW9uLCBtX2ZyYW1lLnNlbGVj
dGlvbigpLmdyYW51bGFyaXR5KCksCkBAIC0zNTEyLDE1ICszNTEyLDE1IEBAIHN0YXRpYyB2b2lk
IHNldEluaXRpYWxLZXlib2FyZFNlbGVjdGlvbigKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlv
bkJhY2t3YXJkOgotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAg
ICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9
IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gZW5kT2ZEb2N1bWVudChk
b2N1bWVudCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKLSAg
ICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3
YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGZv
Y3VzZWRFbGVtZW50KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBvc2l0
aW9uKHBvc2l0aW9uQWZ0ZXJOb2RlKGZvY3VzZWRFbGVtZW50KSk7CiAgICAgICAgIGVsc2UKQEAg
LTM1NDEsOCArMzU0MSw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92
ZW0KICAgICBib29sIGlzU2VsZWN0aW9uID0gIXNlbGVjdGlvbi5pc05vbmUoKTsKIAogICAgIEZy
YW1lU2VsZWN0aW9uOjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVy
U3RhdGUoIlNoaWZ0IikgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uID0gRGlyZWN0aW9uRm9yd2FyZDsKLSAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkg
PSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOworICAgIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBz
d2l0Y2ggKGZvY3VzRGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50aWZpZXIoKSkpIHsKICAg
ICBjYXNlIEZvY3VzRGlyZWN0aW9uTm9uZToKQEAgLTM1NTIsMjAgKzM1NTIsMjAgQEAgc3RhdGlj
IHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKLSAg
ICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5
ID0gaXNDb21tYW5kZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5OworICAg
ICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgICAgICBn
cmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5IDogVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rp
b25Gb3J3YXJkOwotICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gRG9jdW1lbnRC
b3VuZGFyeSA6IExpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8g
VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51bGFyaXR5OjpMaW5l
R3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0
OgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25MZWZ0OwotICAgICAgICBncmFudWxhcml0
eSA9IChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3Jh
bnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OworICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1hbmRl
ZCkgPyBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5IDogVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0
OgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25SaWdodDsKLSAgICAgICAgZ3JhbnVsYXJp
dHkgPSAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdy
YW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVjdGlvbiA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFu
ZGVkKSA/IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5OwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTc5LDcgKzU3OSw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZv
cm0KICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFy
aXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIFJl
ZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBv
c2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkKTsKICAgICBpZiAoIXdvcmRSYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJHTExvYWRQb2xp
Y3kpOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJDb3JlV2ViR0xMb2Fk
UG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdEZvcldlYlZpZXc6XSk6CisgICAgICAg
ICh0b1VJV0tTZWxlY3Rpb25GbGFncyk6CisgICAgICAgICh0b1NlbGVjdGlvbkZsYWdzKToKKyAg
ICAgICAgKHRvV0tUZXh0R3JhbnVsYXJpdHkpOgorICAgICAgICAodG9XS1NlbGVjdGlvbkRpcmVj
dGlvbik6CisgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUpOgorICAgICAgICAo
c2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaCk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hh
bmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVBdDp3aXRoR2VzdHVyZTp3aXRoU3RhdGU6d2l0aEZsYWdz
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0
OndpdGhTZWxlY3Rpb25Ub3VjaDpiYXNlSXNTdGFydDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOnRvOndpdGhHZXN0
dXJlOndpdGhTdGF0ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RXb3JkRm9y
UmVwbGFjZW1lbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0
aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZXh0ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0
UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtX
S0RPTVJhbmdlIHJhbmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczppbkRp
cmVjdGlvbjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OndlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3
ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJH
TFBvbGljeUZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpyYW5nZUF0V29yZEJv
dW5kYXJ5Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmFuZ2VGb3JHcmFu
dWxhcml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0
aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luU2Vs
ZWN0aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6ZGF0YURldGVjdG9yTGlu
a1Bvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQnlHcmFudWxhcml0
eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1
ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGlj
eUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZv
clVSTCk6CisKIDIwMjAtMDUtMTMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBbSVBDXSBVc2UgdGVtcGxhdGVzIHRvIHJlZHVjZSBkdXBsaWNhdGUgY29kZSBp
biBJUEM6OkRlY29kZXIgYW5kIElQQzo6RW5jb2RlciBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTYx
NSw2ICs2MTUsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNv
cmU6OlJlY2VudFNlYXJjaCc6IFsnPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3knOiBbJzxXZWJDb3JlL0F1ZGlvU2Vzc2lv
bi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcic6
IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb24nOiBbJzxXZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJP
ckNsaWVudERhdGEnOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPicsICc8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPicsICc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0
YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmll
cic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+JywgJzxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmg+J10sCkBAIC02MzksMTcgKzY0MCwyMiBAQCBkZWYgaGVh
ZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlJzogWyc8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlVzZWRMZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBb
JzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3knOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAg
J1dlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvblJlY3QnOiBbJyJFZGl0b3JTdGF0
ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3
aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3Js
ZElkZW50aWZpZXInIDogWyciQ29udGVudFdvcmxkU2hhcmVkLmgiJ10sCisgICAgICAgICdXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwK
KyAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBl
cy5oIiddLAorICAgICAgICAnV2ViS2l0OjpHZXN0dXJlVHlwZSc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhv
c3RpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBb
JyJMYXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsn
IlNlc3Npb25TdGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uJzogWyciUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbldlYktpdC5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpQYXltZW50U2V0dXBGZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXNXZWJLaXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFu
Y2hvcic6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25G
bGFncyc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25U
b3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJl
RXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJLZXlib2FyZEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6
IFsnIldlYkV2ZW50LmgiJ10sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1l
bnRFZGl0aW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHsKIAogICAgIE9wdGlv
blNldDxPcHRpb25zPiBvcHRpb25zOwogCi0gICAgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IHN1
cnJvdW5kaW5nR3JhbnVsYXJpdHkgeyBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSB9Owor
ICAgIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBzdXJyb3VuZGluZ0dyYW51bGFyaXR5IHsgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB9OwogICAgIGludDY0
X3QgZ3JhbnVsYXJpdHlDb3VudCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0
OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9HZXN0dXJlVHlwZXMuaAkocmV2aXNpb24g
MjYxNjgwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEdlc3R1cmVUeXBlc19oCi0jZGVmaW5lIEdlc3R1cmVU
eXBlc19oCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIEdlc3R1cmVUeXBlIHsKK2VudW0gY2xhc3Mg
R2VzdHVyZVR5cGUgOiB1aW50OF90IHsKICAgICBMb3VwZSwKICAgICBPbmVGaW5nZXJUYXAsCiAg
ICAgVGFwQW5kQUhhbGYsCkBAIC00NSw3ICs0Niw3IEBAIGVudW0gY2xhc3MgR2VzdHVyZVR5cGUg
ewogICAgIFBocmFzZUJvdW5kYXJ5CiB9OwogCi1lbnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIHsK
K2VudW0gY2xhc3MgU2VsZWN0aW9uVG91Y2ggOiB1aW50OF90IHsKICAgICBTdGFydGVkLAogICAg
IE1vdmVkLAogICAgIEVuZGVkLApAQCAtNTQsMjMgKzU1LDIxIEBAIGVudW0gY2xhc3MgU2VsZWN0
aW9uVG91Y2ggewogICAgIEVuZGVkTm90TW92aW5nCiB9OwogCi1lbnVtIGNsYXNzIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUgeworZW51bSBjbGFzcyBHZXN0dXJlUmVjb2duaXplclN0YXRlIDogdWlu
dDhfdCB7CiAgICAgUG9zc2libGUsCiAgICAgQmVnYW4sCiAgICAgQ2hhbmdlZCwKICAgICBFbmRl
ZCwKICAgICBDYW5jZWxsZWQsCi0gICAgRmFpbGVkLAotICAgIFJlY29nbml6ZWQgPSBFbmRlZAor
ICAgIEZhaWxlZAogfTsKIAotZW51bSBjbGFzcyBTaGVldEFjdGlvbiB7CitlbnVtIGNsYXNzIFNo
ZWV0QWN0aW9uIDogYm9vbCB7CiAgICAgQ29weSwKICAgICBTYXZlSW1hZ2UKIH07CiAKLWVudW0g
U2VsZWN0aW9uRmxhZ3MgewotICAgIE5vbmUgPSAwLAorZW51bSBTZWxlY3Rpb25GbGFncyA6IHVp
bnQ4X3QgewogICAgIFdvcmRJc05lYXJUYXAgPSAxIDw8IDAsCiAgICAgUGhyYXNlQm91bmRhcnlD
aGFuZ2VkID0gMSA8PCAxLAogfTsKQEAgLTgyLDQgKzgxLDUxIEBAIGVudW0gY2xhc3MgUmVzcGVj
dFNlbGVjdGlvbkFuY2hvciA6IGJvb2wKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRp
ZiAvLyBHZXN0dXJlVHlwZXNfaAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpHZXN0dXJlVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGUsCisgICAgICAgIFdlYktpdDo6
R2VzdHVyZVR5cGU6OkxvdXBlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5n
ZXJUYXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlRhcEFuZEFIYWxmLAorICAgICAg
ICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpEb3VibGVUYXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVy
ZVR5cGU6OlRhcEFuZEhhbGYsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OkRvdWJsZVRh
cEluVW5lZGl0YWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFw
SW5VbmVkaXRhYmxlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXBT
ZWxlY3RzQWxsLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJEb3VibGVU
YXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRyaXBsZVRhcCwKKyAg
ICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwLAorICAgICAgICBX
ZWJLaXQ6Okdlc3R1cmVUeXBlOjpUd29GaW5nZXJSYW5nZWRTZWxlY3RHZXN0dXJlLAorICAgICAg
ICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBPbkxpbmtXaXRoR2VzdHVyZSwKKyAgICAgICAgV2Vi
S2l0OjpHZXN0dXJlVHlwZTo6UGhyYXNlQm91bmRhcnkKKyAgICA+OworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlNlbGVjdGlvblRvdWNoPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCwKKyAg
ICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6U3RhcnRlZCwKKyAgICAgICAgV2ViS2l0OjpT
ZWxlY3Rpb25Ub3VjaDo6TW92ZWQsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVu
ZGVkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0ZvcndhcmQs
CisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nQmFja3dhcmQsCisg
ICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVkTm90TW92aW5nCisgICAgPjsKK307
CisKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okdlc3R1cmVSZWNvZ25p
emVyU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29n
bml6ZXJTdGF0ZTo6UG9zc2libGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6QmVnYW4sCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2hh
bmdlZCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZCwKKyAg
ICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQsCisgICAgICAg
IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6RmFpbGVkCisgICAgPjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzM2LDE2ICs1NzM2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHQKICNpZiBFTkFCTEUoV0VCR0wpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
Ci0gICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3Jl
cGx5ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsK
LSAgICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkpOwotICAgIH0pOwor
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFdURk1v
dmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChVUkwmJiB1cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTDo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVw
bHkpXSAoV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIHJlcGx5KHN0
YXRpY19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKLSAgICB9KTsKKyAgICBtX25hdmlnYXRpb25D
bGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgV1RGTW92ZShyZXBseSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOCArMjIzLDYgQEAg
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRp
b25CdWJibGU7CiAKLWVudW0gU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdDsKLQogZW51bSBj
bGFzcyBBdXRvcGxheUV2ZW50IDogdWludDhfdDsKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIExvY2tCYWNrRm9yd2FyZExpc3QgOiBib29s
OwpAQCAtMjMyLDYgKzIzMCw3IEBAIGVudW0gY2xhc3MgSGFzSW5zZWN1cmVDb250ZW50IDogYm9v
bDsKIGVudW0gY2xhc3MgTW91c2VFdmVudFBvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIE5v
dGlmaWNhdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1Bv
bGljeSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24gOiB1
aW50OF90OwpAQCAtMjQ0LDYgKzI0Myw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRz
Owogc3RydWN0IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOwogc3RydWN0IERpY3Rpb25h
cnlQb3B1cEluZm87CiBzdHJ1Y3QgRHJhZ0l0ZW07CitzdHJ1Y3QgRWxlbWVudENvbnRleHQ7CiBz
dHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwogc3Ry
dWN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI7CkBAIC0yNzksMTAgKzI3OSw2IEBAIHR5cGVkZWYg
c3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNHbG9iYWwKIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVZp
ZXdXaWRnZXQ7CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotc3RydWN0IEVsZW1lbnRD
b250ZXh0OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1ZGlvU2Vzc2lvblJvdXRp
bmdBcmJpdHJhdG9yUHJveHk7CiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtNDA1LDggKzQw
MSw4IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEZvbnRJbmZvJiwKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdD4gR2VzdHVy
ZUNhbGxiYWNrOwotdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCwgdWludDMyX3Q+IFRvdWNoZXNDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJp
Y0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4+IEdlc3R1cmVDYWxsYmFj
azsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4+IFRvdWNoZXNDYWxsYmFjazsK
IHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25S
ZWN0PiY+IFNlbGVjdGlvblJlY3RzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxj
b25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJj4gRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bkNhbGxiYWNrOwogI2VuZGlmCkBAIC03NTYsOSArNzUyLDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cz4mKTsKICAgICB2b2lkIHdpbGxDb21taXRMYXllclRyZWUoVHJhbnNhY3Rp
b25JRCk7CiAKLSAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIHVpbnQzMl90
IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlw
ZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRp
b25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9p
ZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgU2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8s
IEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUs
IE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAg
ICB2b2lkIGV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpOwogICAgIHZv
aWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7CiAgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZzZXQo
aW50MzJfdCBvZmZzZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMDk1LDgg
KzIwOTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29u
c3QgRm9udEluZm8mLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrSUQpOwogI2VuZGlmCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdz
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8
U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHRvdWNoZXNDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHNlbGVjdGlvbkNvbnRleHRDYWxsYmFj
ayhjb25zdCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgY29uc3QgU3RyaW5nJiBiZWZvcmVUZXh0LCBj
b25zdCBTdHJpbmcmIGFmdGVyVGV4dCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBpbnRlcnByZXRL
ZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYsIGJvb2wgaXNDaGFyRXZlbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjYxNjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgVW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHVpbnQzMl90IHBsdWdp
blVuYXZhaWxhYmlsaXR5UmVhc29uLCBTdHJpbmcgbWltZVR5cGUsIFN0cmluZyBwbHVnaW5VUkxT
dHJpbmcsIFN0cmluZyBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgU3RyaW5nIGZyYW1l
VVJMU3RyaW5nLCBTdHJpbmcgcGFnZVVSTFN0cmluZykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViR0xQb2xpY3lGb3JVUkwo
VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIFN5bmNocm9ub3VzCi0gICAgUmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBTeW5j
aHJvbm91cworICAgIFdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+IChlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IGxvYWRQb2xpY3kpIFN5bmNocm9ub3VzCisgICAgUmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IGxvYWRQb2xpY3kpIFN5bmNocm9ub3VzCiAjZW5kaWYgLy8gRU5BQkxF
KFdFQkdMKQogICAgIERpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCiAgICAgRGlkUmVjZWl2ZUV2ZW50KHVpbnQz
Ml90IHR5cGUsIGJvb2wgaGFuZGxlZCkKQEAgLTE3Nyw4ICsxNzcsOCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogI2VuZGlmCiAgICAgRm9udEF0dHJpYnV0ZXNDYWxsYmFjayhzdHJ1Y3Qg
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlcywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBHZXN0dXJlQ2FsbGJhY2so
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBUb3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90
IHRvdWNoZXMsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBHZXN0dXJlQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhf
dCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpH
ZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2Vs
ZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBU
b3VjaGVzQ2FsbGJhY2soV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhfdCBXZWJL
aXQ6OlNlbGVjdGlvblRvdWNoIHRvdWNoZXMsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZs
YWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2VsZWN0aW9u
Q29udGV4dENhbGxiYWNrKFN0cmluZyBzZWxlY3RlZFRleHQsIFN0cmluZyBiZWZvcmVUZXh0LCBT
dHJpbmcgYWZ0ZXJUZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBJbnRl
cnByZXRLZXlFdmVudChzdHJ1Y3QgV2ViS2l0OjpFZGl0b3JTdGF0ZSBzdGF0ZSwgYm9vbCBpc0No
YXJFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBEaWRSZWNlaXZlUG9z
aXRpb25JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbiBpbmZvcm1hdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDI1ICs0OTYsMjUgQEAg
aW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkdMTAogewogICAgIHN3aXRjaCAo
d2ViR0xMb2FkUG9saWN5KSB7CiAgICAgY2FzZSBrV0tXZWJHTExvYWRQb2xpY3lMb2FkTm9ybWFs
bHk6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKICAg
ICBjYXNlIGtXS1dlYkdMTG9hZFBvbGljeUJsb2NrZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpXZWJHTEJsb2NrQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQmxvY2tDcmVhdGlvbjsKICAgICBjYXNlIGtXS1dlYkdMTG9hZFBvbGljeVBl
bmRpbmc6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTFBlbmRpbmdDcmVhdGlvbjsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRp
b247CiAgICAgfQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiBpbmxpbmUgV0tXZWJHTExvYWRQb2xp
Y3kgdG9BUEkoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMTG9hZFBvbGljeSkKIHsKICAg
ICBzd2l0Y2ggKHdlYkdMTG9hZFBvbGljeSkgewotICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xBbGxv
d0NyZWF0aW9uOgorICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb246CiAgICAgICAgIHJldHVybiBrV0tXZWJHTExvYWRQb2xpY3lMb2FkTm9ybWFsbHk7
Ci0gICAgY2FzZSBXZWJDb3JlOjpXZWJHTEJsb2NrQ3JlYXRpb246CisgICAgY2FzZSBXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtX
S1dlYkdMTG9hZFBvbGljeUJsb2NrZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpXZWJHTFBlbmRpbmdD
cmVhdGlvbjoKKyAgICBjYXNlIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5n
Q3JlYXRpb246CiAgICAgICAgIHJldHVybiBrV0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDksMjEgKzQwOSwy
MSBAQCBpbmxpbmUgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHRvV2ViQ29yCiB7CiAgICAgc3dp
dGNoIChwb2xpY3kpIHsKICAgICBjYXNlIF9XS1dlYkdMTG9hZFBvbGljeUFsbG93Q3JlYXRpb246
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKICAgICBj
YXNlIF9XS1dlYkdMTG9hZFBvbGljeUJsb2NrQ3JlYXRpb246Ci0gICAgICAgIHJldHVybiBXZWJD
b3JlOjpXZWJHTEJsb2NrQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlvbjsKICAgICBjYXNlIF9XS1dlYkdMTG9hZFBvbGlj
eVBlbmRpbmdDcmVhdGlvbjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMUGVuZGluZ0Ny
ZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBl
bmRpbmdDcmVhdGlvbjsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5
JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViR0xMb2Fk
UG9saWN5Rm9yVVJMKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVh
dGlvbik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDQwLDcgKzQ0MCw3
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Jl
c29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViR0xBbGxvd0NyZWF0aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xMb2Fk
UG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTE1LDcgKzM1MTUsNyBAQCAtICh2b2lkKXNlbGVjdEZvcldlYlZpZXc6KGlkKXNlbmRl
cgogewogICAgIFtfdGV4dEludGVyYWN0aW9uQXNzaXN0YW50IHNlbGVjdFdvcmRdOwogICAgIC8v
IFdlIGNhbm5vdCB1c2Ugc2VsZWN0V29yZCBjb21tYW5kLCBiZWNhdXNlIHdlIHdhbnQgdG8gYmUg
YWJsZSB0byBzZWxlY3QgdGhlIHdvcmQgZXZlbiB3aGVuIGl0IGlzIHRoZSBsYXN0IGluIHRoZSBw
YXJhZ3JhcGguCi0gICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpXb3JkR3JhbnVs
YXJpdHkpOworICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogfQogCiAtICh2b2lkKXNlbGVjdEFsbEZvcldlYlZpZXc6
KGlkKXNlbmRlcgpAQCAtMzgyMywzMiArMzgyMyw0MiBAQCBzdGF0aWMgaW5saW5lIFVJR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSB0CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rp
b25GbGFncyB0b1VJV0tTZWxlY3Rpb25GbGFncyhXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzIGZsYWdz
KQorc3RhdGljIGlubGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0aW9uRmxhZ3Mo
T3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzKQogewogICAgIE5TSW50ZWdl
ciB1aUZsYWdzID0gVUlXS05vbmU7Ci0gICAgaWYgKGZsYWdzICYgV2ViS2l0OjpXb3JkSXNOZWFy
VGFwKQorICAgIGlmIChmbGFncy5jb250YWlucyhXZWJLaXQ6OldvcmRJc05lYXJUYXApKQogICAg
ICAgICB1aUZsYWdzIHw9IFVJV0tXb3JkSXNOZWFyVGFwOwotICAgIGlmIChmbGFncyAmIFdlYktp
dDo6UGhyYXNlQm91bmRhcnlDaGFuZ2VkKQorICAgIGlmIChmbGFncy5jb250YWlucyhXZWJLaXQ6
OlBocmFzZUJvdW5kYXJ5Q2hhbmdlZCkpCiAgICAgICAgIHVpRmxhZ3MgfD0gVUlXS1BocmFzZUJv
dW5kYXJ5Q2hhbmdlZDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxVSVdLU2VsZWN0aW9uRmxh
Z3M+KHVpRmxhZ3MpOwogfQogCitzdGF0aWMgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVj
dGlvbkZsYWdzPiB0b1NlbGVjdGlvbkZsYWdzKFVJV0tTZWxlY3Rpb25GbGFncyB1aUZsYWdzKQor
eworICAgIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFnczsKKyAgICBpZiAo
dWlGbGFncyAmIFVJV0tXb3JkSXNOZWFyVGFwKQorICAgICAgICBmbGFncy5hZGQoV2ViS2l0OjpX
b3JkSXNOZWFyVGFwKTsKKyAgICBpZiAodWlGbGFncyAmIFVJV0tQaHJhc2VCb3VuZGFyeUNoYW5n
ZWQpCisgICAgICAgIGZsYWdzLmFkZChXZWJLaXQ6OlBocmFzZUJvdW5kYXJ5Q2hhbmdlZCk7Cisg
ICAgcmV0dXJuIGZsYWdzOworfQorCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSB0b1dLVGV4dEdyYW51bGFyaXR5KFVJVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQog
ewogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5
Q2hhcmFjdGVyOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlXb3JkOgotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6V29yZEdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVNl
bnRlbmNlOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2VudGVuY2VHcmFudWxhcml0eTsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0
eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3Jh
bnVsYXJpdHlMaW5lOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6TGluZUdyYW51bGFyaXR5Owor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7
CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eURvY3VtZW50OgotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6RG9jdW1lbnRHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eTsKICAgICB9CiB9CiAKQEAgLTM4NTcsMjkg
KzM4NjcsMjkgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3RpbwogICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25Eb3du
OgogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uUmlnaHQ6Ci0gICAgICAgIHJldHVybiBX
ZWJDb3JlOjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25VcDoKICAg
ICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlvbkxlZnQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpEaXJlY3Rpb25MZWZ0OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0
aW9uOjpMZWZ0OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIFVJVGV4dERpcmVjdGlvbiBpcyBu
b3QgYW4gZW51bSwgYnV0IHdlIG9ubHkgd2FudCB0byBhY2NlcHQgdmFsdWVzIGZyb20gVUlUZXh0
TGF5b3V0RGlyZWN0aW9uLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvblJpZ2h0OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHNlbGVj
dGlvbkNoYW5nZWRXaXRoR2VzdHVyZShXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJl
U3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CitzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoV0tDb250ZW50VmlldyAq
dmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBl
IGdlc3R1cmVUeXBlLCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRl
LCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikKIHsKICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lKQogICAgICAgICByZXR1cm47Ci0gICAgWyhVSVdLVGV4dEludGVy
YWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNo
YW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRvVUlXS0dlc3R1
cmVUeXBlKChXZWJLaXQ6Okdlc3R1cmVUeXBlKWdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGljX2Nhc3Q8V2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
clN0YXRlPihnZXN0dXJlU3RhdGUpKSB3aXRoRmxhZ3M6KHRvVUlXS1NlbGVjdGlvbkZsYWdzKChX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzKWZsYWdzKSldOworICAgIFsoVUlXS1RleHRJbnRlcmFjdGlv
bkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2Vk
V2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTp0b1VJV0tHZXN0dXJlVHlw
ZShnZXN0dXJlVHlwZSkgd2l0aFN0YXRlOnRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1
cmVTdGF0ZSkgd2l0aEZsYWdzOnRvVUlXS1NlbGVjdGlvbkZsYWdzKGZsYWdzKV07CiB9CiAKLXN0
YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3Qg
ZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikKK3N0YXRpYyB2b2lkIHNl
bGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoIHRvdWNoLCBPcHRpb25T
ZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikKIHsKICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lKQogICAgICAgICByZXR1cm47Ci0gICAgWyhVSVdLVGV4dEludGVyYWN0aW9uQXNz
aXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRXaXRo
VG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6dG9VSVdLU2VsZWN0aW9u
VG91Y2goKFdlYktpdDo6U2VsZWN0aW9uVG91Y2gpdG91Y2gpIHdpdGhGbGFnczpzdGF0aWNfY2Fz
dDxVSVdLU2VsZWN0aW9uRmxhZ3M+KGZsYWdzKV07CisgICAgWyhVSVdLVGV4dEludGVyYWN0aW9u
QXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRX
aXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6dG9VSVdLU2VsZWN0
aW9uVG91Y2goKFdlYktpdDo6U2VsZWN0aW9uVG91Y2gpdG91Y2gpIHdpdGhGbGFnczp0b1VJV0tT
ZWxlY3Rpb25GbGFncyhmbGFncyldOwogfQogCiAtIChCT09MKV9oYXNGb2N1c2VkRWxlbWVudApA
QCAtMzg5NSw4ICszOTA1LDggQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0
OihDRwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50
IHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGUpc3RhdGUgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3Mp
ZmxhZ3MKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdl
LT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIFdlYkNvcmU6OkNo
YXJhY3RlckdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShn
ZXN0dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0
YXRlKHN0YXRlKSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBbc2VsZiwgc3RhdGUsIGZsYWdz
XShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1
cmUoc2VsZiwgcG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzIHwgaW5uZXJG
bGFncywgZXJyb3IpOworICAgIF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQ
b2ludChwb2ludCksIHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpLCB0b0dlc3R1cmVSZWNvZ25p
emVyU3RhdGUoc3RhdGUpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3NlbGYsIHN0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZiksIHN0YXRlLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBXZWJLaXQ6Okdlc3R1
cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rp
b25GbGFncz4gaW5uZXJGbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
CisgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgdG9TZWxlY3Rpb25GbGFncyhmbGFncykgfCBpbm5lckZsYWdz
LCBlcnJvcik7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVF
bmRlZCB8fCBzdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCiAgICAg
ICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87CiAgICAgfSk7CkBAIC0zOTA1
LDkgKzM5MTUsOSBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHCiAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxl
Y3Rpb25Ub3VjaDooVUlXS1NlbGVjdGlvblRvdWNoKXRvdWNoIGJhc2VJc1N0YXJ0OihCT09MKWJh
c2VJc1N0YXJ0IHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzCiB7CiAgICAgX3Vz
aW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+dXBkYXRlU2VsZWN0aW9u
V2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCkpLCBiYXNlSXNTdGFydCwgW3NlbGYsIGZsYWdzXShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBp
bm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAg
c2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChzZWxmLCBwb2ludCwgdG91Y2gsIGZsYWdzIHwgaW5u
ZXJGbGFncywgZXJyb3IpOwotICAgICAgICBpZiAodG91Y2ggIT0gVUlXS1NlbGVjdGlvblRvdWNo
U3RhcnRlZCAmJiB0b3VjaCAhPSBVSVdLU2VsZWN0aW9uVG91Y2hNb3ZlZCkKKyAgICBfcGFnZS0+
dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b1Nl
bGVjdGlvblRvdWNoKHRvdWNoKSwgYmFzZUlzU3RhcnQsIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJL
aXQ6OlNlbGVjdGlvblRvdWNoIHRvdWNoLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFn
cz4gaW5uZXJGbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAg
ICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goc2VsZiwgcG9pbnQsIHRvdWNoLCB0b1NlbGVj
dGlvbkZsYWdzKGZsYWdzKSB8IGlubmVyRmxhZ3MsIGVycm9yKTsKKyAgICAgICAgaWYgKHRvVUlX
S1NlbGVjdGlvblRvdWNoKHRvdWNoKSAhPSBVSVdLU2VsZWN0aW9uVG91Y2hTdGFydGVkICYmIHRv
VUlXS1NlbGVjdGlvblRvdWNoKHRvdWNoKSAhPSBVSVdLU2VsZWN0aW9uVG91Y2hNb3ZlZCkKICAg
ICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsKIH0KQEAg
LTM5MTUsOSArMzkyNSw5IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENH
UG8KIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOihDR1BvaW50KWZyb20g
dG86KENHUG9pbnQpdG8gd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3
aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlnZXN0dXJlU3RhdGUKIHsKICAgICBf
dXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT5zZWxlY3RXaXRoVHdv
VG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQodG8pLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSkpLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkpLCBb
c2VsZl0oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlw
ZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhUd29Ub3VjaGVzKFdl
YkNvcmU6OkludFBvaW50KGZyb20pLCBXZWJDb3JlOjpJbnRQb2ludCh0byksIHRvR2VzdHVyZVR5
cGUoZ2VzdHVyZVR5cGUpLCB0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSwg
W3NlbGYsIHN0cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZildKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0OjpHZXN0
dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0
aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAg
ICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50LCBnZXN0dXJlVHlw
ZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgZXJyb3IpOwotICAgICAgICBpZiAoZ2VzdHVyZVN0YXRl
ID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkIHx8IGdlc3R1cmVTdGF0ZSA9PSBVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCisgICAgICAgIGlmICh0b1VJR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVu
ZGVkIHx8IHRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkgPT0gVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZv
clNlbGVjdGlvbiA9IE5POwogICAgIH0pOwogfQpAQCAtNjUyMSw3ICs2NTMxLDcgQEAgLSAodm9p
ZClfc2VsZWN0aW9uQ2hhbmdlZAogCiAtICh2b2lkKXNlbGVjdFdvcmRGb3JSZXBsYWNlbWVudAog
ewotICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6V29yZEdyYW51bGFyaXR5KTsK
KyAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5KTsKIH0KIAogI2lmIEVOQUJMRShQTEFURk9STV9EUklWRU5fVEVYVF9DSEVD
S0lORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
UHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIEdl
c3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0
ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEdlc3R1cmVDYWxsYmFj
az4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAtMTU1LDcgKzE1NSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2soY29uc3QKICAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVy
ZVN0YXRlLCBmbGFncyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2so
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJf
dCBmbGFncywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlUHJveHk6OnRvdWNo
ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFNlbGVjdGlvblRvdWNo
IHRvdWNoZXMsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxUb3VjaGVz
Q2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAgLTQyOCwyMSAr
NDI4LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllclRyZWVDb21taXRDb21wbGUKICAgICBw
YWdlQ2xpZW50KCkubGF5ZXJUcmVlQ29tbWl0Q29tcGxldGUoKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNv
Z25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1
cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rp
b25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
V2ViQ29yZTo6SW50UG9pbnQoKSwgMCwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93
bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgR2VzdHVy
ZVR5cGU6OkxvdXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZSwgeyB9LCBDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVBy
b3h5OjpzZWxlY3RXaXRoR2VzdHVyZSJfcykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsICh1aW50MzJfdClncmFudWxhcml0
eSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2Vz
dHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwg
bV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0
aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IGJvb2wgYmFzZUlzU3RhcnQsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFNlbGVjdGlvblRvdWNoIHRvdWNoZXMs
IGJvb2wgYmFzZUlzU3RhcnQsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAw
LCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCBTZWxlY3Rpb25Ub3VjaDo6U3RhcnRlZCwgeyB9LCBD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51
bGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBvaW50
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2lu
dCJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQsIGdyYW51bGFyaXR5
LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0
V2l0aEdyYW51bGFyaXR5QXRQb2ludCJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdy
YW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbiksIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24o
cG9pbnQsIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJh
Y2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24i
X3MpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwog
fQpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlv
bihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZGlyZWN0aW9uKSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oZ3JhbnVsYXJp
dHksIGRpcmVjdGlvbiksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAg
ICB9KTsKIH0KQEAgLTYzMCwxMCArNjMwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVT
dHlsdXNTaW5nbGVUYXAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVTdHlsdXNT
aW5nbGVUYXBBdFBvaW50KHBvaW50LCByZXF1ZXN0SUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3Qg
Z2VzdHVyZVN0YXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0
bywgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVy
ZVN0YXRlLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5
cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50
UG9pbnQoKSwgMCwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgR2VzdHVyZVR5cGU6OkxvdXBl
LCBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZSwgeyB9LCBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzU0LDcgKzc1NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEJlY29tZUEKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRT
ZWxlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSksIG1fd2ViUGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNlbGVjdGlv
bihncmFudWxhcml0eSksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
bGVjdFdvcmRCYWNrd2FyZCgpCkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RSZWN0c0ZvckdyYW51bAogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0Il9zKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBvZmZzZXQsIGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChncmFudWxhcml0
eSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNl
dCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlbGVjdGlvblJlY3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NUmFuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQkocmV2aXNpb24gMjYxNjgw
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tE
T01SYW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIC0gKE5TQXJyYXkg
Kil0ZXh0UmVjdHMKIAogLSAoV0tET01SYW5nZSAqKXJhbmdlQnlFeHBhbmRpbmdUb1dvcmRCb3Vu
ZGFyeUJ5Q2hhcmFjdGVyczooTlNVSW50ZWdlciljaGFyYWN0ZXJzIGluRGlyZWN0aW9uOihXS0RP
TVJhbmdlRGlyZWN0aW9uKWRpcmVjdGlvbgogewotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4g
bmV3UmFuZ2UgPSByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3Vu
ZGFyeShkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyAgX2ltcGwtPmVu
ZFBvc2l0aW9uKCkgOiBfaW1wbC0+c3RhcnRQb3NpdGlvbigpLCBjaGFyYWN0ZXJzLCBkaXJlY3Rp
b24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyBXZWJDb3JlOjpEaXJlY3Rpb25Gb3J3
YXJkIDogV2ViQ29yZTo6RGlyZWN0aW9uQmFja3dhcmQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpS
YW5nZT4gbmV3UmFuZ2UgPSByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdv
cmRCb3VuZGFyeShkaXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyAgX2lt
cGwtPmVuZFBvc2l0aW9uKCkgOiBfaW1wbC0+c3RhcnRQb3NpdGlvbigpLCBjaGFyYWN0ZXJzLCBk
aXJlY3Rpb24gPT0gV0tET01SYW5nZURpcmVjdGlvbkZvcndhcmQgPyBXZWJDb3JlOjpTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQgOiBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkKTsKIAogICAgIHJldHVybiBbW1tXS0RPTVJhbmdlIGFsbG9jXSBfaW5pdFdpdGhJbXBsOm5l
d1JhbmdlLmdldCgpXSBhdXRvcmVsZWFzZV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MTksNyArMTYxOSw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxv
YWRlckMKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIHdlYlBhZ2UtPndlYkdMUG9saWN5Rm9yVVJMKG1fZnJhbWUucHRyKCksIHVybCk7CiAK
LSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xp
Y3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
V2ViRnJhbWVMb2FkZXJDCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkp
CiAgICAgICAgIHJldHVybiB3ZWJQYWdlLT5yZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwobV9mcmFt
ZS5wdHIoKSwgdXJsKTsKIAotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0
dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0OSwxMiArMTA0OSwxMiBAQCBSZWZQdHI8UGx1Z2lu
PiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViCiAjaWYgRU5BQkxFKFdFQkdMKSAmJiAhUExBVEZP
Uk0oTUFDKQogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9y
VVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0
aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
IAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpCiB7Ci0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVh
dGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTAgKzE5NSwxMiBAQCBjbGFzcyBW
aXNpYmxlUG9zaXRpb247CiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKIGVudW0g
Y2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERyYWdI
YW5kbGluZ01ldGhvZCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlvbiA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7
CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIGVudW0gY2xhc3MgVGV4dEluZGlj
YXRvclByZXNlbnRhdGlvblRyYW5zaXRpb24gOiB1aW50OF90OworZW51bSBjbGFzcyBUZXh0R3Jh
bnVsYXJpdHkgOiB1aW50OF90OwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWludDhf
dDsKIAogc3RydWN0IEF0dHJpYnV0ZWRTdHJpbmc7CkBAIC02ODUsMTkgKzY4NywxOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGJsdXJGb2N1c2VkRWxlbWVudCgpOwogICAgIHZvaWQgcmVxdWVzdEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24oQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZWxlY3RXaXRo
R2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3Vj
aGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IENhbGxiYWNrSUQpOwotICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5KTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBi
b29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3Vj
aGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgdG8sIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpOwogICAg
IHZvaWQgc2VsZWN0V29yZEJhY2t3YXJkKCk7CiAgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQnlPZmZz
ZXQoaW50MzJfdCBvZmZzZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0
aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZWxlY3RQb3NpdGlv
bkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBi
ZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCk7
CisgICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRp
cmVjdGlvbiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IENhbGxiYWNrSUQpOwogCiAgICAgdm9pZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYWxsYmFj
a0lEKTsKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0
LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwpAQCAtNzIyLDcgKzcyNCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBoYW5kbGVU
d29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgT3B0aW9uU2V0PFdl
YktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiwgdWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2b2lk
IGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1
aW50NjRfdCByZXF1ZXN0SUQpOwotICAgIHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhT
ZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5LCBpbnQzMl90LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFJlY3RzQXRTZWxl
Y3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90LCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIHN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sKTsKICAgICB2b2lk
IHN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwpA
QCAtMTM2NSw3ICsxMzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBsZXRlU3ludGhldGlj
Q2xpY2soV2ViQ29yZTo6Tm9kZSYgbm9kZVJlc3BvbmRpbmdUb0NsaWNrLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBsb2NhdGlvbiwgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVyPiwgV2ViQ29yZTo6U3ludGhldGljQ2xpY2tUeXBlLCBXZWJDb3JlOjpQb2ludGVySUQgPSBX
ZWJDb3JlOjptb3VzZVBvaW50ZXJJRCk7CiAgICAgdm9pZCBzZW5kVGFwSGlnaGxpZ2h0Rm9yTm9k
ZUlmTmVjZXNzYXJ5KHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6Tm9kZSopOwogICAgIFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9p
bnQoY29uc3QgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiByYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZv
ckdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwogICAgIHZvaWQgc2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4
dEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpc3BhdGNo
U3ludGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKFNlbGVjdGlvblRvdWNoLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTY4
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTYzLDE5ICs2MywxOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9u
KFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAgSW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVk
QXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJGb2N1c2VkRWxl
bWVudCgpCi0gICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhX
ZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi0gICAgRXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQorICAgIFNl
bGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2Vs
ZWN0aW9uV2l0aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhfdCBX
ZWJLaXQ6OlNlbGVjdGlvblRvdWNoIHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6
OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCBlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIEV4dGVuZFNlbGVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5KQogICAgIFNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgTW92ZVNlbGVj
dGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0KSAtPiAoKSBBc3luYwotICAgIFNlbGVjdFRleHRX
aXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBn
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBB
c3luYwotICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24s
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKLSAgICBN
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbnQzMl90IGRpcmVjdGlvbikgLT4gKCkgQXN5bmMKKyAgICBTZWxlY3RUZXh0V2l0aEdyYW51
bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90IFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50KSAtPiAoKSBBc3luYworICAgIFNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhfdCBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGVudW06dWludDhfdCBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQpIC0+ICgpIEFzeW5jCisgICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGVu
dW06dWludDhfdCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKSAtPiAoKSBB
c3luYwogICAgIFNlbGVjdFBvc2l0aW9uQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBBc3luYwotICAgIEJl
Z2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgZW51bTpib29sIFdlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvciByZXNwZWN0U2VsZWN0
aW9uQW5jaG9yLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
dWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAgICAgUmVwbGFjZURpY3RhdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQp
CiAgICAgUmVwbGFjZVNlbGVjdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQp
CkBAIC0xMDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgSGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
T3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMsIHVpbnQ2NF90
IHJlcXVlc3RJRCkKICAgICBIYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgU2V0Rm9yY2VBbHdheXNVc2Vy
U2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCi0gICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdp
dGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBHZXRSZWN0c0ZvckdyYW51bGFyaXR5
V2l0aFNlbGVjdGlvbk9mZnNldChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgR2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qgb2Zmc2V0
LCBTdHJpbmcgdGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU3RvcmVT
ZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wgc2hvdWxkU3RvcmUpCiAgICAgU3RhcnRBdXRv
c2Nyb2xsQXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvc2l0aW9uSW5XaW5kb3cpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNyBA
QCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhCiAgICAgICAgIGVuZE5v
ZGVJc0luc2lkZUZpeGVkUG9zaXRpb24gPSBzdGFydE5vZGVJc0luc2lkZUZpeGVkUG9zaXRpb247
CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0RW5kID0gcG9zdExheW91dERhdGEu
Y2FyZXRSZWN0QXRTdGFydDsKICAgICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sg
c2hvdWxkIHRha2UgaW50byBhY2NvdW50IHdyaXRpbmcgZGlyZWN0aW9uLgotICAgICAgICBwb3N0
TGF5b3V0RGF0YS5pc1JlcGxhY2VBbGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYm
IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi5zdGFydCgpLCBXb3JkR3JhbnVsYXJp
dHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5pc1JlcGxhY2VB
bGxvd2VkID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KHNlbGVjdGlvbi5zdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgcG9zdExheW91dERhdGEud29y
ZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0Rm9yQ29udGV4dCh3b3JkUmFuZ2VGcm9tUG9zaXRpb24o
c2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0NvbnRl
bnRFZGl0YWJsZSgpKQogICAgICAgICAgICAgY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKHNlbGVj
dGlvbi5zdGFydCgpLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJBZnRlclNlbGVjdGlvbiwgcG9z
dExheW91dERhdGEuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS50d29D
aGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOwpAQCAtMzIzLDggKzMyMyw4IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmEKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBjb21wdXRlRWRpdGFibGVSb290SGFzQ29udGVudEFuZFBsYWluVGV4dChzZWxlY3Rp
b24sIHBvc3RMYXlvdXREYXRhKTsKLSAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uU3Rh
cnRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rp
b24udmlzaWJsZVN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6RGlyZWN0aW9uQmFja3dhcmQpOwotICAgICAgICBwb3N0TGF5
b3V0RGF0YS5zZWxlY3Rpb25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShzZWxlY3Rpb24udmlzaWJsZUVuZCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkRpcmVjdGlvbkZvcndhcmQpOwor
ICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFy
eSA9IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkVuZElzQXRQYXJhZ3Jh
cGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlRW5k
KCksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCk7CiAgICAgfQogfQogCkBAIC01NDksOCArNTQ5LDggQEAgdm9pZCBXZWJQ
YWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYQogICAgIGNvbnN0IGludCBzZWxlY3Rpb25F
eHRlbmRlZENvbnRleHRMZW5ndGggPSAzNTA7CiAgICAgCiAgICAgU3RyaW5nIHNlbGVjdGVkVGV4
dCA9IHBsYWluVGV4dEZvckNvbnRleHQoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9O
b3JtYWxpemVkUmFuZ2UoKSk7Ci0gICAgU3RyaW5nIHRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JE
aXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5
KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIHNlbGVjdGlvbkV4dGVuZGVk
Q29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKLSAgICBTdHJpbmcgdGV4
dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5E
aXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQo
KSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQo
KSk7CisgICAgU3RyaW5nIHRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhw
YW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0ZXh0QWZ0
ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVj
dGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpLCBz
ZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZCkuZ2V0KCkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWxlY3Rpb25D
b250ZXh0Q2FsbGJhY2soc2VsZWN0ZWRUZXh0LCB0ZXh0QmVmb3JlLCB0ZXh0QWZ0ZXIsIGNhbGxi
YWNrSUQpKTsKIH0KQEAgLTEzNDMsNyArMTM0Myw3IEBAIHN0YXRpYyBJbnRQb2ludCBjb25zdHJh
aW5Qb2ludChjb25zdCBJbnQKICAgICByZXR1cm4gY29uc3RyYWluZWRQb2ludDsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9pbnQm
IHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGlmIChzdGF0aWNfY2FzdDxHZXN0dXJlUmVjb2duaXpl
clN0YXRlPihnZXN0dXJlU3RhdGUpID09IEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkJlZ2FuKQog
ICAgICAgICBzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3RpbmdUZXh0QXRMb2NhdGlvbihwb2lu
dCk7CkBAIC0xMzUyLDExICsxMzUyLDExIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1
cmUoY29uc3QgSW4KICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50KTsKIAogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgMCwgY2FsbGJhY2tJRCkpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVyZVR5cGUsIGdl
c3R1cmVTdGF0ZSwgeyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAgICBTZWxlY3Rpb25GbGFncyBmbGFncyA9IE5vbmU7
CisgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFnczsKICAgICBHZXN0dXJlUmVjb2du
aXplclN0YXRlIHdrR2VzdHVyZVN0YXRlID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZT4oZ2VzdHVyZVN0YXRlKTsKICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdlc3R1cmVUeXBl
PihnZXN0dXJlVHlwZSkpIHsKICAgICBjYXNlIEdlc3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeToK
QEAgLTEzNjksNyArMTM2OSw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29u
c3QgSW4KICAgICAgICAgaWYgKHBvc2l0aW9uID4gbWFya2VkUmFuZ2UtPmVuZFBvc2l0aW9uKCkp
CiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1hcmtlZFJhbmdlLT5lbmRQb3NpdGlvbigpOwogICAg
ICAgICBpZiAod2tHZXN0dXJlU3RhdGUgIT0gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6QmVnYW4p
Ci0gICAgICAgICAgICBmbGFncyA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5n
ZS0+c3RhcnRQb3NpdGlvbigpLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KSAhPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcG9zaXRpb24pID8gUGhyYXNlQm91bmRhcnlDaGFuZ2VkIDogTm9uZTsKKyAgICAgICAgICAg
IGZsYWdzID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpICE9IGRpc3RhbmNl
QmV0d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbikg
PyBQaHJhc2VCb3VuZGFyeUNoYW5nZWQgOiBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IHsgfTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmxhZ3MgPSBQaHJhc2VCb3VuZGFyeUNoYW5nZWQ7
CiAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRp
b24sIHBvc2l0aW9uKTsKQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0
V2l0aEdlc3R1cmUoY29uc3QgSW4KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdlc3R1cmVU
eXBlOjpPbmVGaW5nZXJEb3VibGVUYXA6Ci0gICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAg
ICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAg
ICAgICAgICAvLyBEb3VibGUtdGFwIGF0IGVuZCBvZiBsaW5lIG9ubHkgcGxhY2VzIGluc2VydGlv
biBwb2ludCB0aGVyZS4KICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdG8gZ2V0IHRoZSBjYWxs
b3V0IGZvciBwYXN0aW5nIGF0IGVuZHMgb2YgbGluZXMsCiAgICAgICAgICAgICAvLyBwYXJhZ3Jh
cGhzLCBhbmQgZG9jdW1lbnRzLgpAQCAtMTQ1NCwxNyArMTQ1NCwxNyBAQCB2b2lkIFdlYlBhZ2U6
OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAKICAgICBjYXNlIEdlc3R1cmVUeXBlOjpUd29G
aW5nZXJTaW5nbGVUYXA6CiAgICAgICAgIC8vIFNpbmdsZSB0YXAgd2l0aCB0d28gZmluZ2VycyBz
ZWxlY3RzIHRoZSBlbnRpcmUgcGFyYWdyYXBoLgotICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1Rl
eHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVj
dGlvbkZvcndhcmQpOworICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdl
c3R1cmVUeXBlOjpPbmVGaW5nZXJUcmlwbGVUYXA6Ci0gICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkg
eworICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFu
dWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7
CiAgICAgICAgICAgICAvLyBUcmlwbGUtdGFwIGF0IGVuZCBvZiBsaW5lIG9ubHkgcGxhY2VzIGlu
c2VydGlvbiBwb2ludCB0aGVyZS4KICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdG8gZ2V0IHRo
ZSBjYWxsb3V0IGZvciBwYXN0aW5nIGF0IGVuZHMgb2YgbGluZXMsCiAgICAgICAgICAgICAvLyBw
YXJhZ3JhcGhzLCBhbmQgZG9jdW1lbnRzLgogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBv
c2l0aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAg
ICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTQ3Myw3ICsxNDcz
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgIGlmIChy
YW5nZSkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5n
ZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCi0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJl
U3RhdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFncyksIGNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKIH0KIAogc3RhdGljIFJl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludEluUm9vdFZpZXdDb29yZGluYXRlcyhGcmFtZSYgZnJh
bWUsIGNvbnN0IEludFBvaW50JiBwb2ludEluUm9vdFZpZXdDb29yZGluYXRlcywgYm9vbCBiYXNl
SXNTdGFydCkKQEAgLTE1MjcsMjcgKzE1MjcsMjcgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFu
Z2VGb3JQb2ludEluUm9vdAogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5k
YXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewot
ICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJl
Y3Rpb25Gb3J3YXJkIDogRGlyZWN0aW9uQmFja3dhcmQ7Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9u
IG9wcG9zaXRlRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERp
cmVjdGlvbkZvcndhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBi
YXNlSXNTdGFydCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9uIG9wcG9zaXRlRGlyZWN0aW9u
ID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOwogICAgIFZpc2libGVQb3NpdGlvbiBiYXNlID0gYmFzZUlzU3Rh
cnQgPyBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkgOiBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwogICAgIFZpc2libGVQb3Np
dGlvbiBleHRlbnQgPSBiYXNlSXNTdGFydCA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS52aXNpYmxlRW5kKCkgOiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0
YXJ0KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGluaXRpYWxFeHRlbnQgPSBwb3NpdGlvbjsKIAot
ICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwg
c2FtZURpcmVjdGlvbikpIHsKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50
LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHdvcmQgYm91bmRhcnkuIExlYXZlIHNlbGVjdGlvbiB3aGVyZSBp
dCBpcy4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlv
bikpIHsKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8v
IFRoaXMgaXMgYSB3b3JkIGJvdW5kYXJ5IGluIHRoZSB3cm9uZyBkaXJlY3Rpb24uIE51ZGdlIHRo
ZSBzZWxlY3Rpb24gdG8gYSBjaGFyYWN0ZXIgYmVmb3JlIHByb2NlZWRpbmcuCiAgICAgICAgIGV4
dGVudCA9IGJhc2VJc1N0YXJ0ID8gZXh0ZW50LnByZXZpb3VzKCkgOiBleHRlbnQubmV4dCgpOwog
ICAgIH0KIAogICAgIC8vIEV4dGVuZCB0byB0aGUgYm91bmRhcnkgb2YgdGhlIHdvcmQuCiAKLSAg
ICBWaXNpYmxlUG9zaXRpb24gd29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pOworICAg
IFZpc2libGVQb3NpdGlvbiB3b3JkQm91bmRhcnkgPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1l
RGlyZWN0aW9uKTsKICAgICBpZiAod29yZEJvdW5kYXJ5LmlzTm90TnVsbCgpCi0gICAgICAgICYm
IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHdvcmRCb3VuZGFyeSwgV29yZEdyYW51bGFyaXR5LCBz
YW1lRGlyZWN0aW9uKQorICAgICAgICAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eSh3b3JkQm91
bmRhcnksIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQog
ICAgICAgICAmJiBpbml0aWFsRXh0ZW50ICE9IHdvcmRCb3VuZGFyeSkgewogICAgICAgICBleHRl
bnQgPSB3b3JkQm91bmRhcnk7CiAgICAgICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVh
dGUoKmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwpAQCAtMTU1OCwxMCArMTU1OCwx
MCBAQCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5CiAKICAgICAvLyBJ
ZiB0aGlzIGlzIHdoZXJlIHRoZSBleHRlbnQgd2FzIGluaXRpYWxseSwgdGhlbiBpdGVyYXRlIGlu
IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gdGhlIGRvY3VtZW50IHVudGlsIHdlIGhpdCB0aGUgbmV4
dCB3b3JkLgogICAgIHdoaWxlIChleHRlbnQuaXNOb3ROdWxsKCkKLSAgICAgICAgJiYgIWF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9u
KQorICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKICAgICAgICAgJiYgZXh0ZW50
ICE9IGJhc2UKLSAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgTGlu
ZUdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQotICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoZXh0ZW50LCBMaW5lR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewor
ICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJp
dHk6OkxpbmVHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgIWF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHks
IG9wcG9zaXRlRGlyZWN0aW9uKSkgewogICAgICAgICBleHRlbnQgPSBiYXNlSXNTdGFydCA/IGV4
dGVudC5uZXh0KCkgOiBleHRlbnQucHJldmlvdXMoKTsKICAgICB9CiAKQEAgLTE2NzcsMjEgKzE2
NzcsMjAgQEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbgogICAgIH0K
IH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBJbnRQ
b2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25Ub3VjaCBzZWxlY3Rpb25Ub3VjaCwgYm9v
bCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
SW50UG9pbnQgcG9pbnRJbkRvY3VtZW50ID0gZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVu
dHMocG9pbnQpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KHBvaW50SW5Eb2N1bWVudCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVs
bCgpKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VG91Y2hlc0NhbGxi
YWNrKHBvaW50LCB0b3VjaGVzLCAwLCBjYWxsYmFja0lEKSk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VG91Y2hlc0NhbGxiYWNrKHBvaW50LCBzZWxlY3Rpb25Ub3VjaCwg
eyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7Ci0gICAgU2VsZWN0aW9u
RmxhZ3MgZmxhZ3MgPSBOb25lOworICAgIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3M7
CiAKLSAgICBhdXRvIHNlbGVjdGlvblRvdWNoID0gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uVG91Y2g+
KHRvdWNoZXMpOwogICAgIGlmIChzaG91bGREaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzV2hl
bk1vZGlmeWluZ1NlbGVjdGlvbigpKQogICAgICAgICBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZl
bnRzRm9yU2VsZWN0aW9uR2VzdHVyZShzZWxlY3Rpb25Ub3VjaCwgcG9pbnQpOwogCkBAIC0xNzEw
LDExICsxNzA5LDExIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0Zv
cndhcmQ6Ci0gICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZm
cmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAg
cmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwg
YmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgICAKICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJk
OgotICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJhbWUs
IHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgRGlyZWN0aW9uQmFja3dhcmQpOworICAgICAgICByYW5n
ZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJhbWUsIHBvc2l0aW9uLCBiYXNl
SXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6TW92ZWQ6CkBAIC0xNzI0LDEwICsxNzIzLDEwIEBA
IHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMKICAgICBpZiAocmFuZ2Up
CiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCks
IHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6VG91Y2hlc0NhbGxiYWNrKHBvaW50LCB0b3VjaGVzLCBmbGFncywgY2FsbGJhY2tJ
RCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VG91Y2hlc0NhbGxiYWNrKHBv
aW50LCBzZWxlY3Rpb25Ub3VjaCwgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNl
bGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBmcm9tLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgdG8sIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVj
b2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAg
IEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGZyb21Qb3NpdGlvbiA9IGZyYW1lLnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKGZyb20pKTsK
QEAgLTE3NDIsMTQgKzE3NDEsMTQgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hl
cyhjb25zdAogICAgIH0KIAogICAgIC8vIFdlIGNhbiB1c2UgdGhlIHNhbWUgY2FsbGJhY2sgZm9y
IHRoZSBnZXN0dXJlcyB3aXRoIG9uZSBwb2ludC4KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Okdlc3R1cmVDYWxsYmFjayhmcm9tLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCAw
LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJl
Q2FsbGJhY2soZnJvbSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgeyB9LCBjYWxsYmFja0lE
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5KQordm9pZCBXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5KQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgLy8gRm9yIHRoZSBtb21lbnQgd2Ug
aGFuZGxlIG9ubHkgV29yZEdyYW51bGFyaXR5LgotICAgIGlmIChncmFudWxhcml0eSAhPSBXb3Jk
R3JhbnVsYXJpdHkgfHwgIWZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKKyAgICAvLyBGb3Ig
dGhlIG1vbWVudCB3ZSBoYW5kbGUgb25seSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eS4KKyAgICBpZiAoZ3JhbnVsYXJpdHkgIT0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHkgfHwgIWZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuc3RhcnQoKTsKQEAgLTE3OTIsNyArMTc5MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29y
ZEJhY2t3YXJkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uID0gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24uaXNOb3RO
dWxsKCkgJiYgc3RhcnRQb3NpdGlvbiAhPSBwb3NpdGlvbikKICAgICAgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBz
dGFydFBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVk
KTsKIH0KQEAgLTE4MDQsMTAgKzE4MDMsMTAgQEAgdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9u
QnlPZmZzZXQoaW50MwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gb2Zmc2V0IDwgMCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZDsKKyAg
ICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwgMCA/IFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGFicyhvZmZzZXQpOyArK2kpIHsKLSAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IGRpcmVjdGlvbik7CisgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTE5NDMsNyArMTk0Miw3IEBAIHZvaWQgV2ViUGFnZTo6cmVx
dWVzdEV2YXNpb25SZWN0c0Fib3ZlU2UKICAgICByZXBseShXVEZNb3ZlKHJlY3RzVG9Bdm9pZElu
Um9vdFZpZXdDb29yZGluYXRlcykpOwogfQogCi12b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3Jh
bnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90
IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpnZXRSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fc3RvcmVkU2VsZWN0
aW9uRm9yQWNjZXNzaWJpbGl0eS5pc05vbmUoKSA/IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpIDogbV9zdG9yZWRTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5OwpAQCAtMTk1NSw5ICsxOTU0
LDkgQEAgdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aAogICAgIH0KIAog
ICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQo
c2VsZWN0aW9uU3RhcnQsIG9mZnNldCk7Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
biA9IG9mZnNldCA8IDAgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVjdGlvbkZvcndhcmQ7Cisg
ICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogCi0gICAg
YXV0byByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIGRpcmVjdGlv
bik7CisgICAgYXV0byByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CiAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+
Y29sbGFwc2VkKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWxl
Y3Rpb25SZWN0c0NhbGxiYWNrKHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICByZXR1cm47CkBA
IC0yMDQ4LDUyICsyMDQ3LDUyIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50
KGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5k
YXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVG
b3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwog
CiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgIHBvc2l0aW9uID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDxTZWxlY3Rp
b25EaXJlY3Rpb24+KGRpcmVjdGlvbikpOworICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9u
KTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIH0K
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3Qg
ZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIAogICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuaXNOb25lKCkpIHsKLSAgICAgICAgYm9vbCBpc0ZvcndhcmQgPSAoZGlyZWN0aW9u
ID09IERpcmVjdGlvbkZvcndhcmQgfHwgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KTsKKyAg
ICAgICAgYm9vbCBpc0ZvcndhcmQgPSAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCB8fCBkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCk7CiAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IChpc0ZvcndhcmQpID8gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpIDogZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkudmlzaWJsZVN0YXJ0KCk7Ci0gICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+
KGRpcmVjdGlvbikpOworICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICAgICAg
aWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlv
biwgcG9zaXRpb24pLnB0cigpLCBpc0ZvcndhcmQ/IFVQU1RSRUFNIDogRE9XTlNUUkVBTSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIH0KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1SZWZQdHI8UmFuZ2U+
IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KEZyYW1lJiBmcmFtZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQorUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5n
ZUZvckdyYW51bGFyaXR5QXRQb2ludChGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2lu
dCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAKICAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlOwotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
PihncmFudWxhcml0eSkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIHN3
aXRjaCAoZ3JhbnVsYXJpdHkpIHsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CiAgICAgICAgIHJhbmdlID0gbWFrZVJhbmdlKHBvc2l0aW9uLCBwb3NpdGlv
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHJhbmdlID0gd29yZFJh
bmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50
ZW5jZUdyYW51bGFyaXR5OgotICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eShwb3NpdGlvbiwgU2VudGVuY2VHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAg
IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBQYXJh
Z3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1Rl
eHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIg
d2h5IHRoaXMgbXV0YXRlcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gYW5kIHJldHVybnMgbnVsbC4K
ICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0QWxsKCk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMjExOCw3ICsyMTE3LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRGb2N1c2VkRnJhbWVCZWZvcmVT
ZWxlYwogICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRGcmFtZShy
ZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxlY3Rp
bmdUZXh0QXRMb2NhdGlvbihwb2ludCk7CiAKQEAgLTIxMzAsMTMgKzIxMjksMTMgQEAgdm9pZCBX
ZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QQogICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJf
dCBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YmVnaW5T
ZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgbV9zZWxlY3Rpb25BbmNob3IgPSAoc3Rh
dGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pID09IERpcmVjdGlvbkxlZnQp
ID8gU3RhcnQgOiBFbmQ7CisgICAgbV9zZWxlY3Rpb25BbmNob3IgPSBkaXJlY3Rpb24gPT0gU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0ID8gU3RhcnQgOiBFbmQ7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0
LCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZv
clBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CkBA
IC0yMjMyLDcgKzIyMzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0
KENhCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBzdGFydFBvc2l0
aW9uOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
bjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3RhdGlvbkNvbnRleHRXb3Jk
Q291bnQ7ICsraSkgewotICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRPZldvcmQo
cG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkobGFzdFBvc2l0aW9uLCBXb3JkR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSk7CisgICAgICAgICAgICBjdXJyZW50UG9zaXRp
b24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0
UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkKSk7CiAgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTnVs
bCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGFzdFBvc2l0aW9uID0g
Y3VycmVudFBvc2l0aW9uOwpAQCAtMjI0Niw3ICsyMjQ1LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1
ZXN0RGljdGF0aW9uQ29udGV4dChDYQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBv
c2l0aW9uID0gZW5kUG9zaXRpb247CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0UG9zaXRp
b24gPSBlbmRQb3NpdGlvbjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3Rh
dGlvbkNvbnRleHRXb3JkQ291bnQ7ICsraSkgewotICAgICAgICAgICAgY3VycmVudFBvc2l0aW9u
ID0gZW5kT2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSk7CisgICAgICAgICAgICBj
dXJyZW50UG9zaXRpb24gPSBlbmRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkobGFzdFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSk7CiAgICAgICAgICAgICBpZiAoY3VycmVudFBvc2l0
aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgbGFzdFBv
c2l0aW9uID0gY3VycmVudFBvc2l0aW9uOwpAQCAtMjQzMiw3ICsyNDMxLDcgQEAgYm9vbCBXZWJQ
YWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYQogICAgIGlmIChjb3JyZWN0aW9uLmxlbmd0
aCgpKQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRUZXh0KGNvcnJlY3Rpb24sIDAsIG9y
aWdpbmFsVGV4dC5pc0VtcHR5KCkgPyBUZXh0RXZlbnRJbnB1dEtleWJvYXJkIDogVGV4dEV2ZW50
SW5wdXRBdXRvY29tcGxldGlvbik7CiAgICAgZWxzZSBpZiAob3JpZ2luYWxUZXh0Lmxlbmd0aCgp
KQotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJh
Y2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgICAgICBmcmFt
ZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ3Nyw3ICsyNDc2LDcgQEAgV2ViQXV0b2NvcnJl
Y3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jbwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1pbkNvbnRleHRXb3JkQ291bnQ7ICsraSkgewogICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0QmVmb3JlLmxlbmd0aCgpID49IG1pbkNvbnRleHRMZW5naHQpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFy
dE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRp
b24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKyAgICAgICAgICAgICAg
ICBwcmV2aW91c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpOwogICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c1Bvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHRGb3JDb250ZXh0
KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHByZXZpb3VzUG9zaXRpb24sIGN1cnJl
bnRQb3NpdGlvbikucHRyKCkpOwpAQCAtMjQ4OCwxNSArMjQ4NywxNSBAQCBXZWJBdXRvY29ycmVj
dGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIGN1cnJlbnRQb3NpdGlvbiAhPSBzdGFy
dFBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dEJlZm9yZSA9IHBsYWluVGV4dEZv
ckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgY3VycmVudFBvc2l0aW9u
LCBzdGFydFBvc2l0aW9uKS5wdHIoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVj
dGlvbkJhY2t3YXJkKSkKKyAgICAgICAgICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dEJlZm9yZSA9IG1ha2VTdHJpbmcoIlxuICJfcywgY29udGV4dEJlZm9yZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZW5kUG9zaXRpb24gIT0gZW5kT2ZFZGl0
YWJsZUNvbnRlbnQoZW5kUG9zaXRpb24pKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
bmV4dFBvc2l0aW9uOwotICAgICAgICAgICAgaWYgKCFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
bmRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSAmJiB3aXRoaW5U
ZXh0VW5pdE9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0
aW9uRm9yd2FyZCkpCi0gICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGly
ZWN0aW9uRm9yd2FyZCk7CisgICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGVuZFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkKSAmJiB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoZW5kUG9z
aXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rp
b246OkZvcndhcmQpKQorICAgICAgICAgICAgICAgIG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6Oldv
cmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgICAg
IGlmIChuZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICAgICAgY29udGV4dEFm
dGVyID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
LCBlbmRQb3NpdGlvbiwgbmV4dFBvc2l0aW9uKS5wdHIoKSk7CiAgICAgICAgIH0KQEAgLTI2MzAs
OSArMjYyOSw5IEBAIHN0YXRpYyB2b2lkIGRhdGFEZXRlY3RvckxpbmtQb3NpdGlvbkluZm8KICAg
ICBhdXRvIGxpbmtSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZWxlbWVudC5kb2N1bWVudCgpKTsKICAg
ICBsaW5rUmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTsKICAgICBpbmZvLnRleHRC
ZWZvcmUgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRp
cmVjdGlvbkF0V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+c3RhcnRQb3NpdGlvbigpLAotICAgICAg
ICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCku
Z2V0KCkpOworICAgICAgICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKS5nZXQoKSk7CiAgICAgaW5mby50ZXh0QWZ0ZXIgPSBw
bGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0
V29yZEJvdW5kYXJ5KGxpbmtSYW5nZS0+ZW5kUG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURldGVj
dGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCkpOworICAg
ICAgICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rp
b246OkZvcndhcmQpLmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC00MDY5LDcgKzQwNjgsNyBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIG1vdmVCeUdyYW51bGFyaXR5CiB7CiAgICAgQVNTRVJUKGdy
YW51bGFyaXR5Q291bnQpOwogICAgIEFTU0VSVChwb3NpdGlvbi5pc05vdE51bGwoKSk7Ci0gICAg
Ym9vbCBiYWNrd2FyZHMgPSBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgYm9v
bCBiYWNrd2FyZHMgPSBkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsK
ICAgICBhdXRvIGZhcnRoZXN0UG9zaXRpb25JbkRpcmVjdGlvbiA9IGJhY2t3YXJkcyA/IHN0YXJ0
T2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRpb24pIDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRp
b24pOwogICAgIGlmIChwb3NpdGlvbiA9PSBmYXJ0aGVzdFBvc2l0aW9uSW5EaXJlY3Rpb24pCiAg
ICAgICAgIHJldHVybiBiYWNrd2FyZHMgPyBzdGFydE9mV29yZChwb3NpdGlvbikgOiBlbmRPZldv
cmQocG9zaXRpb24pOwpAQCAtNDA4Myw4ICs0MDgyLDggQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biBtb3ZlQnlHcmFudWxhcml0eQogICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
Y3VycmVudFBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKSkKICAgICAgICAgICAgIC0t
Z3JhbnVsYXJpdHlDb3VudDsKICAgICB9IHdoaWxlIChncmFudWxhcml0eUNvdW50KTsKLSAgICBp
ZiAoZ3JhbnVsYXJpdHkgPT0gU2VudGVuY2VHcmFudWxhcml0eSkgewotICAgICAgICBBU1NFUlQo
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBTZW50ZW5jZUdyYW51bGFy
aXR5LCBkaXJlY3Rpb24pKTsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5
OjpTZW50ZW5jZUdyYW51bGFyaXR5KSB7CisgICAgICAgIEFTU0VSVChhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxh
cml0eSwgZGlyZWN0aW9uKSk7CiAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAg
fQogICAgIC8vIE5vdGUgdGhhdCB0aGlzIHJvdW5kcyB0byB0aGUgbmVhcmVzdCB3b3JkLCB3aGlj
aCBtYXkgY3Jvc3MgYSBsaW5lIGJvdW5kYXJ5IHdoZW4gdXNpbmcgbGluZSBncmFudWxhcml0eS4K
QEAgLTQxOTcsOCArNDE5Niw4IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGlu
Z0NvbnQKICAgICBWaXNpYmxlUG9zaXRpb24gY29udGV4dEFmdGVyRW5kOwogICAgIGF1dG8gY29t
cG9zaXRpb25SYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCk7CiAgICAg
aWYgKHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCkgewotICAgICAgICBjb250ZXh0QmVmb3JlU3Rh
cnQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVy
ZXN0U3RhcnQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFudWxh
cml0eUNvdW50LCBEaXJlY3Rpb25CYWNrd2FyZCk7Ci0gICAgICAgIGNvbnRleHRBZnRlckVuZCA9
IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5nZU9mSW50ZXJlc3RF
bmQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFudWxhcml0eUNv
dW50LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgY29udGV4dEJlZm9yZVN0YXJ0ID0gbW92
ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJhbmdlT2ZJbnRlcmVzdFN0YXJ0
LCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3Vu
dCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CisgICAgICAgIGNvbnRleHRBZnRlckVu
ZCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5nZU9mSW50ZXJl
c3RFbmQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFudWxhcml0
eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGNvbnRleHRCZWZvcmVTdGFydCA9IHJhbmdlT2ZJbnRlcmVzdFN0YXJ0OwogICAgICAgICBj
b250ZXh0QWZ0ZXJFbmQgPSByYW5nZU9mSW50ZXJlc3RFbmQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24g
MjYxNjgwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
Rm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5o
PgpAQCAtNzczLDI0ICs3NzQsMTggQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkZyb21Q
REZEb2N1bQogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwo
V2ViRnJhbWUqLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICB1aW50MzJfdCBwb2xpY3lSZXN1bHQg
PSAwOwotCi0gICAgaWYgKHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9s
aWN5Rm9yVVJMKHVybCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJM
OjpSZXBseShwb2xpY3lSZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkdM
TG9hZFBvbGljeT4ocG9saWN5UmVzdWx0KTsKLQotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRp
b247CisgICAgV2ViR0xMb2FkUG9saWN5IHBvbGljeVJlc3VsdCA9IFdlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OldlYkdMUG9saWN5Rm9yVVJMKHVybCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9s
aWN5Rm9yVVJMOjpSZXBseShwb2xpY3lSZXN1bHQpKTsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9s
aWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBX
ZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmIHVybCkKIHsKLSAgICB1aW50MzJfdCBw
b2xpY3lSZXN1bHQgPSAwOwotCi0gICAgaWYgKHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViR0xMb2FkUG9saWN5Pihwb2xpY3lSZXN1bHQpOwotCi0g
ICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5
UmVzdWx0ID0gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKHVybCks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6UmVwbHko
cG9saWN5UmVzdWx0KSk7CisgICAgcmV0dXJuIHBvbGljeVJlc3VsdDsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2MTY4MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA1LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0gc2VyaWFsaXphdGlvbiBp
bnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgYWdncmVzc2l2ZWx5RXhwYW5kU2VsZWN0aW9uVG9Xb3Jk
Q29udGFpbmluZ0NhcmV0U2VsZWN0aW9uXSk6CisgICAgICAgICgtW1dlYkZyYW1lIHNldFNlbGVj
dGlvbkdyYW51bGFyaXR5Ol0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQ
b3NpdGlvbi5tbToKKyAgICAgICAgKHRvVGV4dEdyYW51bGFyaXR5KToKKyAgICAgICAgKHRvU2Vs
ZWN0aW9uRGlyZWN0aW9uKToKKwogMjAyMC0wNS0xMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGlja2luZyBhIHRlbDovLyBsaW5rIG9uIGlQYWQg
d2l0aCBhIHRyYWNrcGFkIHByZXNlbnRzIGRpZmZlcmVudCBVSSB0aGFuIHRhcHBpbmcgb24gaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDg0
LDcgKzQ4NCw3IEBAIC0gKHZvaWQpYWdncmVzc2l2ZWx5RXhwYW5kU2VsZWN0aW9uVG9Xb3IKIAog
ICAgIC8vIFRoaXMgaXMgYSB0ZW1wb3JhcnkgaGFjayB1bnRpbCB3ZSBnZXQgdGhlIGltcHJvdmVt
ZW50cwogICAgIC8vIEknbSB3b3JraW5nIG9uIGZvciBSVEwgc2VsZWN0aW9uLgotICAgIGlmIChm
cmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSkKKyAgICBpZiAo
ZnJhbWVTZWxlY3Rpb24uZ3JhbnVsYXJpdHkoKSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eSkKICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKGZyYW1lU2VsZWN0aW9uLnNl
bGVjdGlvbigpLnN0YXJ0KCksIGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpKTsKICAg
ICAKICAgICBpZiAoZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJldCgpKSB7CkBAIC02
MDQsMjMgKzYwNCwyMyBAQCAtICh2b2lkKW1vdmVTZWxlY3Rpb25Ub1BvaW50OihDR1BvaW50KXBv
CiAKIC0gKHZvaWQpc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6KFdlYlRleHRHcmFudWxhcml0eSln
cmFudWxhcml0eQogewotICAgIFRleHRHcmFudWxhcml0eSB3Y0dyYW51bGFyaXR5ID0gQ2hhcmFj
dGVyR3JhbnVsYXJpdHk7CisgICAgVGV4dEdyYW51bGFyaXR5IHdjR3JhbnVsYXJpdHkgPSBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgIHN3aXRjaCAoZ3JhbnVsYXJp
dHkpIHsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAg
ICAgICB3Y0dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgICAgICB3
Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxhcml0eVdvcmQ6Ci0g
ICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gV29yZEdyYW51bGFyaXR5OworICAgICAgICAgICAg
d2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0g
ICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gU2VudGVuY2VHcmFudWxhcml0eTsKKyAgICAgICAg
ICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlQYXJh
Z3JhcGg6Ci0gICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gUGFyYWdyYXBoR3JhbnVsYXJpdHk7
CisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFu
dWxhcml0eUFsbDoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgRG9jdW1lbnRHcmFudWxhcml0
eS4KLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBBZGQgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFy
aXR5LgorICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bi5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsMjcg
KzIwNSwyNyBAQCBzdGF0aWMgaW5saW5lIFRleHRHcmFudWxhcml0eSB0b1RleHRHcmFuCiAgICAg
CiAgICAgc3dpdGNoICh3ZWJHcmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFdlYlRleHRHcmFu
dWxhcml0eUNoYXJhY3RlcjoKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hh
cmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YlRleHRHcmFudWxhcml0eVdvcmQ6Ci0gICAgICAgICAgICBncmFudWxhcml0eSA9IFdvcmRHcmFu
dWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYlRleHRH
cmFudWxhcml0eVNlbnRlbmNlOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdy
YW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdl
YlRleHRHcmFudWxhcml0eUxpbmU6Ci0gICAgICAgICAgICBncmFudWxhcml0eSA9IExpbmVHcmFu
dWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5l
R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdlYlRleHRH
cmFudWxhcml0eVBhcmFncmFwaDoKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gUGFyYWdyYXBo
R3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IFdlYlRleHRHcmFudWxhcml0eUFsbDoKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gRG9jdW1l
bnRHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVm
YXVsdDoKQEAgLTI0MiwyNyArMjQyLDI3IEBAIHN0YXRpYyBpbmxpbmUgU2VsZWN0aW9uRGlyZWN0
aW9uIHRvU2VsZWMKICAgICAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgICAgICBjYXNl
IFdlYlRleHRBZGp1c3RtZW50Rm9yd2FyZDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVjdGlv
bkZvcndhcmQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFdlYlRl
eHRBZGp1c3RtZW50QmFja3dhcmQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25CYWNr
d2FyZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFdlYlRleHRB
ZGp1c3RtZW50UmlnaHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25SaWdodDsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFdlYlRleHRBZGp1c3RtZW50TGVm
dDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVjdGlvbkxlZnQ7CisgICAgICAgICAgICByZXN1
bHQgPSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRVcDoKLSAgICAgICAgICAgIHJlc3Vs
dCA9IERpcmVjdGlvbkxlZnQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgICAgIGNhc2UgV2Vi
VGV4dEFkanVzdG1lbnREb3duOgotICAgICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uUmlnaHQ7
CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNS0xNCAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNlcmlhbGl6
YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbToKKyAgICAgICAgKC1bRE9NUmFuZ2UgbW92ZTppbkRpcmVjdGlvbjpdKToKKyAgICAgICAg
KC1bRE9NUmFuZ2UgZXh0ZW5kOmluRGlyZWN0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OndlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9jYW5TbWFydENvcHlPckRl
bGV0ZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIgZG9Db21wbGV0aW9uXSk6
CisKIDIwMjAtMDUtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0syXSBOZXV0ZXIgV0tGcmFtZUlzRnJhbWVTZXQoKSAvIFdLUGFnZUdldEZyYW1lU2V0TGFy
Z2VzdEZyYW1lKCkgQyBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQkod29ya2luZyBjb3B5KQpA
QCAtODIsMTUgKzgyLDE1IEBAIC0gKHZvaWQpbW92ZTooVUludDMyKWFtb3VudCBpbkRpcmVjdGlv
bjoKICAgICBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFt
ZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UpOwogICAgIAotICAgIFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSBncmFudWxhcml0eSA9IFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5OworICAgIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgLy8gVW50aWwgV2ViS2l0IHN1cHBvcnRz
IHZlcnRpY2FsIGxheW91dCwgImRvd24iIGlzIGVxdWl2YWxlbnQgdG8gImZvcndhcmQgYnkgYSBs
aW5lIiBhbmQKICAgICAvLyAidXAiIGlzIGVxdWl2YWxlbnQgdG8gImJhY2t3YXJkIGJ5IGEgbGlu
ZSIuCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudERvd24pIHsKICAgICAg
ICAgZGlyZWN0aW9uID0gV2ViVGV4dEFkanVzdG1lbnRGb3J3YXJkOwotICAgICAgICBncmFudWxh
cml0eSA9IFdlYkNvcmU6OkxpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICB9IGVsc2UgaWYg
KGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudFVwKSB7CiAgICAgICAgIGRpcmVjdGlvbiA9
IFdlYlRleHRBZGp1c3RtZW50QmFja3dhcmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6TGluZUdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgIH0KICAgICAKICAgICBmb3IgKFVJbnQz
MiBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQpAQCAtMTExLDcgKzExMSw3IEBAIC0gKHZvaWQpZXh0
ZW5kOihVSW50MzIpYW1vdW50IGluRGlyZWN0aW8KICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8o
cmFuZ2UpOwogICAgIAogICAgIGZvciAoVUludDMyIGkgPSAwOyBpIDwgYW1vdW50OyBpKyspCi0g
ICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24sIFdl
YkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9k
aWZ5KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCAoV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uKWRpcmVjdGlvbiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpD
aGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgCiAgICAgUG9zaXRpb24gc3RhcnQgPSBmcmFtZVNl
bGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwog
ICAgIFBvc2l0aW9uIGVuZCA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmVuZCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0J
KHJldmlzaW9uIDI2MTY4MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEyLDEyICsy
MTEyLDEyIEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrV2ViR0woKQogCiBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFVSTCYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6
OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICBy
ZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TEJsb2NrQ3JlYXRpb24gOiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbjsKIH0KIAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QKIHsKLSAgICByZXR1
cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2Vi
Q29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkg
PyBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogI2VuZGlmIC8vIEVOQUJM
RShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAyNjE2ODApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzMyLDcgKzU3MzIs
NyBAQCAtIChCT09MKV9jYW5TbWFydENvcHlPckRlbGV0ZQogICAgIGlmICghW1tzZWxmIF93ZWJW
aWV3XSBzbWFydEluc2VydERlbGV0ZUVuYWJsZWRdKQogICAgICAgICByZXR1cm4gTk87CiAgICAg
YXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICByZXR1cm4gY29yZUZy
YW1lICYmIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBXZWJDb3JlOjpX
b3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPnNlbGVj
dGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29u
dHJvbGxlci5tbQkocmV2aXNpb24gMjYxNjgwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKWRvQ29tcGxldGlvbgogICAgICAgICBXZWJGcmFtZSAq
ZnJhbWUgPSBbX2h0bWxWaWV3IF9mcmFtZV07CiAgICAgICAgIERPTVJhbmdlICpzZWxlY3Rpb24g
PSBraXQoY3JlYXRlTGl2ZVJhbmdlKGNvcmUoZnJhbWUpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpKS5nZXQoKSk7CiAgICAgICAgIERPTVJhbmdlICp3aG9sZVdv
cmQgPSBbZnJhbWUgX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246RnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25FeHRlbmQKLSAgICAgICAgICAgIGRpcmVjdGlvbjpEaXJlY3Rpb25CYWNr
d2FyZCBncmFudWxhcml0eTpXb3JkR3JhbnVsYXJpdHldOworICAgICAgICAgICAgZGlyZWN0aW9u
OlNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgZ3JhbnVsYXJpdHk6VGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHldOwogICAgICAgICBET01SYW5nZSAqcHJlZml4ID0gW3dob2xlV29y
ZCBjbG9uZVJhbmdlXTsKICAgICAgICAgW3ByZWZpeCBzZXRFbmQ6W3NlbGVjdGlvbiBzdGFydENv
bnRhaW5lcl0gb2Zmc2V0OltzZWxlY3Rpb24gc3RhcnRPZmZzZXRdXTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399370</attachid>
            <date>2020-05-14 09:30:59 -0700</date>
            <delta_ts>2020-05-14 10:27:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514093058.patch</filename>
            <type>text/plain</type>
            <size>234102</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTQgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbiBuZWVkcyB0byBhcHBseSBwZW5k
aW5nIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSBnaXZlbiBub2RlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEyLDcgKzIwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgRnJhbWVTZWxlY3Rp
b24gc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkpOwogICAgIAogICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCAtICh2
b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRlCiAgICAgaWYgKGZyYW1lU2VsZWN0
aW9uLmlzTm9uZSgpICYmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPCByYW5nZS5zdGFydCB8
fCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpID4gcmFuZ2UuZW5kKSkKICAgICAgICAgZnJhbWVTZWxl
Y3Rpb24ubW92ZVRvKHJhbmdlLnN0YXJ0LCBVc2VyVHJpZ2dlcmVkKTsKICAgICAKLSAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChpbmNy
ZWFzZSkgPyBEaXJlY3Rpb25SaWdodCA6IERpcmVjdGlvbkxlZnQsIGdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0IDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBncmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9
CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUluY3JlYXNlU2VsZWN0aW9uOihUZXh0R3JhbnVsYXJp
dHkpZ3JhbnVsYXJpdHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0JlaGF2
aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQmVoYXZp
b3IuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
QmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT24gaU9TLCB3ZSBkb24ndCB3YW50IHRvIHNlbGVjdCBhbGwgdGhlIHRleHQgd2hlbiBmb2N1
c2luZyBhIGZpZWxkLiBJbnN0ZWFkLCBtYXRjaCBwbGF0Zm9ybSBiZWhhdmlvciBieSBnb2luZyB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgIGJvb2wgc2hvdWxkTW92ZVNlbGVjdGlvblRvRW5k
V2hlbkZvY3VzaW5nVGV4dElucHV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAotICAgIC8vIE9uIGlPUywgd2hlbiBzbWFydCBkZWxldGUgaXMg
b24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBkbyBub3QgYWRkaXRpb25hbCBjaGVja3Mg
KGkuZS4gV29yZEdyYW51bGFyaXR5KS4KKyAgICAvLyBPbiBpT1MsIHdoZW4gc21hcnQgZGVsZXRl
IGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91bGQgZG8gbm90IGFkZGl0aW9uYWwgY2hl
Y2tzIChpLmUuIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KS4KICAgICBib29sIHNo
b3VsZEFsd2F5c1NtYXJ0RGVsZXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAogICAgIC8vIE9uIGlPUywgd2Ugc2hvdWxkIHR1cm4gb24gc21h
cnQgaW5zZXJ0IGFuZCBkZWxldGUgYW5kIG5ld2xpbmVzIGFyb3VuZCBwYXJhZ3JhcGhzIHRvIG1h
dGNoIFVJS2l0IGJlaGF2aW91ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgRWRpdG9yOjpzaG91bGRTbWFydERl
bGV0ZSgpCiB7CiAgICAgaWYgKGJlaGF2aW9yKCkuc2hvdWxkQWx3YXlzU21hcnREZWxldGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eTsKIH0KIAogYm9vbCBFZGl0b3I6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCkBAIC01
NjgsMTIgKzU2OCwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
CiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQogICAgICAgICAgICAgb3B0aW9ucyB8
PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgICAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3Jh
bnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uQmFj
a3dhcmQ6Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1l
bnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIFN0cmluZyBFZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRD
YXJldE9yUmEKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIHdvcmRTZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7
CiAgICAgYXV0byB3b3JkUmFuZ2UgPSB3b3JkU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgaWYgKCF3b3JkUmFuZ2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0MDIs
NyArMjQwMiw3IEBAIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWwKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlv
cigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewog
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgd29yZFNlbGVj
dGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5KTsKICAgICAgICAgICAgIHJhbmdlID0gd29yZFNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCk7CkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUg
Y2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRv
KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
CkBAIC0yOTE5LDExICsyOTE5LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihj
b25zdCBTcGUKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFn
cmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhC
b3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24s
IHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxh
Y2VtZW50CiAgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9p
ZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleAogICAgIH0gZWxzZQogICAgICAg
ICBpbnNlcnRUZXh0KGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LCBudWxscHRyKTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCksIERpcmVjdGlvbkJh
Y2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UgPSByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoaW5zZXJ0ZWRDYW5kaWRhdGVS
YW5nZSkKICAgICAgICAgaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoKmluc2VydGVkQ2FuZGlkYXRlUmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCwzMiArMzA0LDMyIEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGUoRnJhbWUmIGZyYW1lLCAKIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJh
Y2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLmVkaXRvcigpLmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRl
V2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYQogewogICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXAKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBu
YW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9m
CiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LgotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9N
YXJrKEZyYW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2Fy
ZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDI0LDcg
KzQyNCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lJiAKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpAQCAtNjA2LDQ3ICs2MDYsNDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdAogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg4LDIwMyAr
Njg4LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdy
YW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7Cisg
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFNl
bnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVk
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9m
U2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0Vu
ZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNl
clRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZy
YW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQs
IFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMzUsMTcgKzEwMzUsMTcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSYgZnJhbQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
U2VsZWN0TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShm
cmFtZSwgTGluZUdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHkpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0UGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRT
ZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0
U2VudGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJh
bWUsIFNlbnRlbmNlR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtMTA2Miw3ICsxMDYyLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZgogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU2VsZWN0V29yZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3QKIEZy
YW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oKSkKLSAgICAsIG1fZ3JhbnVsYXJp
dHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgLCBtX2dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAg
LCBtX2NhcmV0QmxpbmtUaW1lcigqdGhpcywgJkZyYW1lU2VsZWN0aW9uOjpjYXJldEJsaW5rVGlt
ZXJGaXJlZCkKICNlbmRpZgpAQCAtNjc2LDIyICs2NzYsMjIgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6d2lsbEJlTW9kaWZpZWQoRUFsdAogICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNl
IERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6
CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJh
c2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFz
ZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoK
ICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNzY1LDM0ICs3NjUsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeAogICAgIC8vIGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhl
IGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4
dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERp
cmVjdGlvbjo6UlRMLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJh
Y3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2
aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2Fz
ZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
PwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODA2LDM0ICs4MDYsMzQgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogewogICAgIFZpc2libGVQb3Np
dGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlv
blBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBv
c2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAg
ICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpM
aW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZv
cm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBl
bmRPZlBhcmFncmFwaChlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBpZiAoaXNF
ZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9
IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC04NTMsNyArODUzLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5
ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpIHsK
ICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtODYyLDcgKzg2Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwpAQCAtODcwLDE5ICs4NzAsMTkgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgKnJlYWNoZWRC
b3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHJpZ2h0Qm91bmRhcnlPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg5NSwxNSArODk1
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAg
KnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9z
aXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGN1cnJlbnRQb3Np
dGlvbiA9IGVuZEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBA
IC05MTIsMTkgKzkxMiwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICAvLyBGSVhNRTogU3RheSBpbiBlZGl0
YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24gZ3JhbnVsYXJpdGllcy4KICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRX
b3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewogICAg
ICAgICAvLyBkb3duLWFycm93aW5nIGZyb20gYSByYW5nZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0
IHRoZSBzdGFydCBvZiBhIGxpbmUgbmVlZHMKICAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVj
dGlvbiBhdCB0aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9u
ISkKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9uOwpAQCAtOTMyLDIyICs5MzIsMjIgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9z
ID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0
aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50
UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihT
VEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgp
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAg
ICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKQEAgLTk1NiwxMyArOTU2LDEz
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9z
ID09IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgYnJlYWs7CkBAIC05ODIsMzMgKzk4MiwzMyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0
ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGly
ZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYg
dGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2Fy
ZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9j
dW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTEwMjcsMzggKzEwMjcsMzggQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIEl0IHdhcyBkb25lIGhlcmUgaW5zdGVhZCBv
ZiBpbiBWaXNpYmxlUG9zaXRpb24gYmVjYXVzZSB3ZSB3YW50IFZQcyB0byBpdGVyYXRlCiAgICAg
Ly8gb3ZlciBldmVyeXRoaW5nLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9z
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5l
UG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAg
ICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBs
YXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2Fs
U3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRGb3JQbGF0Zm9y
bSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFy
dEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChw
b3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9z
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA3NCw3ICsxMDc0LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVh
Y2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtMTA4Myw3ICsx
MDgzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxlZnQodHJ1ZSwgcmVhY2hlZEJvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CiAgICAgICAgIGJvb2wgc2tpcHNT
cGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+ZWRpdG9yKCku
YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9IGxlZnRXb3JkUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKQEAgLTEwOTEsMTkgKzEwOTEs
MTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAg
ICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAg
ICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsZWZ0Qm91bmRh
cnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCks
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTExMTYsMTUgKzExMTYsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpAQCAtMTEzMiw1MiArMTEzMiw1MiBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAg
ICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExp
bmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgogICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxp
bmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlv
dXNQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZv
ckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShjdXJyZW50UG9zaXRpb24p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxp
bmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQ
YXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChjdXJyZW50
UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVl
cEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50
KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChw
b3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFn
cmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAg
ICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAg
ICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KIAogc3RhdGljIGJvb2wgaXNCb3VuZGFyeShUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8
fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBEb2N1
bWVudEJvdW5kYXJ5OworICAgIHJldHVybiBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeTsKIH0KIAogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OnRleHRT
ZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKQEAgLTEyMDIsNTUgKzEyMDIsNTUg
QEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OgogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVu
ZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
aW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
V29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkg
PSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVj
dGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBib29sIGJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5
OgogICAgICAgICBib3VuZGFyeSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6Ci0gICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKKyAg
ICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5
KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5k
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA6IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoK
LSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAg
aWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBm
bGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uQmVnaW5uaW5nOwogICAgICAgICBlbHNlCkBAIC0xMjYyLDU4ICsxMjYyLDU4IEBAIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKIAogc3RhdGljIEFYVGV4dFNlbGVj
dGlvbiB0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFyaXR5KFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICAv
LyBGSVhNRTogQWNjb3VudCBmb3IgQklESSBpbiBEaXJlY3Rpb25SaWdodCAmIERpcmVjdGlvbkxl
ZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQgbWFwIHRvIFByZXZpb3VzL0JlZ2lubmlu
ZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCisgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIEJJREkg
aW4gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCAmIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdC4g
KEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAgdG8gUHJldmlvdXMvQmVnaW5uaW5nIGFu
ZCBMZWZ0IHRvIE5leHQvRW5kLikKICAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24gaW50ZW50
RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5rbm93bjsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIGlu
dGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25M
ZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IGludGVudEdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duOwogICAgIHN3aXRjaCAoZ3Jh
bnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVs
YXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxl
Y3Rpb25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFy
eSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3Vu
ZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAg
ICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6IC8v
IEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBk
aXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBz
aG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBp
bnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAg
ICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgICAgICBpbnRl
bnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xMzQ0LDI1ICsxMzQ0LDI1IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlm
eShFQWx0ZXJhdGlvbiAKICAgICBQb3NpdGlvbiBvcmlnaW5hbFN0YXJ0UG9zaXRpb24gPSBtX3Nl
bGVjdGlvbi5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1v
dmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5
LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVj
dGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJh
dGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgY2FzZSBBbHRlcmF0aW9u
RXh0ZW5kOgogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCi0gICAgICAgICAg
ICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkKKyAg
ICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5KQog
ICAgICAgICAgICAgJiYgbV9kb2N1bWVudCAmJiAhbV9kb2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZp
b3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVBY3Jvc3NDYXJldCgpKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIHNlbGVjdGlvbiBnbyBhY3Jvc3MgdGhlIGJhc2Ug
cG9zaXRpb24gZGlyZWN0bHkuIE5lZWRlZCB0byBtYXRjaCBtYWMKICAgICAgICAgICAgIC8vIGJl
aGF2aW9yIHdoZW4sIGZvciBpbnN0YW5jZSwgd29yZC1zZWxlY3RpbmcgYmFja3dhcmRzIHN0YXJ0
aW5nIHdpdGggdGhlIGNhcmV0IGluCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRp
b24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKTsKLSAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8
fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERp
cmVjdGlvbkxlZnQpKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSICYm
IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0KSB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6TGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CkBAIC0xNDI4LDExICsxNDI4LDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IGlmIChncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFy
YWdyYXBoR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHkpCiAgICAgICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uID0geDsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCi0gICAg
ICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgbV9ncmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBz
ZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25VcCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgd2ls
bEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBMYXlvdXRVbml0IHhQb3M7CkBAIC0xNTI0LDcgKzE1
MjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgfQog
CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkKLSAgICAgICAgbV9ncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBtX2dyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIG1fc2VsZWN0aW9u
LnNldElzRGlyZWN0aW9uYWwoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9k
b2N1bWVudCkgfHwgYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKQEAgLTE1NzIsMTMgKzE1
NzIsMTMgQEAgTGF5b3V0VW5pdCBGcmFtZVNlbGVjdGlvbjo6bGluZURpcmVjdGlvbgogCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpjbGVhcigpCiB7Ci0gICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OwogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCkpOwog
fQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKIHsKLSAg
ICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgbV9ncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICNpZiBFTkFCTEUo
VEVYVF9DQVJFVCkKICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdG9wKCk7CkBAIC0xNTg3LDcgKzE1
ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyCiAgICAgaWYg
KGF1dG8qIHZpZXcgPSBtX2RvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHZpZXctPnNl
bGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShWaXNpYmxlU2Vs
ZWN0aW9uKCksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAg
bV9wcmV2aW91c0NhcmV0Tm9kZSA9IG51bGxwdHI7CiAgICAgbV90eXBpbmdTdHlsZSA9IG51bGxw
dHI7CiAgICAgbV9hcHBlYXJhbmNlVXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjE2NSw3ICsyMTY1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gQ29u
c3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5l
Y2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBh
IHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4NjY+LgogI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWlu
dEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0
eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRW
aXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLCBlbmRWaXNpYmxlUG9zaXRpb24pOwogI2Vsc2UKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVj
dGlvbi52aXNpYmxlRW5kKCkpOwpAQCAtMjc0MywxMCArMjc0MywxMCBAQCBWaXNpYmxlU2VsZWN0
aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsCiAgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBv
ZiBzZWxlY3RpbmcgdGhlIHdvcmQgb24gdGhlIGxpbmUgKHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSB3YW50LCByYXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4K
ICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAm
JiAhaXNTdGFydE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKQotICAg
ICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCk7Ci0gICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgZnJhbWVTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBm
cmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZy
YW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
VmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbAogICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQogICAgICAgICBmcmFtZVNlbGVjdGlv
bi5tb3ZlVG8oc3RhcnRWaXNpYmxlUG9zKTsKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29y
ZEdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgIHN0YXJ0UG9zID0gZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgZW5kUG9zID0gZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgIHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2li
bGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CkBAIC0yODcyLDkgKzI4
NzIsOSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhCiAKICAgICBG
cmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxl
Y3Rpb24obV9zZWxlY3Rpb24pOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBh
bW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOworICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFicyhhbW91bnQpOyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1v
ZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwg
Ym9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
bjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5l
ZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRp
b25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCks
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vy
c29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51
bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBFQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCShyZXZpc2lvbiAyNjE2OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFRo
aXMgcmVhbGx5IHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBtb3JlIHRoYW4gb25lIGNvbmNlcHQu
CiAvLyBGcmFtZSBkb2Vzbid0IG5lZWQgdGhlIDMgYm91bmRhcmllcyBpbiB0aGlzIGVudW0uCi1l
bnVtIFRleHRHcmFudWxhcml0eSB7CitlbnVtIGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4
X3QgewogICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgIFdvcmRHcmFudWxhcml0eSwKICAg
ICBTZW50ZW5jZUdyYW51bGFyaXR5LApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxNiBAQCBz
dGF0aWMgaW5saW5lIEVkaXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5CiAgICAgY2FzZSBUeXBpbmdD
b21tYW5kOjpEZWxldGVTZWxlY3Rpb246CiAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBp
bmdEZWxldGVTZWxlY3Rpb247CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVLZXk6IHsK
LSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSkKKyAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAg
ICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVdvcmRCYWNrd2FyZDsKLSAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAgICAgICAgaWYgKGdyYW51bGFy
aXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJu
IEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVCYWNrd2FyZDsKICAgICAgICAgcmV0dXJuIEVk
aXRBY3Rpb246OlR5cGluZ0RlbGV0ZUJhY2t3YXJkOwogICAgIH0KICAgICBjYXNlIFR5cGluZ0Nv
bW1hbmQ6OkZvcndhcmREZWxldGVLZXk6Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3Jk
R3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdE
ZWxldGVXb3JkRm9yd2FyZDsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFy
eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVGb3J3
YXJkOwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlRm9yd2FyZDsKICAg
ICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQ6CkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oRG9jdQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3Bl
bkZvclR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlm
ZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3Vt
ZW50KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgLy8gRklYTUU6IEZvcndhcmQg
ZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlwaW5n
IGNvbW1hbmQuCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7
CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0
aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudCk7CiAgICAgICAgICAgICBsYXN0
VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxl
dGlvbik7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
QW5kTm90aWZ5QQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0ZXh0KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKElu
c2VydFRleHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRleHQpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNvbW1hbmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIHRleHQsIHNlbGVjdEluc2VydGVkVGV4dCwKQEAgLTU0NSw3ICs1
NDUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhaygpCiAgICAgaWYgKCFj
YW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRM
aW5lQnJlYWssIExpbmVHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVu
Q29tbWFuZChJbnNlcnRMaW5lQnJlYWssIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKQEAgLTU2NSw3ICs1NjUsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyCiAgICAgaWYgKCFjYW5B
cHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRU
eXBpbmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0
ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246OlR5cGluZ0luc2VydFBhcmFn
cmFwaCkpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXIKIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JJblF1b3RlZENvbnRlbnQoKQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50LCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IHN0YXJ0cyBpbnNpZGUgYSB0YWJsZSwganVzdCBpbnNlcnQgdGhlIHBhcmFncmFwaCBzZXBhcmF0
b3Igbm9ybWFsbHkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwogICAg
ICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJp
bmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
aWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxh
cml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICAg
ICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQg
PSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9uID0gdmlzaWJsZVN0YXJ0LnByZXZpb3VzKENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVy
IGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
dmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eAogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwog
Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUu
c3RhcnQoKS5jb250YWluZXJOb2RlKCkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpCiAgICAgICAgICAgICAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA+IDEpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUg
cmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlvbnMuCiAgICAgICAgICAgICBzZWxlY3Rp
b25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFsaWRhdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwg
c2VsZWN0aW9uVG9EZWxldGUuZW5kKCkucHJldmlvdXMoQmFja3dhcmREZWxldGlvbikpOwpAQCAt
NzczLDExICs3NzMsMTEgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
cwogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEg
ZG9jdW1lbnQuCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBz
ZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGlmIChzaG91bGRBZGRU
b0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAg
ICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRv
d25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC03OTUsOCArNzk1LDggQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAgICAgICB9CiAKICAgICAgICAgLy8gZGVs
ZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMg
dG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCi0gICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
ICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5
ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChz
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAK
ICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAg
ICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxl
dGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKQEAgLTg1Niw3ICs4NTYs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUpCiB7Ci0gICAgaWYg
KCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVTZWxlY3Rpb24sIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc21h
cnREZWxldGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHVu
c2lnbmVkIE9wdGlvbnM7CiAKICAgICBzdGF0aWMgdm9pZCBkZWxldGVTZWxlY3Rpb24oRG9jdW1l
bnQmLCBPcHRpb25zID0gMCwgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5v
bmUpOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25z
ID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIHN0YXRp
YyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRl
eHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBzdGF0aWMgdm9pZCBk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyB2b2lk
IGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIHN0
YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25zLCBU
ZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgc3RhdGljIHZv
aWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9u
ZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiwgT3B0aW9ucyk7
CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIFJlZjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRp
b25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29t
cG9zaXRpb25Ob25lKQorICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0
ID0gZW1wdHlTdHJpbmcoKSwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVGV4dENv
bXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25Ob25lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwg
Y29tbWFuZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRp
b25zIG9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29t
bWFuZCwgdGV4dCwgb3B0aW9ucywgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBpbmdDb21tYW5kKGRvY3VtZW50
LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9CiAKICAgICBUeXBpbmdDb21tYW5kKERv
Y3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucywgVGV4
dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxLDEyMCArMjcxLDEyMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5k
RW5kRnJvCiAgICAgfQogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFu
c2lvbi4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eTog
ewotICAgICAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBTZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0
IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkuCi0gICAgICAgICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBh
ZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgc29mdC13cmFwcGVkIGxpbmUgb3IgdGhlIGxhc3Qgd29y
ZCBpbgotICAgICAgICAgICAgLy8gdGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBsYXN0IHdvcmQg
KExlZnRXb3JkSWZPbkJvdW5kYXJ5KS4KLSAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhl
IGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgsIHNlbGVjdCBmcm9t
IHRoZSBlbmQgb2YgdGhlCi0gICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJl
YWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Ci0g
ICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAgICAg
ICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChzdGFydCkgfHwg
KGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGluZShzdGFydCkgJiYgIWlzRW5kT2ZQ
YXJhZ3JhcGgoc3RhcnQpKSkKLSAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91
bmRhcnk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQsIHNpZGUpLmRl
ZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9y
aWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5l
KG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRPZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQotICAgICAg
ICAgICAgICAgIHNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChvcmlnaW5hbEVu
ZCwgc2lkZSkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCh3b3JkRW5kKTsKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIC8v
IERvbid0IGRvIGFueSBleHBhbnNpb24uCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBT
ZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0
aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQg
bGluZSBvciB0aGUgbGFzdCB3b3JkIGluCisgICAgICAgIC8vIHRoZSBkb2N1bWVudCwgc2VsZWN0
IHRoYXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2Ug
Y2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgs
IHNlbGVjdCBmcm9tIHRoZSBlbmQgb2YgdGhlCisgICAgICAgIC8vIGxhc3Qgd29yZCB0byB0aGUg
bGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIEVXb3JkU2lkZSBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICBp
ZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoc3RhcnQpIHx8IChpc0VuZE9m
TGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHN0YXJ0KSkpCisgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAg
ICAgIG1fc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgaWYgKGlzRW5k
T2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9yaWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxp
bmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRP
ZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQorICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZP
bkJvdW5kYXJ5OworCisgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChv
cmlnaW5hbEVuZCwgc2lkZSkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kKHdvcmRFbmQp
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxFbmQpICYm
ICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIC8vIFNlbGVjdCB0aGUgcGFyYWdyYXBoIGJyZWFrICh0aGUgc3BhY2UgZnJvbSB0aGUgZW5k
IG9mIGEgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiAKKyAgICAgICAgICAgIC8vIHRoZSBuZXh0
IG9uZSkgdG8gbWF0Y2ggVGV4dEVkaXQuCisgICAgICAgICAgICBlbmQgPSB3b3JkRW5kLm5leHQo
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2lu
YWxFbmQpICYmICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHBhcmFncmFwaCBicmVhayAodGhlIHNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgCi0gICAgICAgICAg
ICAgICAgLy8gdGhlIG5leHQgb25lKSB0byBtYXRjaCBUZXh0RWRpdC4KLSAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kLm5leHQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBw
YXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhIGJsb2NrIHRhYmxlIGVuZHMKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhlIHRh
YmxlLgotICAgICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IHdvcmRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IC8vIEVuZCBtdXN0IG5vdCBiZSBiZWZvcmUgc3RhcnQuCi0gICAgICAgICAgICBpZiAobV9zdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkgewotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGFydCA9IG1fZW5kOyAgICAKLSAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7
ICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OiB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3Rh
cnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKLSAgICAg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9h
ZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOwotICAg
ICAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlzIGxpbmUgaXMgYXQgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCi0gICAgICAgICAgICAvLyBhZnRlciB0aGUgZW5k
IG9mIHRoZSBsaW5lIGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChlbmQpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSBl
bmQubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0LmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBuZXh0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9l
bmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0
T2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxl
bnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2Vu
ZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eTogewotICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXJ0
T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zKSkK
LSAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKLSAgICAgICAgICAgIG1fc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAotICAgICAgICAgICAgLy8gb2YgdGhl
IG5leHQgb25lKSBpbiB0aGUgc2VsZWN0aW9uLgotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCh2aXNpYmxlUGFyYWdyYXBoRW5kLm5leHQoKSk7Ci0gICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
ZW5kKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0ZXIgdGhl
IGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBlbmRzCi0g
ICAgICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhl
IHRhYmxlLCBub3QgYXQgdGhlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgdGhlIHRhYmxlLgorICAgICAg
ICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGFmdGVyIHRoZSB0YWJs
ZS4KICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLSAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBh
cmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQ7
CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQ7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKKyAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9lbmQgPSBl
bmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
RG9jdW1lbnQobV9zdGFydC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5kLmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
LSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbiht
X3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5p
dHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9yZSBzdGFydC4K
KyAgICAgICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVk
Tm9kZSgpICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFy
dCk7CisgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAgIAorICAgICAgICAgICAgbV9lbmQg
PSBzd2FwOyAgICAKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgbV9zdGFydCA9
IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
ID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOworICAgICAg
ICAvLyBJZiB0aGUgZW5kIG9mIHRoaXMgbGluZSBpcyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LCBpbmNsdWRlIHRoZSBzcGFjZSAKKyAgICAgICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGlu
ZSBpbiB0aGUgc2VsZWN0aW9uLgorICAgICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmQpKSB7
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IGVuZC5uZXh0KCk7CisgICAgICAg
ICAgICBpZiAobmV4dC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBuZXh0Owor
ICAgICAgICB9CisgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5Ogor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHk6IHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsK
KyAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChwb3MpKQorICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Cisg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFn
cmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAorICAgICAgICAvLyBvZiB0aGUgbmV4
dCBvbmUpIGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQodmlz
aWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOworCisgICAgICAgIGlmIChOb2RlKiB0YWJsZSA9IGlz
Rmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoZW5kKSkgeworICAgICAgICAgICAgLy8gVGhlIHBhcmFn
cmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IGJsb2NrIHRhYmxlIGVuZHMKKyAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFy
YWdyYXBoIGFmdGVyIHRoZSB0YWJsZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRo
ZSB0YWJsZS4KKyAgICAgICAgICAgIGlmIChpc0Jsb2NrKHRhYmxlKSkKKyAgICAgICAgICAgICAg
ICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgICAgICAg
ICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFw
aCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxlUGFyYWdyYXBoRW5kOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVuZC5pc051bGwoKSkKKyAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJh
Z3JhcGhFbmQ7CisKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1lbnQo
KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5k
LmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0
YXJ0T2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgICAgICBt
X3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmlu
aXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZp
c2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhIGRhbmdsaW5nIHN0YXJ0IG9y
IGVuZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiVGV4dEdy
YW51bGFyaXR5LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNiw3IEBA
IGNsYXNzIFBvc2l0aW9uOwogc3RydWN0IFNpbXBsZVJhbmdlOwogCiBjb25zdCBFQWZmaW5pdHkg
U0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOwotZW51bSBTZWxlY3Rpb25EaXJlY3Rp
b24gOiB1aW50OF90IHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVj
dGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlv
biA6IHVpbnQ4X3QgeyBGb3J3YXJkLCBCYWNrd2FyZCwgUmlnaHQsIExlZnQgfTsKIAogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5ID0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAvLyBTdXBw
b3J0IG1ldGhvZHMgZm9yIHZhbGlkYXRlKCkKICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnRUb0Rl
ZXBFcXVpdmFsZW50cygpOwpAQCAtMTY0LDMgKzE2NSwxNyBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yCiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mKTsKIHZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiopOwogI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLAorICAgICAgICBXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLAorICAgICAgICBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0LAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NTgsMjAgKzE1NTgsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29u
cwogCiBzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkKQor
ICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3
YXJkKQorICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgZG9lc24ndCB0
YWtlIGludG8gYWNjb3VudCB0aGUgb3JpZ2luYWwgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50Lgog
ICAgIC8vIEknbSBub3QgZml4aW5nIHRoaXMgbm93IGJlY2F1c2UgSSdtIGFmcmFpZCB0aGVyZSBp
cyBzb21lIGNvZGUgaW4gVUlLaXQgcmVseWluZyBvbgogICAgIC8vIHRoaXMgd3JvbmcgYmVoYXZp
b3IuCi0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodDsKKyAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiB9CiAKIGJvb2wgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlm
IChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnk7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAgICAgYm9v
bCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gdmlzaWJs
ZV91bml0cyBjbGFpbXMgZXJyb25lb3VzbHkgdGhhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQKICAg
ICAgICAgLy8gb2YgYSBwYXJhZ3JhcGggYXJlIHRoZSBlbmQgYW5kIHN0YXJ0IG9mIGEgd29yZCwg
cmVzcGVjdGl2ZWx5LgogICAgICAgICBpZiAoKHVzZURvd25zdHJlYW0gJiYgaXNTdGFydE9mUGFy
YWdyYXBoKHZwKSkgfHwgKCF1c2VEb3duc3RyZWFtICYmIGlzRW5kT2ZQYXJhZ3JhcGgodnApKSkK
QEAgLTE1ODksMjIgKzE1ODksMjIgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25z
dCBWaXNpYgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZldvcmQodnAs
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
Ym91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZShwcmV2aW91c1NlbnRlbmNl
UG9zaXRpb24odnApKSA6IHN0YXJ0T2ZTZW50ZW5jZShuZXh0U2VudGVuY2VQb3NpdGlvbih2cCkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEFmZmluaXR5IGhh
cyB0byBiZSBzZXQgdG8gZ2V0IHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSBsaW5lLgogICAgICAgICBi
b3VuZGFyeSA9IHZwOwogICAgICAgICBib3VuZGFyeS5zZXRBZmZpbml0eSh1c2VEb3duc3RyZWFt
ID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNKTsKICAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZMaW5lKGJvdW5kYXJ5KSA6IHN0YXJ0T2ZMaW5lKGJv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRP
ZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBEb2N1bWVudEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5Ogog
ICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0
YXJ0T2ZEb2N1bWVudCh2cCk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNjE4LDcgKzE2MTgsNyBA
QCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAKIGJvb2wgd2l0aGlu
VGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkg
PT0gRG9jdW1lbnRHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ym9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CkBA
IC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25z
dCBWCiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeTsKICAgICAKICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0
IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9w
cmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBM
ZWZ0V29yZElmT25Cb3VuZGFyeSkpOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQo
dnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9u
Qm91bmRhcnkpKTsKQEAgLTE2MzgsMTIgKzE2MzgsMTIgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9m
R3JhbnVsYXJpdHkoY29uc3QgVgogCiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFy
aXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOwogICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CiAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7CiAKQEAgLTE2NTUsNyArMTY1NSw3IEBA
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQ
YXJhZ3JhcGgodnApOwogICAgICAgICBicmVhazsKQEAgLTE2ODUsNyArMTY4NSw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJvdW4KIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dFdvcmRCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgYm9vbCB1c2VEb3duc3RyZWFt
ID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7Ci0gICAgYm9vbCB3aXRoaW5Vbml0
T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgV29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAgICAgCiAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKQEAgLTE3NTksNyArMTc1OSw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9
IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwotICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3Jh
bnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAK
ICAgICBpZiAod2l0aGluVW5pdE9mR3JhbnVsYXJpdHkpCkBAIC0xODAxLDkgKzE4MDEsOSBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhCb3VuCiB7CiAgICAgYXV0byB1c2VE
b3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAgICAgYXV0byBs
aW5lRGlyZWN0aW9uID0gcG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rp
b25OYXZpZ2F0aW9uKCk7Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbikpCiAgICAgICAgIHJldHVybiB1c2VEb3duc3RyZWFtID8gc3RhcnRPZlBh
cmFncmFwaChuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVEaXJlY3Rpb24pKSA6
IGVuZE9mUGFyYWdyYXBoKHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVE
aXJlY3Rpb24pKTsKLSAgICBBU1NFUlQod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgQVNTRVJUKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CiAgICAgcmV0dXJuIHVzZURvd25zdHJlYW0gPyBl
bmRPZlBhcmFncmFwaChwb3NpdGlvbikgOiBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKTsKIH0K
IApAQCAtMTgxNSwxNyArMTgxNSwxNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHREb2N1
bWVudEJvdW5kCiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRDaGFy
YWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24sIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dFdvcmRCb3VuZGFyeUlu
RGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
cmV0dXJuIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbih2
cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5l
eHRQYXJhZ3JhcGhCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHREb2N1bWVudEJvdW5kYXJ5SW5EaXJlY3Rp
b24odnAsIGRpcmVjdGlvbik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xODQ0LDUyICsxODQ0LDUyIEBAIFJlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGEKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oZGlyZWN0aW9uKTsKIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHZw
OwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgotICAgICAgICAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKLSAgICAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZX
b3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHZwOworICAgICAgICBuZXh0Qm91
bmRhcnkgPSBwcmV2Qm91bmRhcnkubmV4dCgpOworICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mU2VudGVuY2UodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5j
ZSh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKLSAgICAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7Ci0KLSAgICAgICAgICAgIGlmIChwcmV2
Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5l
eHRCb3VuZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
blNhbWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKLSAgICAgICAgICAgICAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gdnAubmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAgICAgICBp
ZiAodXNlRG93bnN0cmVhbSkgeworICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldv
cmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0
V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZQYXJhZ3JhcGgodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJh
Z3JhcGgodnApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkRvY3VtZW50KHZw
KTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1lbnQodnApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2Uo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKKworICAgICAgICBpZiAocHJldkJvdW5k
YXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExp
bmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNl
dEFmZmluaXR5KFVQU1RSRUFNKTsKKyAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gdnAu
bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJhZ3JhcGgo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVu
dEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mRG9jdW1lbnQodnAp
OworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50KHZwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKHByZXZCb3VuZGFyeS5pc051bGwo
KSB8fCBuZXh0Qm91bmRhcnkuaXNOdWxsKCkpCkBAIC0xOTIxLDE0ICsxOTIxLDE0IEBAIHZvaWQg
Y2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2kKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IHBvc2l0aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRD
aGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBp
ZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQ
b3NpdGlvbjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENo
YXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
UG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwog
ICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwotICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gbmV4
dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwgRGlyZWN0aW9u
QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHByZXZpb3VzUG9zaXRp
b24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKICAgICB9CkBAIC0xOTUyLDEx
ICsxOTUyLDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQpOwogCiAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBhdCB0aGUg
c3RhcnQgb2YgYSB3b3JkLCB0cnkgZm9yd2FyZC4KLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCkBAIC0xOTY0LDExICsx
OTY0LDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKIAogICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBkbyB7Ci0g
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7
Ci0gICAgfSB3aGlsZSAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
QmFja3dhcmQpKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CisgICAgfSB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShj
dXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAKICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTnVs
bCgpKQotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51
bGwoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHBv
c2l0aW9uKTsKQEAgLTE5ODMsMjMgKzE5ODMsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RX
b3JkQm91bmRhcnlGb3JQbwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAKICAgICAvLyBt
b3ZlIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB3b3JkCi0gICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkg
ewogICAgICAgICAvLyBEb24ndCBjcm9zcyBsaW5lIGJvdW5kYXJpZXMuCiAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uOwotICAgIH0gZWxzZSBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgfSBl
bHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAg
ICAgICAgIC8vIFRoZSBwb3NpdGlvbiBsaWVzIHdpdGhpbiBhIHdvcmQuCi0gICAgICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBSZWZQdHI8
UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlv
biwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCk7CiAKICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkg
PiAxKQogICAgICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAg
IH0gZWxzZSBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKSB7CisgICAgfSBlbHNlIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKSB7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBp
cyBhdCB0aGUgZW5kIG9mIGEgd29yZC4KICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gYSB3b3JkLgog
ICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBib3VuZGFyeS4KLSAgICAgICAgcmVzdWx0ID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBzdWNoIGJvdW5kYXJ5IHdlIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCiAg
ICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBAIC0yMDEzLDE1ICsyMDEzLDE1IEBAIFJlZlB0
cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0kKICAgICBQb3NpdGlvbiBzdGFydCA9
IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gcG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFj
dGVyc1RvRXhwYW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25C
YWNrd2FyZCkKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkKQogICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDaGFyYWN0ZXIpOwogICAg
IH0KICAgICAKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkICYmICFhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNr
d2FyZCkpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJk
ICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICBzdGFy
dCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0KS5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlmIChkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uRm9yd2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kLCBX
b3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChkaXJlY3Rpb24gPT0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
bmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQpKQogICAgICAgICBlbmQgPSBlbmRPZldvcmQoZW5kKS5kZWVwRXF1aXZhbGVudCgp
OwogCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFydCwgZW5kKTsKQEAgLTIwNDEsMTIgKzIwNDEs
MTIgQEAgUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpbwogCiBzdGQ6OnBh
aXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uV2l0aG91dENyb3NzaW5nTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogewotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpKQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29y
ZEJvdW5kYXJ5OjpObyB9OwogCi0gICAgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgIGlmICh3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgIGF1
dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICBpZiAoYXV0byB3b3JkUmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0g
ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAg
ICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAg
ICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgYWRqdXN0ZWRQ
b3NpdGlvbikgPiAxKQogICAgICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSB3b3JkUmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CkBAIC0yMDU0LDEwICsyMDU0LDEwIEBAIHN0ZDo6cGFpcjxWaXNp
YmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3UKICAgICAgICAgcmV0dXJuIHsgYWRqdXN0ZWRQb3Np
dGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpZZXMgfTsKICAgICB9CiAKLSAgICBpZiAoYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpKQorICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQp
KQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpObyB9Owog
Ci0gICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIHJldHVybiB7IG5leHRXb3JkQm91bmRhcnkuaXNO
b3ROdWxsKCkgPyBuZXh0V29yZEJvdW5kYXJ5IDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRp
b24pLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVj
dGlvbjo6ZGUKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgICAgICBjb250ZXh0UmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgICAgIGNvbnRleHRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCk7CiAgICAgfQogCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZp
c2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGQ6OnR1cGxlPFJl
ZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIGhpdEluZGV4ID0gY2hhcmFjdGVy
Q291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoU3RhcnQpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocG9zaXRpb24pIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcyB7IHBvc2l0aW9uIH07Ci0gICAgICAg
IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVz
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogICAgICAgICBwb3NpdGlvbiA9IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuc3Rh
cnQoKTsKIAogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBj
aGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIHJldHVybiBy
YW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKLSAgICBzZWxlY3Rpb25B
Y2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFy
aXR5KTsKKyAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIHBvc2l0aW9u
ID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgpOwogCiAgICAgLy8gQXMg
Y29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTIsMTQgKzY1MiwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzCiAgICAgICAgIGJvb2wgZm9yY2luZ1BlbmRp
bmdQb2xpY3kgPSBmcmFtZS0+c2V0dGluZ3MoKS5pc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCk7
CiAKICAgICAgICAgaWYgKGZvcmNpbmdQZW5kaW5nUG9saWN5IHx8IChwYWdlICYmICF0b3BEb2N1
bWVudC51cmwoKS5pc0xvY2FsRmlsZSgpKSkgewotICAgICAgICAgICAgV2ViR0xMb2FkUG9saWN5
IHBvbGljeSA9IGZvcmNpbmdQZW5kaW5nUG9saWN5ID8gV2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS53ZWJHTFBvbGljeUZvclVSTCh0b3BE
b2N1bWVudC51cmwoKSk7CisgICAgICAgICAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5ID0gZm9y
Y2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9u
IDogcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkud2ViR0xQb2xpY3lGb3JVUkwo
dG9wRG9jdW1lbnQudXJsKCkpOwogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMQmxv
Y2tDcmVhdGlvbikgeworICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQmxvY2tDcmVhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRoZSBw
b2xpY3kgZm9yIHRoaXMgVVJMICglcykgaXMgdG8gYmxvY2sgV2ViR0wuIiwgdG9wRG9jdW1lbnQu
dXJsKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMUGVu
ZGluZ0NyZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMTG9hZFBvbGlj
eTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJX
ZWJHTCBwb2xpY3kgaXMgcGVuZGluZy4gTWF5IG5lZWQgdG8gYmUgcmVzb2x2ZWQgbGF0ZXIuIik7
CiAgICAgICAgICAgICAgICAgaXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbiA9IHRydWU7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHN0cnVjdCBTdHJp
bmdXaXRoRGlyZWN0aW9uOwogCiB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9saWN5QWN0
aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CitjbGFzcyBGcmFtZUxvYWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQW4g
aW5saW5lIGZ1bmN0aW9uIGNhbm5vdCBiZSB0aGUgZmlyc3Qgbm9uLWFic3RyYWN0IHZpcnR1YWwg
ZnVuY3Rpb24gZGVjbGFyZWQKICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0
aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sLgogICAgIC8vIFRoaXMg
aHVydHMgcGVyZm9ybWFuY2UgKGluIE1hYyBPUyBYIGF0IGxlYXN0LCB3aGVuIGxvYWRpbmcgZnJh
bWV3b3JrcyksIHNvIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byBkbyBpdCBpbiBXZWJLaXQuCi0g
ICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIH5GcmFtZUxv
YWRlckNsaWVudCgpID0gZGVmYXVsdDsKIApAQCAtMzM5LDggKzMzOSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wgY2FudmFzIGluc2lkZSB0aGlz
IGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8gbm90aWZpY2F0aW9uIHdpdGgg
dGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2RlIChzZWUgRXh0
ZW5zaW9uc0dMLmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlV2ViR0xDb250ZXh0KGludCkg
eyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3Qg
VVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVhbCBX
ZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0
IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9s
aWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9h
ZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBXZWJHTExvYWRQb2xp
Y3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdl
YkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBjb21wbGV0ZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjYxNjk0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc0LDcgKzE3NCw3IEBAIGVudW0gU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0
VVIKICAgICBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTAogfTsKIAotZW51bSBX
ZWJHTExvYWRQb2xpY3kgeworZW51bSBjbGFzcyBXZWJHTExvYWRQb2xpY3kgOiB1aW50OF90IHsK
ICAgICBXZWJHTEJsb2NrQ3JlYXRpb24sCiAgICAgV2ViR0xBbGxvd0NyZWF0aW9uLAogICAgIFdl
YkdMUGVuZGluZ0NyZWF0aW9uCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCBPcHRpb25hbDxTeXN0ZW1Q
cmV2aWV3SW5mbz4gU3lzdGVtUHJldmllCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCplbGVtZW50
KSwgV1RGTW92ZSgqcHJldmlld1JlY3QpLCBXVEZNb3ZlKCppc1ByZXZpZXcpIH0gfTsKIH0KIAot
ZW51bSBjbGFzcyBMb2FkQ29tcGxldGlvblR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgTG9h
ZENvbXBsZXRpb25UeXBlIDogYm9vbCB7CiAgICAgRmluaXNoLAogICAgIENhbmNlbAogfTsKIAot
ZW51bSBjbGFzcyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IHVpbnQ4X3QgeworZW51bSBjbGFz
cyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IGJvb2wgewogICAgIFllcywKICAgICBObywKIH07
CkBAIC0yNzEsMTEgKzI3MSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OlNoCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKLSAgICAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQsCi0gICAgICAg
IFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMsCi0gICAgICAgIFdlYkNvcmU6
OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpObworICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3ksCisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0
aW9uLAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRpbmdDcmVhdGlv
bgogICAgID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgs
NyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAg
ICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dl
c3Rpb25zV2l0aG91dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVj
dGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IHdvcmRTZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgd29yZFNl
bGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAgICAg
ICAgICAgICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxlbmd0
aCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ2LDM1ICsyNDYsMzUgQEAgdm9pZCBET01TZWxlY3Rpb246Om1vZGlmeShjb25z
dCBTdHJpbmcmIAogCiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIp
KQotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAgICAg
ICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rp
b24gPSBEaXJlY3Rpb25MZWZ0OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGly
ZWN0aW9uU3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uUmln
aHQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5n
LCAiY2hhcmFjdGVyIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJp
dHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFu
dWxhcml0eVN0cmluZywgIndvcmQiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVs
YXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVs
YXJpdHlTdHJpbmcsICJzZW50ZW5jZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNl
R3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IExp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaCIpKQotICAgICAgICBncmFudWxhcml0eSA9
IFBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJsaW5lYm91bmRhcnkiKSkKLSAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBMaW5lQm91bmRhcnk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5Iikp
Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gU2VudGVuY2VCb3VuZGFyeTsKKyAgICAgICAgZ3JhbnVs
YXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeTsKKyAgICBlbHNlIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgIlRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VCb3VuZGFyeSIpKQorICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaGJvdW5kYXJ5IikpCi0g
ICAgICAgIGdyYW51bGFyaXR5ID0gUGFyYWdyYXBoQm91bmRhcnk7CisgICAgICAgIGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgImRvY3VtZW50
Ym91bmRhcnkiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBEb2N1bWVudEJvdW5kYXJ5OworICAg
ICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeTsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsNyArNjE0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAgICAgICAgICAgLy8gTlNUZXh0
VmlldyBiZWhhdmlvciBpcyB0byBhbHdheXMgc21hcnQgZGVsZXRlIG9uIG1vdmluZyBhIHNlbGVj
dGlvbiwKICAgICAgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0IGluc2VydCBpZiB0aGUgc2Vs
ZWN0aW9uIGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHkuCiAgICAgICAgICAgICBib29s
IHNtYXJ0RGVsZXRlID0gZWRpdG9yLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwotICAgICAg
ICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRlICYmIGlubmVyRnJhbWUtPnNlbGVj
dGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNt
YXJ0UmVwbGFjZSgpOworICAgICAgICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRl
ICYmIGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHkgJiYgZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCk7CiAgICAg
ICAgICAgICBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50LnJlbGVhc2VOb25O
dWxsKCksIGRyYWdDYXJldC5iYXNlKCksIHNtYXJ0SW5zZXJ0LCBzbWFydERlbGV0ZSktPmFwcGx5
KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFn
Q2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwgZHJhZ0NhcmV0LCBwb2ludCkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDcgKzU0
Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3UKICAgICBpZiAo
c2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0aWF0aW9uU3RhdGUg
PSBFeHRlbmRlZFNlbGVjdGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICBtX3NlbGVjdGlvbkluaXRpYXRpb25T
dGF0ZSA9IFBsYWNlZENhcmV0OwogICAgIH0KIApAQCAtNTYwLDEzICs1NjAsMTMgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbQogICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0Lmxv
Y2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAg
ICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7Ci0gICAgICAg
ICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkp
OworICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGFw
cGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
JiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRv
UmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3Jk
R3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRj
aGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVj
dE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogCkBAIC02MDEsMTQgKzYwMSwxNCBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdENvbnRleHR1CiAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVz
dWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICAgICAgaWYgKHBvcy5pc05vdE51
bGwoKSkgewogICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zKTsKLSAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRV
c2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGFwcGVuZFRyYWlsaW5n
V2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgJiYgbmV3U2VsZWN0
aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgCi0gICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93
bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNw
ZWN0U2VsZWN0T25Nb3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFdvcmRHcmFu
dWxhcml0eSk7CisgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5n
U2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25N
b3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5KTsKICAgICB9CiB9CiAgICAgCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICBpZiAocG9zLmlzTm90
TnVsbCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2Vu
ZGFudE9mKCp1cmxFbGVtZW50KSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZSh1cmxFbGVtZW50KTsKIAotICAg
ICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRh
cmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJn
ZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVT
ZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4
cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdT
ZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQog
CkBAIC02NjcsMTAgKzY2NywxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmIChw
b3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlv
bihwb3MpOwotICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShQYXJh
Z3JhcGhHcmFudWxhcml0eSk7CisgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51
bGFyaXR5KFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogICAgIH0KIAot
ICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0
YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3du
KCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQo
dGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25Nb3VzZURvd24oKnRh
cmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVs
YXJpdHkpOwogfQogCiBzdGF0aWMgdWludDY0X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9u
JiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAgLTcxMCw3ICs3MTAsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgUG9zaXRpb24gcG9zID0gdmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eTsKIAogICAgIGlmICghbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkQWxsb3dT
aW5nbGVDbGlja1RvQ2hhbmdlU2VsZWN0aW9uKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczOCw3ICs3MzgsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmV3
U2VsZWN0aW9uLnNldEV4dGVudChwb3MpOwogCi0gICAgICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlv
bigpLmdyYW51bGFyaXR5KCkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5KSB7CiAgICAgICAgICAgICBncmFudWxhcml0eSA9IG1fZnJhbWUu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKTsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSk7CiAg
ICAgICAgIH0KQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVT
ZWxlY3Rpb25Gb3JNb3UKICAgICBuZXdTZWxlY3Rpb24uc2V0RXh0ZW50KHRhcmdldFBvc2l0aW9u
KTsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSAh
PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5ncmFu
dWxhcml0eSgpICE9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAg
ICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0aW9u
KCkuZ3JhbnVsYXJpdHkoKSk7CiAKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bkJ5TW91c2VJZkRpZmZlcmVudChuZXdTZWxlY3Rpb24sIG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3Jh
bnVsYXJpdHkoKSwKQEAgLTM1MTYsMTUgKzM1MTYsMTUgQEAgc3RhdGljIHZvaWQgc2V0SW5pdGlh
bEtleWJvYXJkU2VsZWN0aW9uKAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb247
CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6
Ci0gICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgaWYg
KGZvY3VzZWRFbGVtZW50KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShmb2N1c2VkRWxlbWVudCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBlbmRPZkRvY3VtZW50KGRvY3VtZW50KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CisgICAg
Y2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoZm9jdXNlZEVsZW1l
bnQpCiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRp
b25BZnRlck5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAgICAgZWxzZQpAQCAtMzU0NSw4ICsz
NTQ1LDggQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgIGJv
b2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgpOwogCiAgICAgRnJhbWVTZWxlY3Rp
b246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hp
ZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBEaXJl
Y3Rpb25Gb3J3YXJkOwotICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQ7CisgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIHN3aXRjaCAoZm9j
dXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigpKSkgewogICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25Ob25lOgpAQCAtMzU1NiwyMCArMzU1NiwyMCBAQCBzdGF0aWMgdm9pZCBoYW5k
bGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgotICAgICAgICBkaXJl
Y3Rpb24gPSBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBpc0NvbW1h
bmRlZCA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVj
dGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CisgICAgICAgIGdyYW51bGFyaXR5
ID0gaXNDb21tYW5kZWQgPyBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBG
b2N1c0RpcmVjdGlvbkRvd246Ci0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkZvcndhcmQ7
Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDog
TGluZUdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0
eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6Ci0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvbkxlZnQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29t
bWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0eSA6
IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkxlZnQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6Ci0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvblJpZ2h0OwotICAgICAgICBncmFudWxhcml0eSA9IChpc0Nv
bW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodDsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSAoaXNDb21tYW5kZWQpID8gVGV4
dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSA6IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyAr
NTc5LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc092ZXJUZXh0SW5zaWRlRm9ybQogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRy
PFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQpOwogICAgIGlmICghd29yZFJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA1LTE0ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0gc2VyaWFsaXph
dGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oOgorICAgICAg
ICAqIFNoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkdMTG9hZFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdM
TG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgc2VsZWN0Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKHRvVUlXS1Nl
bGVjdGlvbkZsYWdzKToKKyAgICAgICAgKHRvU2VsZWN0aW9uRmxhZ3MpOgorICAgICAgICAodG9X
S1RleHRHcmFudWxhcml0eSk6CisgICAgICAgICh0b1dLU2VsZWN0aW9uRGlyZWN0aW9uKToKKyAg
ICAgICAgKHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZSk6CisgICAgICAgIChzZWxlY3Rpb25D
aGFuZ2VkV2l0aFRvdWNoKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxlY3Rp
b25XaXRoR2VzdHVyZUF0OndpdGhHZXN0dXJlOndpdGhTdGF0ZTp3aXRoRmxhZ3M6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVj
dGlvblRvdWNoOmJhc2VJc1N0YXJ0OndpdGhGbGFnczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBjaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206dG86d2l0aEdlc3R1cmU6d2l0aFN0
YXRlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdFdvcmRGb3JSZXBsYWNlbWVu
dF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdp
dGhUd29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleHRlbmRTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0Zvckdy
YW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2Ug
cmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOmluRGlyZWN0aW9uOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xp
Y3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5
Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldFNlbGVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OnJhbmdlQXRXb3JkQm91bmRhcnlGb3JQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhU
b3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5QXRQ
b2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dERpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBseUF1dG9j
b3JyZWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphdXRvY29ycmVj
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25J
bmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Om1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGlu
Z1dvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REb2N1bWVu
dEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKwog
MjAyMC0wNS0xNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVkLCBtaWQgTWF5IDIwMjAgZWRpdGlvbgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAy
NjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTUsNiArNjE1LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6
CiAgICAgICAgICdXZWJDb3JlOjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAorICAg
ICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uJzogWyc8V2ViQ29yZS9WaXNpYmxlU2Vs
ZWN0aW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
cic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4nLCAnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nLCAnPFdlYkNvcmUv
U2VydmljZVdvcmtlckRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJP
ckNsaWVudElkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPicsICc8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPiddLApAQCAtNjM5LDE3ICs2
NDAsMjIgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpVc2VkTGVnYWN5VExTJzogWyc8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPiddLAorICAgICAg
ICAnV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzogWyc8V2ViQ29y
ZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNo
YW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAotICAgICAgICAnV2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJyA6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIidd
LAorICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdv
cmxkU2hhcmVkLmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUn
OiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBb
JyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4
dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXll
ckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJL
aXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJl
c3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dl
YktpdDo6U2VsZWN0aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dl
YktpdDo6U2VsZWN0aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6V2ViR2VzdHVyZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAkocmV2aXNpb24gMjYxNjk0KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCB7CiAKICAgICBPcHRpb25TZXQ8T3B0aW9ucz4gb3B0aW9uczsKIAotICAgIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBzdXJyb3VuZGluZ0dyYW51bGFyaXR5IHsgV2ViQ29yZTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHkgfTsKKyAgICBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgc3Vycm91bmRpbmdH
cmFudWxhcml0eSB7IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHkgfTsKICAgICBpbnQ2NF90IGdyYW51bGFyaXR5Q291bnQgeyAwIH07CiAKICAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9HZXN0dXJl
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5
cGVzLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9HZXN0
dXJlVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDEzIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZXN0dXJlVHlwZXNfaAot
I2RlZmluZSBHZXN0dXJlVHlwZXNfaAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBHZXN0dXJlVHlw
ZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVUeXBlIDogdWludDhfdCB7CiAgICAgTG91cGUsCiAgICAg
T25lRmluZ2VyVGFwLAogICAgIFRhcEFuZEFIYWxmLApAQCAtNDUsNyArNDYsNyBAQCBlbnVtIGNs
YXNzIEdlc3R1cmVUeXBlIHsKICAgICBQaHJhc2VCb3VuZGFyeQogfTsKIAotZW51bSBjbGFzcyBT
ZWxlY3Rpb25Ub3VjaCB7CitlbnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIDogdWludDhfdCB7CiAg
ICAgU3RhcnRlZCwKICAgICBNb3ZlZCwKICAgICBFbmRlZCwKQEAgLTU0LDIzICs1NSwyMSBAQCBl
bnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIHsKICAgICBFbmRlZE5vdE1vdmluZwogfTsKIAotZW51
bSBjbGFzcyBHZXN0dXJlUmVjb2duaXplclN0YXRlIHsKK2VudW0gY2xhc3MgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSA6IHVpbnQ4X3QgewogICAgIFBvc3NpYmxlLAogICAgIEJlZ2FuLAogICAgIENo
YW5nZWQsCiAgICAgRW5kZWQsCiAgICAgQ2FuY2VsbGVkLAotICAgIEZhaWxlZCwKLSAgICBSZWNv
Z25pemVkID0gRW5kZWQKKyAgICBGYWlsZWQKIH07CiAKLWVudW0gY2xhc3MgU2hlZXRBY3Rpb24g
eworZW51bSBjbGFzcyBTaGVldEFjdGlvbiA6IGJvb2wgewogICAgIENvcHksCiAgICAgU2F2ZUlt
YWdlCiB9OwogCi1lbnVtIFNlbGVjdGlvbkZsYWdzIHsKLSAgICBOb25lID0gMCwKK2VudW0gU2Vs
ZWN0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAgICBXb3JkSXNOZWFyVGFwID0gMSA8PCAwLAogICAg
IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA9IDEgPDwgMSwKIH07CkBAIC04Miw0ICs4MSw1MSBAQCBl
bnVtIGNsYXNzIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IgOiBib29sCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gR2VzdHVyZVR5cGVzX2gKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R2VzdHVyZVR5cGU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlLAor
ICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpMb3VwZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0
dXJlVHlwZTo6T25lRmluZ2VyVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBB
bmRBSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6RG91YmxlVGFwLAorICAgICAg
ICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRIYWxmLAorICAgICAgICBXZWJLaXQ6Okdlc3R1
cmVUeXBlOjpEb3VibGVUYXBJblVuZWRpdGFibGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5
cGU6Ok9uZUZpbmdlclRhcEluVW5lZGl0YWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlw
ZTo6T25lRmluZ2VyVGFwU2VsZWN0c0FsbCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6
T25lRmluZ2VyRG91YmxlVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5n
ZXJUcmlwbGVUYXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclNpbmds
ZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VHdvRmluZ2VyUmFuZ2VkU2VsZWN0
R2VzdHVyZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwT25MaW5rV2l0aEdlc3R1
cmUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlBocmFzZUJvdW5kYXJ5CisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6U2Vs
ZWN0aW9uVG91Y2gsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQsCisg
ICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6Ok1vdmVkLAorICAgICAgICBXZWJLaXQ6OlNl
bGVjdGlvblRvdWNoOjpFbmRlZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5k
ZWRNb3ZpbmdGb3J3YXJkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE1v
dmluZ0JhY2t3YXJkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE5vdE1v
dmluZworICAgID47Cit9OworCisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlLAorICAgICAgICBXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLAorICAgICAgICBXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyU3RhdGU6OkJlZ2FuLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyU3RhdGU6OkNoYW5nZWQsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RW5kZWQsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2Fu
Y2VsbGVkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkZhaWxlZAor
ICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTczNiwxNiAr
NTczNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjaWYg
RU5BQkxFKFdFQkdMKQogdm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYm
IHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewotICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5
KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xMb2FkUG9saWN5IHBv
bGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xp
Y3kpKTsKLSAgICB9KTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgq
dGhpcywgdXJsLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11dGFibGUgewot
ICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgfSk7Cisg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmws
IFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjE2OTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIzLDggKzIyMyw2IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRJbmRpY2F0b3I7
CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwogCi1lbnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVp
bnQ4X3Q7Ci0KIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBMb2NrQmFja0Zv
cndhcmRMaXN0IDogYm9vbDsKQEAgLTIzMiw2ICsyMzAsNyBAQCBlbnVtIGNsYXNzIEhhc0luc2Vj
dXJlQ29udGVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIE1vdXNlRXZlbnRQb2xpY3kgOiB1aW50OF90
OwogZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFz
cyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTZWxlY3Rpb25EaXJl
Y3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBj
bGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBXcml0
aW5nRGlyZWN0aW9uIDogdWludDhfdDsKQEAgLTI0NCw2ICsyNDMsNyBAQCBzdHJ1Y3QgQ29udGVu
dFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsK
IHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IERyYWdJdGVtOworc3RydWN0IEVs
ZW1lbnRDb250ZXh0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29z
ZXJTZXR0aW5nczsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwpAQCAtMjc5LDEwICsy
NzksNiBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTR2xvYmFsCiB0eXBlZGVm
IEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXN0cnVjdCBFbGVtZW50Q29udGV4dDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OwogY2xhc3MgRHJhd2luZ0FyZWFQcm94
eTsKQEAgLTQwNSw4ICs0MDEsOCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBGb250
SW5mbyYsCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi10eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3Q+IEdlc3R1cmVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90PiBUb3VjaGVzQ2FsbGJhY2s7
Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1
cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+
PiBHZXN0dXJlQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+PiBU
b3VjaGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrOwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiY+IEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKICNlbmRpZgpAQCAtNzU2LDkgKzc1Miw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5
ZXJUcmVlKFRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBn
ZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQsIFNlbGVjdGlvblRvdWNoLCBib29sIGJhc2VJc1N0YXJ0LCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxT
ZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgRnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJl
UmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwogICAgIHZvaWQgbW92ZVNl
bGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMjA5NSw4ICsyMDkxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRBdFNlbGVj
dGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBnZXN0dXJlQ2FsbGJh
Y2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB0
b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVz
LCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2so
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB0
b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwg
T3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZCh1aW50MzJfdCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgU3RyaW5nIG1pbWVUeXBlLCBT
dHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBTdHJpbmcgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJp
bmcsIFN0cmluZyBmcmFtZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdl
YkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBTeW5jaHJv
bm91cwotICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgU3luY2hyb25vdXMKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5KSBTeW5j
aHJvbm91cworICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAoZW51bTp1
aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5KSBTeW5jaHJvbm91cwog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
c3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJl
Y2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xNzcsOCArMTc3LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogICAgIEZvbnRBdHRyaWJ1dGVz
Q2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
R2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgR2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1
aW50OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlv
blNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8V2Vi
S2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJp
bmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6RWRpdG9yU3RhdGUg
c3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAg
ICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
NiwyNSArNDk2LDI1IEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJHTEwK
IHsKICAgICBzd2l0Y2ggKHdlYkdMTG9hZFBvbGljeSkgewogICAgIGNhc2Uga1dLV2ViR0xMb2Fk
UG9saWN5TG9hZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb247CiAgICAgY2FzZSBrV0tXZWJHTExvYWRQb2xpY3lCbG9ja2VkOgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb247CiAgICAgY2FzZSBrV0tX
ZWJHTExvYWRQb2xpY3lQZW5kaW5nOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xQZW5k
aW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6Oldl
YkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogaW5saW5l
IFdLV2ViR0xMb2FkUG9saWN5IHRvQVBJKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExv
YWRQb2xpY3kpCiB7CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKLSAgICBjYXNlIFdl
YkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjoKKyAgICBjYXNlIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOgogICAgICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9s
aWN5TG9hZE5vcm1hbGx5OwotICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOgor
ICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb246CiAg
ICAgICAgIHJldHVybiBrV0tXZWJHTExvYWRQb2xpY3lCbG9ja2VkOwotICAgIGNhc2UgV2ViQ29y
ZTo6V2ViR0xQZW5kaW5nQ3JlYXRpb246CisgICAgY2FzZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOgogICAgICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9s
aWN5UGVuZGluZzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDA5LDIxICs0MDksMjEgQEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dl
YkNvcgogewogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xp
Y3lBbGxvd0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0
aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb247CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uOgotICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb247CiAgICAgY2FzZSBf
V0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nQ3JlYXRpb246Ci0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpXZWJHTFBlbmRpbmdDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb247CiAgICAgfQogICAgIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwog
fQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTExv
YWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdM
TG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdAogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVhdGlvbik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjYxNjk0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzUxNSw3ICszNTE1LDcgQEAgLSAodm9pZClzZWxlY3RGb3JX
ZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBzZWxl
Y3RXb3JkXTsKICAgICAvLyBXZSBjYW5ub3QgdXNlIHNlbGVjdFdvcmQgY29tbWFuZCwgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2VsZWN0IHRoZSB3b3JkIGV2ZW4gd2hlbiBpdCBpcyB0
aGUgbGFzdCBpbiB0aGUgcGFyYWdyYXBoLgotICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2Vi
Q29yZTo6V29yZEdyYW51bGFyaXR5KTsKKyAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKIH0KIAogLSAodm9pZClzZWxl
Y3RBbGxGb3JXZWJWaWV3OihpZClzZW5kZXIKQEAgLTM4MjMsMzIgKzM4MjMsNDIgQEAgc3RhdGlj
IGlubGluZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgdAogICAgIH0KIH0KIAotc3RhdGljIGlu
bGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0aW9uRmxhZ3MoV2ViS2l0OjpTZWxl
Y3Rpb25GbGFncyBmbGFncykKK3N0YXRpYyBpbmxpbmUgVUlXS1NlbGVjdGlvbkZsYWdzIHRvVUlX
S1NlbGVjdGlvbkZsYWdzKE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykK
IHsKICAgICBOU0ludGVnZXIgdWlGbGFncyA9IFVJV0tOb25lOwotICAgIGlmIChmbGFncyAmIFdl
YktpdDo6V29yZElzTmVhclRhcCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViS2l0OjpXb3Jk
SXNOZWFyVGFwKSkKICAgICAgICAgdWlGbGFncyB8PSBVSVdLV29yZElzTmVhclRhcDsKLSAgICBp
ZiAoZmxhZ3MgJiBXZWJLaXQ6OlBocmFzZUJvdW5kYXJ5Q2hhbmdlZCkKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpKQogICAgICAgICB1aUZsYWdz
IHw9IFVJV0tQaHJhc2VCb3VuZGFyeUNoYW5nZWQ7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VUlXS1NlbGVjdGlvbkZsYWdzPih1aUZsYWdzKTsKIH0KIAorc3RhdGljIGlubGluZSBPcHRpb25T
ZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gdG9TZWxlY3Rpb25GbGFncyhVSVdLU2VsZWN0aW9u
RmxhZ3MgdWlGbGFncykKK3sKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4g
ZmxhZ3M7CisgICAgaWYgKHVpRmxhZ3MgJiBVSVdLV29yZElzTmVhclRhcCkKKyAgICAgICAgZmxh
Z3MuYWRkKFdlYktpdDo6V29yZElzTmVhclRhcCk7CisgICAgaWYgKHVpRmxhZ3MgJiBVSVdLUGhy
YXNlQm91bmRhcnlDaGFuZ2VkKQorICAgICAgICBmbGFncy5hZGQoV2ViS2l0OjpQaHJhc2VCb3Vu
ZGFyeUNoYW5nZWQpOworICAgIHJldHVybiBmbGFnczsKK30KKwogc3RhdGljIGlubGluZSBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgdG9XS1RleHRHcmFudWxhcml0eShVSVRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKIHsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBV
SVRleHRHcmFudWxhcml0eUNoYXJhY3RlcjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5V29yZDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldvcmRHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlU
ZXh0R3JhbnVsYXJpdHlTZW50ZW5jZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNlbnRlbmNl
R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVBhcmFncmFwaDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAg
ICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okxp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlEb2N1bWVudDoKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRvY3VtZW50R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgfQog
fQogCkBAIC0zODU3LDI5ICszODY3LDI5IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZTo6U2VsZWN0
aW9uRGlyZWN0aW8KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgVUlUZXh0TGF5
b3V0RGlyZWN0aW9uRG93bjoKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlvblJpZ2h0Ogot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIGNhc2UgVUlUZXh0TGF5b3V0
RGlyZWN0aW9uVXA6CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25MZWZ0OgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uTGVmdDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBVSVRl
eHREaXJlY3Rpb24gaXMgbm90IGFuIGVudW0sIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gYWNjZXB0IHZh
bHVlcyBmcm9tIFVJVGV4dExheW91dERpcmVjdGlvbi4KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoV0tDb250ZW50VmlldyAqdmll
dywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwg
dWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJl
KFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2Vi
S2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0
YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdz
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgaWYgKGVycm9yICE9
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwotICAg
IFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0
YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2Vz
dHVyZTp0b1VJV0tHZXN0dXJlVHlwZSgoV2ViS2l0OjpHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSkg
d2l0aFN0YXRlOnRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRpY19jYXN0PFdlYktpdDo6
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSkgd2l0aEZsYWdzOih0b1VJV0tT
ZWxlY3Rpb25GbGFncygoV2ViS2l0OjpTZWxlY3Rpb25GbGFncylmbGFncykpXTsKKyAgICBbKFVJ
V0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0g
c2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6
dG9VSVdLR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpIHdpdGhTdGF0ZTp0b1VJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpIHdpdGhGbGFnczp0b1VJV0tTZWxlY3Rpb25GbGFncyhm
bGFncyldOwogfQogCi1zdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29u
dGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
dG91Y2gsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CitzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aCB0b3VjaCwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwotICAgIFsoVUlXS1Rl
eHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBzZWxl
Y3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNo
OnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNlbGVjdGlvblRvdWNoKXRvdWNoKSB3aXRo
RmxhZ3M6c3RhdGljX2Nhc3Q8VUlXS1NlbGVjdGlvbkZsYWdzPihmbGFncyldOworICAgIFsoVUlX
S1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRv
dWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNlbGVjdGlvblRvdWNoKXRvdWNoKSB3
aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpXTsKIH0KIAogLSAoQk9PTClfaGFz
Rm9jdXNlZEVsZW1lbnQKQEAgLTM4OTUsOCArMzkwNSw4IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0
aW9uV2l0aEdlc3R1cmVBdDooQ0cKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVB
dDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBl
IHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlIHdpdGhGbGFnczooVUlX
S1NlbGVjdGlvbkZsYWdzKWZsYWdzCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9
IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQocG9p
bnQpLCBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3Nl
bGYsIHN0YXRlLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBpbm5lckZsYWdz
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgc2VsZWN0aW9u
Q2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRl
LCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKKyAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1
cmUoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSwg
dG9HZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRlKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQs
IFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzdGF0ZSwgZmxhZ3NdKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlw
ZSwgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2Vs
ZiwgcG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHRvU2VsZWN0aW9uRmxhZ3MoZmxh
Z3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOwogICAgICAgICBpZiAoc3RhdGUgPT0gVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlRW5kZWQgfHwgc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
Q2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwog
ICAgIH0pOwpAQCAtMzkwNSw5ICszOTE1LDkgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRo
R2VzdHVyZUF0OihDRwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQb2lu
dClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rpb25Ub3VjaCl0b3VjaCBiYXNl
SXNTdGFydDooQk9PTCliYXNlSXNTdGFydCB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylm
bGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgX3BhZ2Ut
PnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHRvU2VsZWN0aW9uVG91Y2godG91Y2gpKSwgYmFzZUlzU3RhcnQs
IFtzZWxmLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0
b3VjaCwgdWludDMyX3QgaW5uZXJGbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goc2VsZiwgcG9pbnQsIHRv
dWNoLCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKLSAgICAgICAgaWYgKHRvdWNoICE9IFVJ
V0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQgJiYgdG91Y2ggIT0gVUlXS1NlbGVjdGlvblRvdWNoTW92
ZWQpCisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBv
aW50KHBvaW50KSwgdG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCksIGJhc2VJc1N0YXJ0LCBbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaCwgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50
LCB0b3VjaCwgdG9TZWxlY3Rpb25GbGFncyhmbGFncykgfCBpbm5lckZsYWdzLCBlcnJvcik7Cisg
ICAgICAgIGlmICh0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCkgIT0gVUlXS1NlbGVjdGlvblRv
dWNoU3RhcnRlZCAmJiB0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCkgIT0gVUlXS1NlbGVjdGlv
blRvdWNoTW92ZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CiAgICAgfSk7CiB9CkBAIC0zOTE1LDkgKzM5MjUsOSBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlv
bldpdGhUb3VjaEF0OihDR1BvCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaGVzRnJv
bTooQ0dQb2ludClmcm9tIHRvOihDR1BvaW50KXRvIHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5
cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpZ2VzdHVy
ZVN0YXRlCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFn
ZS0+c2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6
OkludFBvaW50KHRvKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVy
ZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShn
ZXN0dXJlU3RhdGUpKSwgW3NlbGZdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9wYWdlLT5zZWxlY3RX
aXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQo
dG8pLCB0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSwgdG9HZXN0dXJlUmVjb2duaXplclN0YXRl
KGdlc3R1cmVTdGF0ZSksIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNl
dDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBw
b2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MsIGVycm9yKTsKLSAgICAgICAg
aWYgKGdlc3R1cmVTdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCB8fCBnZXN0
dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQorICAgICAgICBp
ZiAodG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSA9PSBVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVFbmRlZCB8fCB0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJl
U3RhdGUpID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKICAgICAgICAgICAg
IF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsKIH0KQEAgLTY1MjEsNyAr
NjUzMSw3IEBAIC0gKHZvaWQpX3NlbGVjdGlvbkNoYW5nZWQKIAogLSAodm9pZClzZWxlY3RXb3Jk
Rm9yUmVwbGFjZW1lbnQKIHsKLSAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6Oldv
cmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKICNpZiBFTkFCTEUoUExBVEZPUk1f
RFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw3ICsxNDQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2ludCwgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
dG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCBTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJh
Y2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KSB7CkBAIC00MjgsMjEgKzQyOCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJUcmVlQ29t
bWl0Q29tcGxlCiAgICAgcGFnZUNsaWVudCgpLmxheWVyVHJlZUNvbW1pdENvbXBsZXRlKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVU
eXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBj
YWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6Oklu
dFBvaW50KCksIEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9z
c2libGUsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUiX3MpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCAodWlu
dDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwg
Z2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1
aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNl
bGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBTZWxlY3Rp
b25Ub3VjaCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFn
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29y
ZTo6SW50UG9pbnQoKSwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgU2VsZWN0aW9uVG91Y2g6
OlN0YXJ0ZWQsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0VGV4dFdpdGhHcmFudWxhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFy
aXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhH
cmFudWxhcml0eUF0UG9pbnQiX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBv
aW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQiX3MpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtNTI0LDcgKzUyNCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rp
b24pLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHBvaW50LCBncmFudWxhcml0eSwgZGlyZWN0aW9uLCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oKTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bW92ZVNlbGVjdGlvbkF0Qm91bmRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbikpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC02MzAsMTAgKzYzMCwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2du
aXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2Vs
ZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIEdl
c3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2libGUsIHsgfSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRCZWNv
bWVBCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0
eSkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHRlbmRTZWxlY3Rpb24oZ3JhbnVsYXJpdHkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3RXb3JkQmFja3dhcmQoKQpAQCAtNzcwLDcgKzc3MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWwKICAgICB9CiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCJfcykpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxh
cml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5
KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQoZ3JhbnVsYXJpdHksIG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRl
eHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0J
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQs
NyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAKIC0gKFdLRE9NUmFuZ2UgKilyYW5nZUJ5RXhw
YW5kaW5nVG9Xb3JkQm91bmRhcnlCeUNoYXJhY3RlcnM6KE5TVUludGVnZXIpY2hhcmFjdGVycyBp
bkRpcmVjdGlvbjooV0tET01SYW5nZURpcmVjdGlvbilkaXJlY3Rpb24KIHsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3
YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDogX2ltcGwtPnN0YXJ0UG9zaXRpb24oKSwgY2hh
cmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gV2ViQ29y
ZTo6RGlyZWN0aW9uRm9yd2FyZCA6IFdlYkNvcmU6OkRpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rp
b25Gb3J3YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDogX2ltcGwtPnN0YXJ0UG9zaXRpb24o
KSwgY2hhcmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8g
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDogV2ViQ29yZTo6U2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAKICAgICByZXR1cm4gW1tbV0tET01SYW5nZSBhbGxvY10g
X2luaXRXaXRoSW1wbDpuZXdSYW5nZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgV2ViRnJhbWVMb2FkZXJDCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybiB3ZWJQYWdlLT53ZWJHTFBvbGljeUZvclVSTChtX2ZyYW1l
LnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1
cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQwogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+cmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKG1fZnJhbWUucHRyKCksIHVybCk7CiAKLSAgICByZXR1cm4gV2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksMTIgKzEwNDksMTIg
QEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYgogI2lmIEVOQUJMRShX
RUJHTCkgJiYgIVBMQVRGT1JNKE1BQykKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdl
Ojp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpCiB7Ci0gICAgcmV0dXJu
IFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewotICAgIHJldHVy
biBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDEwICsx
OTUsMTIgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogZW51bSBTeW50aGV0aWNDbGlja1R5cGUg
OiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90Owog
ZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90OworZW51bSBjbGFzcyBTZWxl
Y3Rpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
OiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKK2Vu
dW0gY2xhc3MgVGV4dEdyYW51bGFyaXR5IDogdWludDhfdDsKIGVudW0gY2xhc3MgV3JpdGluZ0Rp
cmVjdGlvbiA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwpAQCAtNjg1LDE5
ICs2ODcsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBibHVyRm9jdXNlZEVsZW1lbnQoKTsKICAg
ICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENhbGxiYWNrSUQpOwotICAg
IHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSk7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBT
ZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwogICAgIHZvaWQgbW92
ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBSZXNwZWN0U2VsZWN0aW9uQW5jaG9yLCBDYWxs
YmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlv
bkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0
IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTcyMiw3ICs3MjQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAgICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGdldFJlY3RzRm9y
R3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90LCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0
KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHko
Ym9vbCk7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKTsKQEAgLTEzNjUsNyArMTM2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGlj
aywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRoZXRpY0NsaWNrVHlwZSwgV2ViQ29y
ZTo6UG9pbnRlcklEID0gV2ViQ29yZTo6bW91c2VQb2ludGVySUQpOwogICAgIHZvaWQgc2VuZFRh
cEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6
Ok5vZGUqKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uSW5G
b2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICB2b2lkIHNldEZvY3VzZWRGcmFtZUJl
Zm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAg
ICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShT
ZWxlY3Rpb25Ub3VjaCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02MywxOSArNjMsMTkgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJj
aE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rv
ck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAg
ICBCbHVyRm9jdXNlZEVsZW1lbnQoKQotICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUs
IHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25X
aXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9v
bCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0
V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQg
dG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSkKKyAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
ZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhf
dCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdv
VG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgZW51
bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhfdCBX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBFeHRlbmRTZWxlY3Rpb24oZW51bTp1aW50OF90IFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICAgICBTZWxlY3RXb3JkQmFja3dhcmQo
KQogICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCkgLT4gKCkgQXN5bmMK
LSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCkgLT4gKCkgQXN5bmMKLSAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+
ICgpIEFzeW5jCi0gICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24pIC0+ICgpIEFzeW5jCisgICAgU2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKKyAgICBTZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBBc3luYworICAgIE1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbikgLT4gKCkgQXN5bmMKICAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4g
KCkgQXN5bmMKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlv
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIGVudW06Ym9vbCBXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNo
b3IgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQs
IFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQs
IFN0cmluZyBuZXdUZXh0KQpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9k
aWZpZXJzLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgSGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIFNl
dEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQotICAgIEdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBp
bnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVj
dHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZW51bTp1aW50OF90IFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3Jl
KQogICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb3Np
dGlvbkluV2luZG93KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZy
YQogICAgICAgICBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gc3RhcnROb2RlSXNJbnNp
ZGVGaXhlZFBvc2l0aW9uOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9
IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUg
Zm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlv
bi4KLSAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0Nv
bnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQo
KSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcG9zdExheW91
dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIHBv
c3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dEZvckNvbnRleHQod29yZFJh
bmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7CiAgICAgICAgIGlmIChz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGNoYXJhY3RlcnNBcm91
bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExheW91dERhdGEuY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiwgcG9z
dExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKQEAgLTMyMyw4ICszMjMs
OCBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgY29tcHV0ZUVkaXRhYmxlUm9vdEhhc0NvbnRlbnRBbmRQ
bGFpblRleHQoc2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YSk7Ci0gICAgICAgIHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkRpcmVjdGlvbkJhY2t3YXJkKTsK
LSAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5
ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVFbmQoKSwgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpEaXJl
Y3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uU3RhcnRJc0F0
UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxl
Y3Rpb24udmlzaWJsZUVuZCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0KIH0KIApAQCAtNTQ5LDggKzU0
OSw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmEKICAgICBjb25z
dCBpbnQgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoID0gMzUwOwogICAgIAogICAgIFN0
cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpOwotICAgIFN0cmluZyB0ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rp
b25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBz
ZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSk7
Ci0gICAgU3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRl
ZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0
aW9uRm9yd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9y
RGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFy
eShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBzZWxlY3Rpb25FeHRlbmRl
ZENvbnRleHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpLmdldCgpKTsKKyAg
ICBTdHJpbmcgdGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlD
aGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpLmdldCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKHNlbGVjdGVkVGV4dCwgdGV4dEJlZm9yZSwg
dGV4dEFmdGVyLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBzdGF0aWMg
SW50UG9pbnQgY29uc3RyYWluUG9pbnQoY29uc3QgSW50CiAgICAgcmV0dXJuIGNvbnN0cmFpbmVk
UG9pbnQ7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNl
ZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSA9PSBHZXN0dXJlUmVjb2duaXpl
clN0YXRlOjpCZWdhbikKICAgICAgICAgc2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4
dEF0TG9jYXRpb24ocG9pbnQpOwpAQCAtMTM1MiwxMSArMTM1MiwxMSBAQCB2b2lkIFdlYlBhZ2U6
OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
ID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJh
Y2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQs
IGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgU2VsZWN0aW9uRmxh
Z3MgZmxhZ3MgPSBOb25lOworICAgIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3M7CiAg
ICAgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB3a0dlc3R1cmVTdGF0ZSA9IHN0YXRpY19jYXN0PEdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSk7CiAgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxHZXN0dXJlVHlwZT4oZ2VzdHVyZVR5cGUpKSB7CiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6
UGhyYXNlQm91bmRhcnk6CkBAIC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIGlmIChwb3NpdGlvbiA+IG1hcmtlZFJhbmdl
LT5lbmRQb3NpdGlvbigpKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtYXJrZWRSYW5nZS0+ZW5k
UG9zaXRpb24oKTsKICAgICAgICAgaWYgKHdrR2VzdHVyZVN0YXRlICE9IEdlc3R1cmVSZWNvZ25p
emVyU3RhdGU6OkJlZ2FuKQotICAgICAgICAgICAgZmxhZ3MgPSBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSkgIT0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHBvc2l0aW9uKSA/IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA6IE5v
bmU7CisgICAgICAgICAgICBmbGFncyA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRS
YW5nZS0+c3RhcnRQb3NpdGlvbigpLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKSAhPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSwgcG9zaXRpb24pID8gUGhyYXNlQm91bmRhcnlDaGFuZ2VkIDogT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiB7IH07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZsYWdzID0gUGhyYXNl
Qm91bmRhcnlDaGFuZ2VkOwogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwOgotICAgICAgICBpZiAoYXRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkKSkgewogICAgICAgICAgICAgLy8gRG91YmxlLXRhcCBhdCBlbmQgb2YgbGluZSBvbmx5
IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUuCiAgICAgICAgICAgICAvLyBUaGlzIGhlbHBz
IHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGluZyBhdCBlbmRzIG9mIGxpbmVzLAogICAgICAg
ICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3VtZW50cy4KQEAgLTE0NTQsMTcgKzE0NTQsMTcg
QEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogCiAgICAgY2FzZSBH
ZXN0dXJlVHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwOgogICAgICAgICAvLyBTaW5nbGUgdGFwIHdp
dGggdHdvIGZpbmdlcnMgc2VsZWN0cyB0aGUgZW50aXJlIHBhcmFncmFwaC4KLSAgICAgICAgcmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxlVGFwOgotICAgICAgICBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGly
ZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBv
c2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkKSkgewogICAgICAgICAgICAgLy8gVHJpcGxlLXRhcCBhdCBlbmQgb2YgbGlu
ZSBvbmx5IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUuCiAgICAgICAgICAgICAvLyBUaGlz
IGhlbHBzIHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGluZyBhdCBlbmRzIG9mIGxpbmVzLAog
ICAgICAgICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3VtZW50cy4KICAgICAgICAgICAgIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9u
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpOworICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoK
QEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29u
c3QgSW4KICAgICBpZiAocmFuZ2UpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2UuZ2V0KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50LCBnZXN0
dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmxhZ3MpLCBjYWxs
YmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJh
Y2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBjYWxsYmFja0lEKSk7
CiB9CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQpCkBAIC0xNTI3LDI3ICsxNTI3LDI3IEBAIHN0YXRpYyBS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3QKIAogc3RhdGljIFJlZlB0cjxSYW5nZT4g
cmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gc2FtZURpcmVjdGlvbiA9IGJh
c2VJc1N0YXJ0ID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOwotICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gRGlyZWN0
aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBz
YW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQg
OiBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBv
cHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKICAgICBWaXNpYmxlUG9zaXRpb24g
YmFzZSA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2li
bGVTdGFydCgpIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBmcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBpbml0aWFsRXh0ZW50
ID0gcG9zaXRpb247CiAKLSAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBX
b3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVE
aXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JkIGJvdW5kYXJ5LiBMZWF2ZSBz
ZWxlY3Rpb24gd2hlcmUgaXQgaXMuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwg
b3Bwb3NpdGVEaXJlY3Rpb24pKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4
dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9u
KSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeSBpbiB0aGUgd3JvbmcgZGly
ZWN0aW9uLiBOdWRnZSB0aGUgc2VsZWN0aW9uIHRvIGEgY2hhcmFjdGVyIGJlZm9yZSBwcm9jZWVk
aW5nLgogICAgICAgICBleHRlbnQgPSBiYXNlSXNTdGFydCA/IGV4dGVudC5wcmV2aW91cygpIDog
ZXh0ZW50Lm5leHQoKTsKICAgICB9CiAKICAgICAvLyBFeHRlbmQgdG8gdGhlIGJvdW5kYXJ5IG9m
IHRoZSB3b3JkLgogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCb3VuZGFyeSA9IHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBzYW1l
RGlyZWN0aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJvdW5kYXJ5ID0gcG9zaXRpb25P
Zk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgc2FtZURpcmVjdGlvbik7CiAgICAgaWYgKHdvcmRCb3VuZGFyeS5pc05vdE51
bGwoKQotICAgICAgICAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eSh3b3JkQm91bmRhcnksIFdv
cmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkod29yZEJvdW5kYXJ5LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
c2FtZURpcmVjdGlvbikKICAgICAgICAgJiYgaW5pdGlhbEV4dGVudCAhPSB3b3JkQm91bmRhcnkp
IHsKICAgICAgICAgZXh0ZW50ID0gd29yZEJvdW5kYXJ5OwogICAgICAgICByZXR1cm4gKGJhc2Ug
PCBleHRlbnQpID8gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGJhc2UsIGV4dGVu
dCkgOiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgZXh0ZW50LCBiYXNlKTsKQEAg
LTE1NTgsMTAgKzE1NTgsMTAgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3Vu
ZGFyeQogCiAgICAgLy8gSWYgdGhpcyBpcyB3aGVyZSB0aGUgZXh0ZW50IHdhcyBpbml0aWFsbHks
IHRoZW4gaXRlcmF0ZSBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uIGluIHRoZSBkb2N1bWVudCB1bnRp
bCB3ZSBoaXQgdGhlIG5leHQgd29yZC4KICAgICB3aGlsZSAoZXh0ZW50LmlzTm90TnVsbCgpCi0g
ICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0
eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4
dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCiAg
ICAgICAgICYmIGV4dGVudCAhPSBiYXNlCi0gICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKLSAgICAgICAgJiYg
IWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgTGluZUdyYW51bGFyaXR5LCBvcHBvc2l0
ZURpcmVjdGlvbikpIHsKKyAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVu
dCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCisgICAg
ICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKICAgICAgICAgZXh0ZW50ID0g
YmFzZUlzU3RhcnQgPyBleHRlbnQubmV4dCgpIDogZXh0ZW50LnByZXZpb3VzKCk7CiAgICAgfQog
CkBAIC0xNjc3LDIxICsxNjc3LDIwIEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hTeW50aGV0aWNN
b3VzZUV2ZW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRv
dWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgU2VsZWN0aW9uVG91Y2ggc2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+
cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChwb2ludEluRG9jdW1lbnQpOwogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgdG91Y2hlcywgMCwgY2FsbGJhY2tJRCkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwg
c2VsZWN0aW9uVG91Y2gsIHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0
OwotICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdzID0gTm9uZTsKKyAgICBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+IGZsYWdzOwogCi0gICAgYXV0byBzZWxlY3Rpb25Ub3VjaCA9IHN0YXRpY19jYXN0
PFNlbGVjdGlvblRvdWNoPih0b3VjaGVzKTsKICAgICBpZiAoc2hvdWxkRGlzcGF0Y2hTeW50aGV0
aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSkKICAgICAgICAgZGlzcGF0Y2hT
eW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoc2VsZWN0aW9uVG91Y2gsIHBv
aW50KTsKIApAQCAtMTcxMCwxMSArMTcwOSwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZWxlY3Rpb25Ub3Vj
aDo6RW5kZWRNb3ZpbmdGb3J3YXJkOgotICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbigmZnJhbWUsIHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgRGlyZWN0aW9uRm9y
d2FyZCk7CisgICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZm
cmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
OwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5k
ZWRNb3ZpbmdCYWNrd2FyZDoKLSAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9y
UG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIERpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oJmZyYW1l
LCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6Ok1vdmVkOgpAQCAtMTcy
NCwxMCArMTcyMywxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVz
CiAgICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgdG91Y2hlcywg
ZmxhZ3MsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRv
dWNoZXNDYWxsYmFjayhwb2ludCwgc2VsZWN0aW9uVG91Y2gsIGZsYWdzLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJl
VHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBmcm9tUG9zaXRpb24g
PSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9D
b250ZW50cyhmcm9tKSk7CkBAIC0xNzQyLDE0ICsxNzQxLDE0IEBAIHZvaWQgV2ViUGFnZTo6c2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QKICAgICB9CiAKICAgICAvLyBXZSBjYW4gdXNlIHRoZSBz
YW1lIGNhbGxiYWNrIGZvciB0aGUgZ2VzdHVyZXMgd2l0aCBvbmUgcG9pbnQuCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2soZnJvbSwgZ2VzdHVyZVR5cGUs
IGdlc3R1cmVTdGF0ZSwgMCwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IHsgfSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSkKK3ZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIC8vIEZv
ciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFdvcmRHcmFudWxhcml0eS4KLSAgICBpZiAoZ3Jh
bnVsYXJpdHkgIT0gV29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0
KCkpCisgICAgLy8gRm9yIHRoZSBtb21lbnQgd2UgaGFuZGxlIG9ubHkgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkuCisgICAgaWYgKGdyYW51bGFyaXR5ICE9IFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CkBAIC0xNzkyLDcgKzE3OTEsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0
KCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25C
YWNrd2FyZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwogICAgIGlmIChzdGFy
dFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHN0YXJ0UG9zaXRpb24gIT0gcG9zaXRpb24pCiAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5h
ZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CiB9CkBAIC0xODA0LDEwICsxODAzLDEwIEBAIHZvaWQgV2ViUGFn
ZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgIGlmIChz
dGFydFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgU2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVj
dGlvbkZvcndhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8
IDAgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMob2Zmc2V0KTsgKytpKSB7Ci0gICAgICAgIHBvc2l0
aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOworICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTQzLDcgKzE5NDIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlCiAgICAgcmVwbHkoV1RGTW92
ZShyZWN0c1RvQXZvaWRJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFu
dWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkuaXNOb25lKCkgPyBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSA6IG1fc3RvcmVkU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eTsK
QEAgLTE5NTUsOSArMTk1NCw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0
eVdpdGgKICAgICB9CiAKICAgICBhdXRvIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yUG9z
aXRpb25XaXRoT2Zmc2V0KHNlbGVjdGlvblN0YXJ0LCBvZmZzZXQpOwotICAgIFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJl
Y3Rpb25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQg
PCAwID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZDsKIAotICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVs
YXJpdHkpLCBkaXJlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIGlmICgh
cmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZCgpKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2VsZWN0aW9uUmVjdHNDYWxsYmFjayh7IH0sIGNhbGxiYWNrSUQpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA0OCw1MiArMjA0Nyw1MiBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRQb2ludChjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRp
cmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50KTsKIAogICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkgewotICAgICAg
ICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3Rh
dGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKKyAgICAgICAgcG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVs
YXJpdHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKICAg
ICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgVVBTVFJFQU0s
IFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJp
Z2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVs
YXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3Jl
OjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKICAgICBpZiAoIWZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgaXNGb3J3
YXJkID0gKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25SaWdodCk7CisgICAgICAgIGJvb2wgaXNGb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQgfHwgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6UmlnaHQpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSAoaXNGb3J3YXJk
KSA/IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSA6IGZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwotICAgICAgICBwb3NpdGlvbiA9
IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8U2Vs
ZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVj
dGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAgIGZy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6
IERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKK1JlZlB0cjxSYW5n
ZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQogewogICAgIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQ
b2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpKSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFu
dWxhcml0eToKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICByYW5nZSA9IG1ha2VSYW5nZShw
b3NpdGlvbiwgcG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICByYW5nZSA9IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgcmFuZ2UgPSBlbmNsb3Np
bmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFNlbnRlbmNlR3JhbnVsYXJpdHksIERp
cmVjdGlvbkZvcndhcmQpOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51
bGFyaXR5OgorICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdy
YW51bGFyaXR5OgotICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0
eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgcmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgLy8gRklYTUU6
IEl0J3Mgbm90IGNsZWFyIHdoeSB0aGlzIG11dGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGFu
ZCByZXR1cm5zIG51bGwuCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwog
ICAgICAgICBicmVhazsKQEAgLTIxMTgsNyArMjExNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9j
dXNlZEZyYW1lQmVmb3JlU2VsZWMKICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5z
ZXRGb2N1c2VkRnJhbWUocmVzdWx0LmlubmVyTm9kZUZyYW1lKCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2V0Rm9jdXNlZEZy
YW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24ocG9pbnQpOwogCkBAIC0yMTMwLDEzICsy
MTI5LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUEKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1fc2VsZWN0
aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSA9
PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5kOworICAgIG1fc2VsZWN0aW9uQW5jaG9yID0g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCA/IFN0YXJ0IDogRW5kOwogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlv
bkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwpAQCAtMjIzMiw3ICsyMjMxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
RGljdGF0aW9uQ29udGV4dChDYQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0
aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGxhc3RQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWN0
YXRpb25Db250ZXh0V29yZENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQ
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOworICAgICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkobGFzdFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2EKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gbGFzdFBvc2l0aW9uID0gZW5kUG9zaXRpb247CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkaWN0YXRpb25Db250ZXh0V29yZENvdW50OyArK2kpIHsKLSAgICAgICAgICAg
IGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShsYXN0UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkp
OworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gZW5kT2ZXb3JkKHBvc2l0aW9uT2ZOZXh0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpOwogICAgICAgICAgICAg
aWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTI0MzIsNyArMjQz
MSw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmEKICAgICBpZiAo
Y29ycmVjdGlvbi5sZW5ndGgoKSkKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChj
b3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0eSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24pOwogICAgIGVsc2UgaWYgKG9yaWdp
bmFsVGV4dC5sZW5ndGgoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVj
dGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0NzcsNyArMjQ3Niw3
IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY28KICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW5Db250ZXh0V29yZENvdW50OyArK2kpIHsKICAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dEJlZm9yZS5sZW5ndGgoKSA+PSBtaW5Db250ZXh0TGVu
Z2h0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBwcmV2aW91
c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSk7
CisgICAgICAgICAgICAgICAgcHJldmlvdXNQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKICAg
ICAgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwcmV2aW91
c1Bvc2l0aW9uLCBjdXJyZW50UG9zaXRpb24pLnB0cigpKTsKQEAgLTI0ODgsMTUgKzI0ODcsMTUg
QEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jbwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwoKSAmJiBjdXJyZW50
UG9zaXRpb24gIT0gc3RhcnRQb3NpdGlvbikgewogICAgICAgICAgICAgICAgIGNvbnRleHRCZWZv
cmUgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwotICAgICAgICAgICAgICAg
IGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFBhcmFncmFwaEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgICAgICAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBtYWtlU3RyaW5nKCJcbiAiX3MsIGNvbnRleHRC
ZWZvcmUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZFBvc2l0
aW9uICE9IGVuZE9mRWRpdGFibGVDb250ZW50KGVuZFBvc2l0aW9uKSkgewogICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbjsKLSAgICAgICAgICAgIGlmICghYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9y
d2FyZCkgJiYgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQotICAgICAgICAgICAgICAgIG5leHRQb3NpdGlv
biA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3Jk
R3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICAgICAgaWYgKCFhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkgJiYgd2l0aGluVGV4dFVuaXRPZkdy
YW51bGFyaXR5KGVuZFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkKKyAgICAgICAgICAgICAgICBuZXh0UG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZCk7CiAgICAgICAgICAgICBpZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIG5leHRQb3NpdGlvbikucHRyKCkpOwogICAg
ICAgICB9CkBAIC0yNjMwLDkgKzI2MjksOSBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5r
UG9zaXRpb25JbmZvCiAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQu
ZG9jdW1lbnQoKSk7CiAgICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7
CiAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVk
QnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGly
ZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29u
dGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkuZ2V0KCkpOwogICAgIGlu
Zm8udGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0
ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksCi0g
ICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndh
cmQpLmdldCgpKTsKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKS5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDA2
OSw3ICs0MDY4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBtb3ZlQnlHcmFudWxhcml0eQog
ewogICAgIEFTU0VSVChncmFudWxhcml0eUNvdW50KTsKICAgICBBU1NFUlQocG9zaXRpb24uaXNO
b3ROdWxsKCkpOwotICAgIGJvb2wgYmFja3dhcmRzID0gZGlyZWN0aW9uID09IERpcmVjdGlvbkJh
Y2t3YXJkOworICAgIGJvb2wgYmFja3dhcmRzID0gZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQ7CiAgICAgYXV0byBmYXJ0aGVzdFBvc2l0aW9uSW5EaXJlY3Rpb24gPSBi
YWNrd2FyZHMgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHBvc2l0aW9uKTsKICAgICBpZiAocG9zaXRpb24gPT0gZmFydGhlc3RQb3NpdGlv
bkluRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gYmFja3dhcmRzID8gc3RhcnRPZldvcmQocG9z
aXRpb24pIDogZW5kT2ZXb3JkKHBvc2l0aW9uKTsKQEAgLTQwODMsOCArNDA4Miw4IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkKICAgICAgICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbikp
CiAgICAgICAgICAgICAtLWdyYW51bGFyaXR5Q291bnQ7CiAgICAgfSB3aGlsZSAoZ3JhbnVsYXJp
dHlDb3VudCk7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IFNlbnRlbmNlR3JhbnVsYXJpdHkpIHsK
LSAgICAgICAgQVNTRVJUKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwg
U2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgaWYgKGdyYW51bGFyaXR5ID09
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSkgeworICAgICAgICBBU1NFUlQo
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOwogICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQgdGhpcyByb3VuZHMgdG8gdGhlIG5l
YXJlc3Qgd29yZCwgd2hpY2ggbWF5IGNyb3NzIGEgbGluZSBib3VuZGFyeSB3aGVuIHVzaW5nIGxp
bmUgZ3JhbnVsYXJpdHkuCkBAIC00MTk3LDggKzQxOTYsOCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVl
c3REb2N1bWVudEVkaXRpbmdDb250CiAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbnRleHRBZnRlckVu
ZDsKICAgICBhdXRvIGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRp
b25SYW5nZSgpOwogICAgIGlmIChyZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQpIHsKLSAgICAgICAg
Y29udGV4dEJlZm9yZVN0YXJ0ID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5k
YXJ5KHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHks
IHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9uQmFja3dhcmQpOwotICAgICAgICBj
b250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnko
cmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJlcXVl
c3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIGNvbnRleHRC
ZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5n
ZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0
LmdyYW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOworICAgICAg
ICBjb250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRh
cnkocmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJl
cXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBjb250ZXh0QmVmb3JlU3RhcnQgPSByYW5nZU9mSW50ZXJlc3RT
dGFydDsKICAgICAgICAgY29udGV4dEFmdGVyRW5kID0gcmFuZ2VPZkludGVyZXN0RW5kOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaD4KQEAgLTc3MywyNCArNzc0LDE4IEBAIHZvaWQgV2ViUGFnZTo6ZHJh
d1BhZ2VzVG9QREZGcm9tUERGRG9jdW0KIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6Ondl
YkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdWludDMy
X3QgcG9saWN5UmVzdWx0ID0gMDsKLQotICAgIGlmIChzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
ZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGljeVJlc3VsdCk7Ci0KLSAgICByZXR1cm4g
V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9hZFBvbGljeSBwb2xpY3lSZXN1bHQgPSBX
ZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0KSk7CisgICAgcmV0
dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi1XZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFn
ZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJiB1cmwpCiB7
Ci0gICAgdWludDMyX3QgcG9saWN5UmVzdWx0ID0gMDsKLQotICAgIGlmIChzZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpSZXBseShwb2xpY3lS
ZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkdMTG9hZFBvbGljeT4ocG9s
aWN5UmVzdWx0KTsKLQotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgV2ViR0xM
b2FkUG9saWN5IHBvbGljeVJlc3VsdCA9IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpOworICAgIHJldHVybiBwb2xpY3lSZXN1bHQ7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW06CisgICAgICAgICgtW1dlYkZyYW1lIGFnZ3Jlc3NpdmVseUV4cGFu
ZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZSBzZXRTZWxlY3Rpb25HcmFudWxhcml0eTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICh0b1RleHRHcmFudWxhcml0eSk6
CisgICAgICAgICh0b1NlbGVjdGlvbkRpcmVjdGlvbik6CisKIDIwMjAtMDUtMTAgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xpY2tpbmcgYSB0ZWw6
Ly8gbGluayBvbiBpUGFkIHdpdGggYSB0cmFja3BhZCBwcmVzZW50cyBkaWZmZXJlbnQgVUkgdGhh
biB0YXBwaW5nIG9uIGl0CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCAtICh2b2lkKWFnZ3Jlc3NpdmVseUV4cGFuZFNl
bGVjdGlvblRvV29yCiAKICAgICAvLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IGhhY2sgdW50aWwgd2Ug
Z2V0IHRoZSBpbXByb3ZlbWVudHMKICAgICAvLyBJJ20gd29ya2luZyBvbiBmb3IgUlRMIHNlbGVj
dGlvbi4KLSAgICBpZiAoZnJhbWVTZWxlY3Rpb24uZ3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVs
YXJpdHkpCisgICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpCiAgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhm
cmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rp
b24oKS5lbmQoKSk7CiAgICAgCiAgICAgaWYgKGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmlz
Q2FyZXQoKSkgewpAQCAtNjA0LDIzICs2MDQsMjMgQEAgLSAodm9pZCltb3ZlU2VsZWN0aW9uVG9Q
b2ludDooQ0dQb2ludClwbwogCiAtICh2b2lkKXNldFNlbGVjdGlvbkdyYW51bGFyaXR5OihXZWJU
ZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKIHsKLSAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIFRleHRHcmFudWxhcml0eSB3Y0dy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBz
d2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5Q2hh
cmFjdGVyOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3Jh
bnVsYXJpdHlXb3JkOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFdvcmRHcmFudWxhcml0
eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxh
cml0eVNlbnRlbmNlOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFNlbnRlbmNlR3JhbnVs
YXJpdHk7CisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4
dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFn
cmFwaEdyYW51bGFyaXR5OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlBbGw6Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIERv
Y3VtZW50R3JhbnVsYXJpdHkuCi0gICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gUGFyYWdyYXBo
R3JhbnVsYXJpdHk7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIFRleHRHcmFudWxhcml0eTo6
RG9jdW1lbnRHcmFudWxhcml0eS4KKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpYmxlUG9zaXRpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjA1LDI3ICsyMDUsMjcgQEAgc3RhdGljIGlubGluZSBUZXh0R3JhbnVsYXJpdHkg
dG9UZXh0R3JhbgogICAgIAogICAgIHN3aXRjaCAod2ViR3JhbnVsYXJpdHkpIHsKICAgICAgICAg
Y2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBncmFudWxhcml0
eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlXb3JkOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlTZW50ZW5jZToKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gU2VudGVuY2VHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlMaW5lOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlQYXJhZ3JhcGg6Ci0gICAgICAgICAgICBncmFudWxh
cml0eSA9IFBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlBbGw6Ci0gICAgICAgICAgICBncmFu
dWxhcml0eSA9IERvY3VtZW50R3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDIsMjcgKzI0MiwyNyBAQCBzdGF0aWMgaW5saW5l
IFNlbGVjdGlvbkRpcmVjdGlvbiB0b1NlbGVjCiAgICAgCiAgICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudEZvcndhcmQ6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkOgotICAgICAgICAgICAgcmVzdWx0
ID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFJpZ2h0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGly
ZWN0aW9uUmlnaHQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJp
Z2h0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBXZWJU
ZXh0QWRqdXN0bWVudExlZnQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25MZWZ0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBjYXNlIFdlYlRleHRBZGp1c3RtZW50VXA6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25MZWZ0OworICAgICAgICAgICAgcmVzdWx0ID0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAog
ICAgICAgICBjYXNlIFdlYlRleHRBZGp1c3RtZW50RG93bjoKLSAgICAgICAgICAgIHJlc3VsdCA9
IERpcmVjdGlvblJpZ2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9u
OjpSaWdodDsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDUtMTQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBV
c2UgZW51bSBzZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTVJhbmdlIG1vdmU6aW5EaXJlY3Rp
b246XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGV4dGVuZDppbkRpcmVjdGlvbjpdKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
Y2FuU21hcnRDb3B5T3JEZWxldGVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRDb21wbGV0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVy
IGRvQ29tcGxldGlvbl0pOgorCiAyMDIwLTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gTmV1dGVyIFdLRnJhbWVJc0ZyYW1lU2V0KCkgLyBXS1Bh
Z2VHZXRGcmFtZVNldExhcmdlc3RGcmFtZSgpIEMgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0JKHJldmlzaW9uIDI2MTY5
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTgyLDE1ICs4MiwxNSBAQCAtICh2b2lkKW1vdmU6KFVJbnQzMilh
bW91bnQgaW5EaXJlY3Rpb246CiAgICAgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxl
Y3Rpb247CiAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHJhbmdlKTsKICAgICAKLSAgICBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKKyAgICBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgIC8vIFVudGls
IFdlYktpdCBzdXBwb3J0cyB2ZXJ0aWNhbCBsYXlvdXQsICJkb3duIiBpcyBlcXVpdmFsZW50IHRv
ICJmb3J3YXJkIGJ5IGEgbGluZSIgYW5kCiAgICAgLy8gInVwIiBpcyBlcXVpdmFsZW50IHRvICJi
YWNrd2FyZCBieSBhIGxpbmUiLgogICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1l
bnREb3duKSB7CiAgICAgICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50Rm9yd2FyZDsK
LSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpMaW5lR3JhbnVsYXJpdHk7CisgICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7
CiAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRVcCkgewogICAg
ICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkOwotICAgICAgICBncmFu
dWxhcml0eSA9IFdlYkNvcmU6OkxpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICB9CiAgICAg
CiAgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykKQEAgLTExMSw3ICsxMTEs
NyBAQCAtICh2b2lkKWV4dGVuZDooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvCiAgICAgZnJhbWVT
ZWxlY3Rpb24ubW92ZVRvKHJhbmdlKTsKICAgICAKICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8
IGFtb3VudDsgaSsrKQotICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24pZGlyZWN0aW9uLCBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGZy
YW1lU2VsZWN0aW9uLm1vZGlmeShXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24sIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIAogICAgIFBvc2l0aW9u
IHN0YXJ0ID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmQgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rp
b24oKS5lbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjExMiwxMiArMjExMiwxMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1dlYkdMKCkK
IAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBv
bGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdAogewotICAgIHJldHVybiBzaG91bGRCbG9ja1dl
YkdMKCkgPyBXZWJDb3JlOjpXZWJHTEJsb2NrQ3JlYXRpb24gOiBXZWJDb3JlOjpXZWJHTEFsbG93
Q3JlYXRpb247CisgICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdMQmxv
Y2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gc2hv
dWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3Jl
YXRpb24gOiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTczMiw3ICs1NzMyLDcgQEAgLSAoQk9PTClfY2FuU21hcnRDb3B5T3JEZWxldGUKICAgICBp
ZiAoIVtbc2VsZiBfd2ViVmlld10gc21hcnRJbnNlcnREZWxldGVFbmFibGVkXSkKICAgICAgICAg
cmV0dXJuIE5POwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0g
ICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5
KCkgPT0gV2ViQ29yZTo6V29yZEdyYW51bGFyaXR5OworICAgIHJldHVybiBjb3JlRnJhbWUgJiYg
Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJU
ZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClkb0NvbXBsZXRpb24KICAg
ICAgICAgV2ViRnJhbWUgKmZyYW1lID0gW19odG1sVmlldyBfZnJhbWVdOwogICAgICAgICBET01S
YW5nZSAqc2VsZWN0aW9uID0ga2l0KGNyZWF0ZUxpdmVSYW5nZShjb3JlKGZyYW1lKS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkuZ2V0KCkpOwogICAgICAgICBE
T01SYW5nZSAqd2hvbGVXb3JkID0gW2ZyYW1lIF9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0
aW9uOkZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kCi0gICAgICAgICAgICBkaXJlY3Rp
b246RGlyZWN0aW9uQmFja3dhcmQgZ3JhbnVsYXJpdHk6V29yZEdyYW51bGFyaXR5XTsKKyAgICAg
ICAgICAgIGRpcmVjdGlvbjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIGdyYW51bGFyaXR5
OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5XTsKICAgICAgICAgRE9NUmFuZ2UgKnBy
ZWZpeCA9IFt3aG9sZVdvcmQgY2xvbmVSYW5nZV07CiAgICAgICAgIFtwcmVmaXggc2V0RW5kOltz
ZWxlY3Rpb24gc3RhcnRDb250YWluZXJdIG9mZnNldDpbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XV07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399377</attachid>
            <date>2020-05-14 10:27:22 -0700</date>
            <delta_ts>2020-05-14 11:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514102720.patch</filename>
            <type>text/plain</type>
            <size>236964</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTQgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbiBuZWVkcyB0byBhcHBseSBwZW5k
aW5nIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSBnaXZlbiBub2RlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEyLDcgKzIwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgRnJhbWVTZWxlY3Rp
b24gc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkpOwogICAgIAogICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCAtICh2
b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRlCiAgICAgaWYgKGZyYW1lU2VsZWN0
aW9uLmlzTm9uZSgpICYmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPCByYW5nZS5zdGFydCB8
fCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpID4gcmFuZ2UuZW5kKSkKICAgICAgICAgZnJhbWVTZWxl
Y3Rpb24ubW92ZVRvKHJhbmdlLnN0YXJ0LCBVc2VyVHJpZ2dlcmVkKTsKICAgICAKLSAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChpbmNy
ZWFzZSkgPyBEaXJlY3Rpb25SaWdodCA6IERpcmVjdGlvbkxlZnQsIGdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0IDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBncmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9
CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUluY3JlYXNlU2VsZWN0aW9uOihUZXh0R3JhbnVsYXJp
dHkpZ3JhbnVsYXJpdHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0JlaGF2
aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQmVoYXZp
b3IuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
QmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT24gaU9TLCB3ZSBkb24ndCB3YW50IHRvIHNlbGVjdCBhbGwgdGhlIHRleHQgd2hlbiBmb2N1
c2luZyBhIGZpZWxkLiBJbnN0ZWFkLCBtYXRjaCBwbGF0Zm9ybSBiZWhhdmlvciBieSBnb2luZyB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgIGJvb2wgc2hvdWxkTW92ZVNlbGVjdGlvblRvRW5k
V2hlbkZvY3VzaW5nVGV4dElucHV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAotICAgIC8vIE9uIGlPUywgd2hlbiBzbWFydCBkZWxldGUgaXMg
b24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBkbyBub3QgYWRkaXRpb25hbCBjaGVja3Mg
KGkuZS4gV29yZEdyYW51bGFyaXR5KS4KKyAgICAvLyBPbiBpT1MsIHdoZW4gc21hcnQgZGVsZXRl
IGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91bGQgZG8gbm90IGFkZGl0aW9uYWwgY2hl
Y2tzIChpLmUuIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KS4KICAgICBib29sIHNo
b3VsZEFsd2F5c1NtYXJ0RGVsZXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAogICAgIC8vIE9uIGlPUywgd2Ugc2hvdWxkIHR1cm4gb24gc21h
cnQgaW5zZXJ0IGFuZCBkZWxldGUgYW5kIG5ld2xpbmVzIGFyb3VuZCBwYXJhZ3JhcGhzIHRvIG1h
dGNoIFVJS2l0IGJlaGF2aW91ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgRWRpdG9yOjpzaG91bGRTbWFydERl
bGV0ZSgpCiB7CiAgICAgaWYgKGJlaGF2aW9yKCkuc2hvdWxkQWx3YXlzU21hcnREZWxldGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eTsKIH0KIAogYm9vbCBFZGl0b3I6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCkBAIC01
NjgsMTIgKzU2OCwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
CiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQogICAgICAgICAgICAgb3B0aW9ucyB8
PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgICAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3Jh
bnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uQmFj
a3dhcmQ6Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1l
bnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIFN0cmluZyBFZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRD
YXJldE9yUmEKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIHdvcmRTZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7
CiAgICAgYXV0byB3b3JkUmFuZ2UgPSB3b3JkU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgaWYgKCF3b3JkUmFuZ2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0MDIs
NyArMjQwMiw3IEBAIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWwKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlv
cigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewog
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgd29yZFNlbGVj
dGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5KTsKICAgICAgICAgICAgIHJhbmdlID0gd29yZFNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCk7CkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUg
Y2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRv
KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
CkBAIC0yOTE5LDExICsyOTE5LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihj
b25zdCBTcGUKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFn
cmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhC
b3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24s
IHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxh
Y2VtZW50CiAgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9p
ZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleAogICAgIH0gZWxzZQogICAgICAg
ICBpbnNlcnRUZXh0KGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LCBudWxscHRyKTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCksIERpcmVjdGlvbkJh
Y2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UgPSByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoaW5zZXJ0ZWRDYW5kaWRhdGVS
YW5nZSkKICAgICAgICAgaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoKmluc2VydGVkQ2FuZGlkYXRlUmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCwzMiArMzA0LDMyIEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGUoRnJhbWUmIGZyYW1lLCAKIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJh
Y2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLmVkaXRvcigpLmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRl
V2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYQogewogICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXAKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBu
YW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9m
CiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LgotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9N
YXJrKEZyYW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2Fy
ZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDI0LDcg
KzQyNCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lJiAKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpAQCAtNjA2LDQ3ICs2MDYsNDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdAogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg4LDIwMyAr
Njg4LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdy
YW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7Cisg
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFNl
bnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVk
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9m
U2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0Vu
ZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNl
clRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZy
YW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQs
IFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMzUsMTcgKzEwMzUsMTcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSYgZnJhbQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
U2VsZWN0TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShm
cmFtZSwgTGluZUdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHkpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0UGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRT
ZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0
U2VudGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJh
bWUsIFNlbnRlbmNlR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtMTA2Miw3ICsxMDYyLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZgogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU2VsZWN0V29yZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3QKIEZy
YW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oKSkKLSAgICAsIG1fZ3JhbnVsYXJp
dHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgLCBtX2dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAg
LCBtX2NhcmV0QmxpbmtUaW1lcigqdGhpcywgJkZyYW1lU2VsZWN0aW9uOjpjYXJldEJsaW5rVGlt
ZXJGaXJlZCkKICNlbmRpZgpAQCAtNjc2LDIyICs2NzYsMjIgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6d2lsbEJlTW9kaWZpZWQoRUFsdAogICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNl
IERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6
CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJh
c2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFz
ZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoK
ICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNzY1LDM0ICs3NjUsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeAogICAgIC8vIGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhl
IGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4
dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERp
cmVjdGlvbjo6UlRMLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJh
Y3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2
aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2Fz
ZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
PwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODA2LDM0ICs4MDYsMzQgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogewogICAgIFZpc2libGVQb3Np
dGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlv
blBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBv
c2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAg
ICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpM
aW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZv
cm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBl
bmRPZlBhcmFncmFwaChlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBpZiAoaXNF
ZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9
IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC04NTMsNyArODUzLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5
ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpIHsK
ICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtODYyLDcgKzg2Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwpAQCAtODcwLDE5ICs4NzAsMTkgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgKnJlYWNoZWRC
b3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHJpZ2h0Qm91bmRhcnlPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg5NSwxNSArODk1
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAg
KnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9z
aXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGN1cnJlbnRQb3Np
dGlvbiA9IGVuZEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBA
IC05MTIsMTkgKzkxMiwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICAvLyBGSVhNRTogU3RheSBpbiBlZGl0
YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24gZ3JhbnVsYXJpdGllcy4KICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRX
b3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewogICAg
ICAgICAvLyBkb3duLWFycm93aW5nIGZyb20gYSByYW5nZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0
IHRoZSBzdGFydCBvZiBhIGxpbmUgbmVlZHMKICAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVj
dGlvbiBhdCB0aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9u
ISkKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9uOwpAQCAtOTMyLDIyICs5MzIsMjIgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9z
ID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0
aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50
UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihT
VEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgp
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAg
ICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKQEAgLTk1NiwxMyArOTU2LDEz
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9z
ID09IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgYnJlYWs7CkBAIC05ODIsMzMgKzk4MiwzMyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0
ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGly
ZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYg
dGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2Fy
ZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9j
dW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTEwMjcsMzggKzEwMjcsMzggQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIEl0IHdhcyBkb25lIGhlcmUgaW5zdGVhZCBv
ZiBpbiBWaXNpYmxlUG9zaXRpb24gYmVjYXVzZSB3ZSB3YW50IFZQcyB0byBpdGVyYXRlCiAgICAg
Ly8gb3ZlciBldmVyeXRoaW5nLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9z
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5l
UG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAg
ICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBs
YXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2Fs
U3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRGb3JQbGF0Zm9y
bSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFy
dEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChw
b3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9z
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA3NCw3ICsxMDc0LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVh
Y2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtMTA4Myw3ICsx
MDgzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxlZnQodHJ1ZSwgcmVhY2hlZEJvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CiAgICAgICAgIGJvb2wgc2tpcHNT
cGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+ZWRpdG9yKCku
YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9IGxlZnRXb3JkUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKQEAgLTEwOTEsMTkgKzEwOTEs
MTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAg
ICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAg
ICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsZWZ0Qm91bmRh
cnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCks
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTExMTYsMTUgKzExMTYsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpAQCAtMTEzMiw1MiArMTEzMiw1MiBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAg
ICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExp
bmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgogICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxp
bmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlv
dXNQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZv
ckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShjdXJyZW50UG9zaXRpb24p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxp
bmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQ
YXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChjdXJyZW50
UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVl
cEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50
KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChw
b3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFn
cmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAg
ICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAg
ICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KIAogc3RhdGljIGJvb2wgaXNCb3VuZGFyeShUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8
fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBEb2N1
bWVudEJvdW5kYXJ5OworICAgIHJldHVybiBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeTsKIH0KIAogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OnRleHRT
ZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKQEAgLTEyMDIsNTUgKzEyMDIsNTUg
QEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OgogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVu
ZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
aW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
V29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkg
PSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVj
dGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBib29sIGJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5
OgogICAgICAgICBib3VuZGFyeSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6Ci0gICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKKyAg
ICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5
KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5k
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA6IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoK
LSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAg
aWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBm
bGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uQmVnaW5uaW5nOwogICAgICAgICBlbHNlCkBAIC0xMjYyLDU4ICsxMjYyLDU4IEBAIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKIAogc3RhdGljIEFYVGV4dFNlbGVj
dGlvbiB0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFyaXR5KFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICAv
LyBGSVhNRTogQWNjb3VudCBmb3IgQklESSBpbiBEaXJlY3Rpb25SaWdodCAmIERpcmVjdGlvbkxl
ZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQgbWFwIHRvIFByZXZpb3VzL0JlZ2lubmlu
ZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCisgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIEJJREkg
aW4gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCAmIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdC4g
KEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAgdG8gUHJldmlvdXMvQmVnaW5uaW5nIGFu
ZCBMZWZ0IHRvIE5leHQvRW5kLikKICAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24gaW50ZW50
RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5rbm93bjsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIGlu
dGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25M
ZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IGludGVudEdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duOwogICAgIHN3aXRjaCAoZ3Jh
bnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVs
YXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxl
Y3Rpb25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFy
eSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3Vu
ZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAg
ICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6IC8v
IEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBk
aXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBz
aG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBp
bnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAg
ICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgICAgICBpbnRl
bnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xMzQ0LDI1ICsxMzQ0LDI1IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlm
eShFQWx0ZXJhdGlvbiAKICAgICBQb3NpdGlvbiBvcmlnaW5hbFN0YXJ0UG9zaXRpb24gPSBtX3Nl
bGVjdGlvbi5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1v
dmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5
LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVj
dGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJh
dGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgY2FzZSBBbHRlcmF0aW9u
RXh0ZW5kOgogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCi0gICAgICAgICAg
ICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkKKyAg
ICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5KQog
ICAgICAgICAgICAgJiYgbV9kb2N1bWVudCAmJiAhbV9kb2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZp
b3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVBY3Jvc3NDYXJldCgpKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIHNlbGVjdGlvbiBnbyBhY3Jvc3MgdGhlIGJhc2Ug
cG9zaXRpb24gZGlyZWN0bHkuIE5lZWRlZCB0byBtYXRjaCBtYWMKICAgICAgICAgICAgIC8vIGJl
aGF2aW9yIHdoZW4sIGZvciBpbnN0YW5jZSwgd29yZC1zZWxlY3RpbmcgYmFja3dhcmRzIHN0YXJ0
aW5nIHdpdGggdGhlIGNhcmV0IGluCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRp
b24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKTsKLSAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8
fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERp
cmVjdGlvbkxlZnQpKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSICYm
IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0KSB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6TGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CkBAIC0xNDI4LDExICsxNDI4LDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IGlmIChncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFy
YWdyYXBoR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHkpCiAgICAgICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uID0geDsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCi0gICAg
ICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgbV9ncmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBz
ZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25VcCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgd2ls
bEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBMYXlvdXRVbml0IHhQb3M7CkBAIC0xNTI0LDcgKzE1
MjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgfQog
CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkKLSAgICAgICAgbV9ncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBtX2dyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIG1fc2VsZWN0aW9u
LnNldElzRGlyZWN0aW9uYWwoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9k
b2N1bWVudCkgfHwgYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKQEAgLTE1NzIsMTMgKzE1
NzIsMTMgQEAgTGF5b3V0VW5pdCBGcmFtZVNlbGVjdGlvbjo6bGluZURpcmVjdGlvbgogCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpjbGVhcigpCiB7Ci0gICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OwogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCkpOwog
fQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKIHsKLSAg
ICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgbV9ncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICNpZiBFTkFCTEUo
VEVYVF9DQVJFVCkKICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdG9wKCk7CkBAIC0xNTg3LDcgKzE1
ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyCiAgICAgaWYg
KGF1dG8qIHZpZXcgPSBtX2RvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHZpZXctPnNl
bGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShWaXNpYmxlU2Vs
ZWN0aW9uKCksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAg
bV9wcmV2aW91c0NhcmV0Tm9kZSA9IG51bGxwdHI7CiAgICAgbV90eXBpbmdTdHlsZSA9IG51bGxw
dHI7CiAgICAgbV9hcHBlYXJhbmNlVXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjE2NSw3ICsyMTY1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gQ29u
c3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5l
Y2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBh
IHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4NjY+LgogI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWlu
dEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0
eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRW
aXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLCBlbmRWaXNpYmxlUG9zaXRpb24pOwogI2Vsc2UKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVj
dGlvbi52aXNpYmxlRW5kKCkpOwpAQCAtMjc0MywxMCArMjc0MywxMCBAQCBWaXNpYmxlU2VsZWN0
aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsCiAgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBv
ZiBzZWxlY3RpbmcgdGhlIHdvcmQgb24gdGhlIGxpbmUgKHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSB3YW50LCByYXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4K
ICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAm
JiAhaXNTdGFydE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKQotICAg
ICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCk7Ci0gICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgZnJhbWVTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBm
cmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZy
YW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
VmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbAogICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQogICAgICAgICBmcmFtZVNlbGVjdGlv
bi5tb3ZlVG8oc3RhcnRWaXNpYmxlUG9zKTsKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29y
ZEdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgIHN0YXJ0UG9zID0gZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgZW5kUG9zID0gZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgIHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2li
bGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CkBAIC0yODcyLDkgKzI4
NzIsOSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhCiAKICAgICBG
cmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxl
Y3Rpb24obV9zZWxlY3Rpb24pOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBh
bW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOworICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFicyhhbW91bnQpOyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1v
ZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwg
Ym9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
bjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5l
ZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRp
b25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCks
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vy
c29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51
bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBFQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCShyZXZpc2lvbiAyNjE2OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFRo
aXMgcmVhbGx5IHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBtb3JlIHRoYW4gb25lIGNvbmNlcHQu
CiAvLyBGcmFtZSBkb2Vzbid0IG5lZWQgdGhlIDMgYm91bmRhcmllcyBpbiB0aGlzIGVudW0uCi1l
bnVtIFRleHRHcmFudWxhcml0eSB7CitlbnVtIGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4
X3QgewogICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgIFdvcmRHcmFudWxhcml0eSwKICAg
ICBTZW50ZW5jZUdyYW51bGFyaXR5LApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxNiBAQCBz
dGF0aWMgaW5saW5lIEVkaXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5CiAgICAgY2FzZSBUeXBpbmdD
b21tYW5kOjpEZWxldGVTZWxlY3Rpb246CiAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBp
bmdEZWxldGVTZWxlY3Rpb247CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVLZXk6IHsK
LSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSkKKyAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAg
ICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVdvcmRCYWNrd2FyZDsKLSAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAgICAgICAgaWYgKGdyYW51bGFy
aXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJu
IEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVCYWNrd2FyZDsKICAgICAgICAgcmV0dXJuIEVk
aXRBY3Rpb246OlR5cGluZ0RlbGV0ZUJhY2t3YXJkOwogICAgIH0KICAgICBjYXNlIFR5cGluZ0Nv
bW1hbmQ6OkZvcndhcmREZWxldGVLZXk6Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3Jk
R3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdE
ZWxldGVXb3JkRm9yd2FyZDsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFy
eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVGb3J3
YXJkOwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlRm9yd2FyZDsKICAg
ICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQ6CkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oRG9jdQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3Bl
bkZvclR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlm
ZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3Vt
ZW50KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgLy8gRklYTUU6IEZvcndhcmQg
ZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlwaW5n
IGNvbW1hbmQuCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7
CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0
aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudCk7CiAgICAgICAgICAgICBsYXN0
VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxl
dGlvbik7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
QW5kTm90aWZ5QQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0ZXh0KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKElu
c2VydFRleHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRleHQpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNvbW1hbmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIHRleHQsIHNlbGVjdEluc2VydGVkVGV4dCwKQEAgLTU0NSw3ICs1
NDUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhaygpCiAgICAgaWYgKCFj
YW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRM
aW5lQnJlYWssIExpbmVHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVu
Q29tbWFuZChJbnNlcnRMaW5lQnJlYWssIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKQEAgLTU2NSw3ICs1NjUsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyCiAgICAgaWYgKCFjYW5B
cHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRU
eXBpbmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0
ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246OlR5cGluZ0luc2VydFBhcmFn
cmFwaCkpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXIKIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JJblF1b3RlZENvbnRlbnQoKQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50LCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IHN0YXJ0cyBpbnNpZGUgYSB0YWJsZSwganVzdCBpbnNlcnQgdGhlIHBhcmFncmFwaCBzZXBhcmF0
b3Igbm9ybWFsbHkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwogICAg
ICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJp
bmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
aWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxh
cml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICAg
ICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQg
PSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9uID0gdmlzaWJsZVN0YXJ0LnByZXZpb3VzKENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVy
IGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
dmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eAogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwog
Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUu
c3RhcnQoKS5jb250YWluZXJOb2RlKCkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpCiAgICAgICAgICAgICAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA+IDEpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUg
cmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlvbnMuCiAgICAgICAgICAgICBzZWxlY3Rp
b25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFsaWRhdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwg
c2VsZWN0aW9uVG9EZWxldGUuZW5kKCkucHJldmlvdXMoQmFja3dhcmREZWxldGlvbikpOwpAQCAt
NzczLDExICs3NzMsMTEgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
cwogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEg
ZG9jdW1lbnQuCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBz
ZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGlmIChzaG91bGRBZGRU
b0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAg
ICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRv
d25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC03OTUsOCArNzk1LDggQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAgICAgICB9CiAKICAgICAgICAgLy8gZGVs
ZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMg
dG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCi0gICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
ICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5
ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChz
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAK
ICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAg
ICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxl
dGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKQEAgLTg1Niw3ICs4NTYs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUpCiB7Ci0gICAgaWYg
KCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVTZWxlY3Rpb24sIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc21h
cnREZWxldGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHVu
c2lnbmVkIE9wdGlvbnM7CiAKICAgICBzdGF0aWMgdm9pZCBkZWxldGVTZWxlY3Rpb24oRG9jdW1l
bnQmLCBPcHRpb25zID0gMCwgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5v
bmUpOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25z
ID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIHN0YXRp
YyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRl
eHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBzdGF0aWMgdm9pZCBk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyB2b2lk
IGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIHN0
YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25zLCBU
ZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgc3RhdGljIHZv
aWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9u
ZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiwgT3B0aW9ucyk7
CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIFJlZjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRp
b25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29t
cG9zaXRpb25Ob25lKQorICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0
ID0gZW1wdHlTdHJpbmcoKSwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVGV4dENv
bXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25Ob25lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwg
Y29tbWFuZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRp
b25zIG9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29t
bWFuZCwgdGV4dCwgb3B0aW9ucywgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBpbmdDb21tYW5kKGRvY3VtZW50
LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9CiAKICAgICBUeXBpbmdDb21tYW5kKERv
Y3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucywgVGV4
dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxLDEyMCArMjcxLDEyMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5k
RW5kRnJvCiAgICAgfQogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFu
c2lvbi4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eTog
ewotICAgICAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBTZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0
IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkuCi0gICAgICAgICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBh
ZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgc29mdC13cmFwcGVkIGxpbmUgb3IgdGhlIGxhc3Qgd29y
ZCBpbgotICAgICAgICAgICAgLy8gdGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBsYXN0IHdvcmQg
KExlZnRXb3JkSWZPbkJvdW5kYXJ5KS4KLSAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhl
IGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgsIHNlbGVjdCBmcm9t
IHRoZSBlbmQgb2YgdGhlCi0gICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJl
YWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Ci0g
ICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAgICAg
ICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChzdGFydCkgfHwg
KGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGluZShzdGFydCkgJiYgIWlzRW5kT2ZQ
YXJhZ3JhcGgoc3RhcnQpKSkKLSAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91
bmRhcnk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQsIHNpZGUpLmRl
ZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9y
aWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5l
KG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRPZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQotICAgICAg
ICAgICAgICAgIHNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChvcmlnaW5hbEVu
ZCwgc2lkZSkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCh3b3JkRW5kKTsKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIC8v
IERvbid0IGRvIGFueSBleHBhbnNpb24uCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBT
ZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0
aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQg
bGluZSBvciB0aGUgbGFzdCB3b3JkIGluCisgICAgICAgIC8vIHRoZSBkb2N1bWVudCwgc2VsZWN0
IHRoYXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2Ug
Y2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgs
IHNlbGVjdCBmcm9tIHRoZSBlbmQgb2YgdGhlCisgICAgICAgIC8vIGxhc3Qgd29yZCB0byB0aGUg
bGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIEVXb3JkU2lkZSBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICBp
ZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoc3RhcnQpIHx8IChpc0VuZE9m
TGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHN0YXJ0KSkpCisgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAg
ICAgIG1fc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgaWYgKGlzRW5k
T2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9yaWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxp
bmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRP
ZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQorICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZP
bkJvdW5kYXJ5OworCisgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChv
cmlnaW5hbEVuZCwgc2lkZSkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kKHdvcmRFbmQp
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxFbmQpICYm
ICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIC8vIFNlbGVjdCB0aGUgcGFyYWdyYXBoIGJyZWFrICh0aGUgc3BhY2UgZnJvbSB0aGUgZW5k
IG9mIGEgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiAKKyAgICAgICAgICAgIC8vIHRoZSBuZXh0
IG9uZSkgdG8gbWF0Y2ggVGV4dEVkaXQuCisgICAgICAgICAgICBlbmQgPSB3b3JkRW5kLm5leHQo
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2lu
YWxFbmQpICYmICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHBhcmFncmFwaCBicmVhayAodGhlIHNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgCi0gICAgICAgICAg
ICAgICAgLy8gdGhlIG5leHQgb25lKSB0byBtYXRjaCBUZXh0RWRpdC4KLSAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kLm5leHQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBw
YXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhIGJsb2NrIHRhYmxlIGVuZHMKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhlIHRh
YmxlLgotICAgICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IHdvcmRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IC8vIEVuZCBtdXN0IG5vdCBiZSBiZWZvcmUgc3RhcnQuCi0gICAgICAgICAgICBpZiAobV9zdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkgewotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGFydCA9IG1fZW5kOyAgICAKLSAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7
ICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OiB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3Rh
cnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKLSAgICAg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9h
ZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOwotICAg
ICAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlzIGxpbmUgaXMgYXQgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCi0gICAgICAgICAgICAvLyBhZnRlciB0aGUgZW5k
IG9mIHRoZSBsaW5lIGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChlbmQpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSBl
bmQubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0LmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBuZXh0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9l
bmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0
T2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxl
bnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2Vu
ZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eTogewotICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXJ0
T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zKSkK
LSAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKLSAgICAgICAgICAgIG1fc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAotICAgICAgICAgICAgLy8gb2YgdGhl
IG5leHQgb25lKSBpbiB0aGUgc2VsZWN0aW9uLgotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCh2aXNpYmxlUGFyYWdyYXBoRW5kLm5leHQoKSk7Ci0gICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
ZW5kKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0ZXIgdGhl
IGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBlbmRzCi0g
ICAgICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhl
IHRhYmxlLCBub3QgYXQgdGhlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgdGhlIHRhYmxlLgorICAgICAg
ICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGFmdGVyIHRoZSB0YWJs
ZS4KICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLSAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBh
cmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQ7
CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQ7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKKyAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9lbmQgPSBl
bmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
RG9jdW1lbnQobV9zdGFydC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5kLmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
LSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbiht
X3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5p
dHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9yZSBzdGFydC4K
KyAgICAgICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVk
Tm9kZSgpICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFy
dCk7CisgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAgIAorICAgICAgICAgICAgbV9lbmQg
PSBzd2FwOyAgICAKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgbV9zdGFydCA9
IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
ID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOworICAgICAg
ICAvLyBJZiB0aGUgZW5kIG9mIHRoaXMgbGluZSBpcyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LCBpbmNsdWRlIHRoZSBzcGFjZSAKKyAgICAgICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGlu
ZSBpbiB0aGUgc2VsZWN0aW9uLgorICAgICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmQpKSB7
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IGVuZC5uZXh0KCk7CisgICAgICAg
ICAgICBpZiAobmV4dC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBuZXh0Owor
ICAgICAgICB9CisgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5Ogor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHk6IHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsK
KyAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChwb3MpKQorICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Cisg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFn
cmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAorICAgICAgICAvLyBvZiB0aGUgbmV4
dCBvbmUpIGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQodmlz
aWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOworCisgICAgICAgIGlmIChOb2RlKiB0YWJsZSA9IGlz
Rmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoZW5kKSkgeworICAgICAgICAgICAgLy8gVGhlIHBhcmFn
cmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IGJsb2NrIHRhYmxlIGVuZHMKKyAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFy
YWdyYXBoIGFmdGVyIHRoZSB0YWJsZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRo
ZSB0YWJsZS4KKyAgICAgICAgICAgIGlmIChpc0Jsb2NrKHRhYmxlKSkKKyAgICAgICAgICAgICAg
ICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgICAgICAg
ICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFw
aCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxlUGFyYWdyYXBoRW5kOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVuZC5pc051bGwoKSkKKyAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJh
Z3JhcGhFbmQ7CisKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1lbnQo
KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5k
LmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0
YXJ0T2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgICAgICBt
X3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmlu
aXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZp
c2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhIGRhbmdsaW5nIHN0YXJ0IG9y
IGVuZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiVGV4dEdy
YW51bGFyaXR5LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNiw3IEBA
IGNsYXNzIFBvc2l0aW9uOwogc3RydWN0IFNpbXBsZVJhbmdlOwogCiBjb25zdCBFQWZmaW5pdHkg
U0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOwotZW51bSBTZWxlY3Rpb25EaXJlY3Rp
b24gOiB1aW50OF90IHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVj
dGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlv
biA6IHVpbnQ4X3QgeyBGb3J3YXJkLCBCYWNrd2FyZCwgUmlnaHQsIExlZnQgfTsKIAogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5ID0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAvLyBTdXBw
b3J0IG1ldGhvZHMgZm9yIHZhbGlkYXRlKCkKICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnRUb0Rl
ZXBFcXVpdmFsZW50cygpOwpAQCAtMTY0LDMgKzE2NSwxNyBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yCiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mKTsKIHZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiopOwogI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLAorICAgICAgICBXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLAorICAgICAgICBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0LAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NTgsMjAgKzE1NTgsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29u
cwogCiBzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkKQor
ICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3
YXJkKQorICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgZG9lc24ndCB0
YWtlIGludG8gYWNjb3VudCB0aGUgb3JpZ2luYWwgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50Lgog
ICAgIC8vIEknbSBub3QgZml4aW5nIHRoaXMgbm93IGJlY2F1c2UgSSdtIGFmcmFpZCB0aGVyZSBp
cyBzb21lIGNvZGUgaW4gVUlLaXQgcmVseWluZyBvbgogICAgIC8vIHRoaXMgd3JvbmcgYmVoYXZp
b3IuCi0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodDsKKyAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiB9CiAKIGJvb2wgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlm
IChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnk7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAgICAgYm9v
bCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gdmlzaWJs
ZV91bml0cyBjbGFpbXMgZXJyb25lb3VzbHkgdGhhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQKICAg
ICAgICAgLy8gb2YgYSBwYXJhZ3JhcGggYXJlIHRoZSBlbmQgYW5kIHN0YXJ0IG9mIGEgd29yZCwg
cmVzcGVjdGl2ZWx5LgogICAgICAgICBpZiAoKHVzZURvd25zdHJlYW0gJiYgaXNTdGFydE9mUGFy
YWdyYXBoKHZwKSkgfHwgKCF1c2VEb3duc3RyZWFtICYmIGlzRW5kT2ZQYXJhZ3JhcGgodnApKSkK
QEAgLTE1ODksMjIgKzE1ODksMjIgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25z
dCBWaXNpYgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZldvcmQodnAs
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
Ym91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZShwcmV2aW91c1NlbnRlbmNl
UG9zaXRpb24odnApKSA6IHN0YXJ0T2ZTZW50ZW5jZShuZXh0U2VudGVuY2VQb3NpdGlvbih2cCkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEFmZmluaXR5IGhh
cyB0byBiZSBzZXQgdG8gZ2V0IHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSBsaW5lLgogICAgICAgICBi
b3VuZGFyeSA9IHZwOwogICAgICAgICBib3VuZGFyeS5zZXRBZmZpbml0eSh1c2VEb3duc3RyZWFt
ID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNKTsKICAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZMaW5lKGJvdW5kYXJ5KSA6IHN0YXJ0T2ZMaW5lKGJv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRP
ZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBEb2N1bWVudEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5Ogog
ICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0
YXJ0T2ZEb2N1bWVudCh2cCk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNjE4LDcgKzE2MTgsNyBA
QCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAKIGJvb2wgd2l0aGlu
VGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkg
PT0gRG9jdW1lbnRHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ym9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CkBA
IC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25z
dCBWCiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeTsKICAgICAKICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0
IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9w
cmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBM
ZWZ0V29yZElmT25Cb3VuZGFyeSkpOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQo
dnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9u
Qm91bmRhcnkpKTsKQEAgLTE2MzgsMTIgKzE2MzgsMTIgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9m
R3JhbnVsYXJpdHkoY29uc3QgVgogCiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFy
aXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOwogICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CiAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7CiAKQEAgLTE2NTUsNyArMTY1NSw3IEBA
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQ
YXJhZ3JhcGgodnApOwogICAgICAgICBicmVhazsKQEAgLTE2ODUsNyArMTY4NSw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJvdW4KIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dFdvcmRCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgYm9vbCB1c2VEb3duc3RyZWFt
ID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7Ci0gICAgYm9vbCB3aXRoaW5Vbml0
T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgV29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAgICAgCiAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKQEAgLTE3NTksNyArMTc1OSw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9
IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwotICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3Jh
bnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAK
ICAgICBpZiAod2l0aGluVW5pdE9mR3JhbnVsYXJpdHkpCkBAIC0xODAxLDkgKzE4MDEsOSBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhCb3VuCiB7CiAgICAgYXV0byB1c2VE
b3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAgICAgYXV0byBs
aW5lRGlyZWN0aW9uID0gcG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rp
b25OYXZpZ2F0aW9uKCk7Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbikpCiAgICAgICAgIHJldHVybiB1c2VEb3duc3RyZWFtID8gc3RhcnRPZlBh
cmFncmFwaChuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVEaXJlY3Rpb24pKSA6
IGVuZE9mUGFyYWdyYXBoKHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVE
aXJlY3Rpb24pKTsKLSAgICBBU1NFUlQod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgQVNTRVJUKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CiAgICAgcmV0dXJuIHVzZURvd25zdHJlYW0gPyBl
bmRPZlBhcmFncmFwaChwb3NpdGlvbikgOiBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKTsKIH0K
IApAQCAtMTgxNSwxNyArMTgxNSwxNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHREb2N1
bWVudEJvdW5kCiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRDaGFy
YWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24sIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dFdvcmRCb3VuZGFyeUlu
RGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
cmV0dXJuIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbih2
cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5l
eHRQYXJhZ3JhcGhCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHREb2N1bWVudEJvdW5kYXJ5SW5EaXJlY3Rp
b24odnAsIGRpcmVjdGlvbik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xODQ0LDUyICsxODQ0LDUyIEBAIFJlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGEKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oZGlyZWN0aW9uKTsKIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHZw
OwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgotICAgICAgICAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKLSAgICAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZX
b3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHZwOworICAgICAgICBuZXh0Qm91
bmRhcnkgPSBwcmV2Qm91bmRhcnkubmV4dCgpOworICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mU2VudGVuY2UodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5j
ZSh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKLSAgICAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7Ci0KLSAgICAgICAgICAgIGlmIChwcmV2
Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5l
eHRCb3VuZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
blNhbWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKLSAgICAgICAgICAgICAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gdnAubmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAgICAgICBp
ZiAodXNlRG93bnN0cmVhbSkgeworICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldv
cmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0
V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZQYXJhZ3JhcGgodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJh
Z3JhcGgodnApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkRvY3VtZW50KHZw
KTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1lbnQodnApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2Uo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKKworICAgICAgICBpZiAocHJldkJvdW5k
YXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExp
bmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNl
dEFmZmluaXR5KFVQU1RSRUFNKTsKKyAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gdnAu
bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJhZ3JhcGgo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVu
dEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mRG9jdW1lbnQodnAp
OworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50KHZwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKHByZXZCb3VuZGFyeS5pc051bGwo
KSB8fCBuZXh0Qm91bmRhcnkuaXNOdWxsKCkpCkBAIC0xOTIxLDE0ICsxOTIxLDE0IEBAIHZvaWQg
Y2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2kKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IHBvc2l0aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRD
aGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBp
ZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQ
b3NpdGlvbjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENo
YXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
UG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwog
ICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwotICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gbmV4
dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwgRGlyZWN0aW9u
QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHByZXZpb3VzUG9zaXRp
b24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKICAgICB9CkBAIC0xOTUyLDEx
ICsxOTUyLDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQpOwogCiAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBhdCB0aGUg
c3RhcnQgb2YgYSB3b3JkLCB0cnkgZm9yd2FyZC4KLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCkBAIC0xOTY0LDExICsx
OTY0LDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKIAogICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBkbyB7Ci0g
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7
Ci0gICAgfSB3aGlsZSAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
QmFja3dhcmQpKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CisgICAgfSB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShj
dXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAKICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTnVs
bCgpKQotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51
bGwoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHBv
c2l0aW9uKTsKQEAgLTE5ODMsMjMgKzE5ODMsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RX
b3JkQm91bmRhcnlGb3JQbwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAKICAgICAvLyBt
b3ZlIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB3b3JkCi0gICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkg
ewogICAgICAgICAvLyBEb24ndCBjcm9zcyBsaW5lIGJvdW5kYXJpZXMuCiAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uOwotICAgIH0gZWxzZSBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgfSBl
bHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAg
ICAgICAgIC8vIFRoZSBwb3NpdGlvbiBsaWVzIHdpdGhpbiBhIHdvcmQuCi0gICAgICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBSZWZQdHI8
UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlv
biwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCk7CiAKICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkg
PiAxKQogICAgICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAg
IH0gZWxzZSBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKSB7CisgICAgfSBlbHNlIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKSB7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBp
cyBhdCB0aGUgZW5kIG9mIGEgd29yZC4KICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gYSB3b3JkLgog
ICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBib3VuZGFyeS4KLSAgICAgICAgcmVzdWx0ID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBzdWNoIGJvdW5kYXJ5IHdlIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCiAg
ICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBAIC0yMDEzLDE1ICsyMDEzLDE1IEBAIFJlZlB0
cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0kKICAgICBQb3NpdGlvbiBzdGFydCA9
IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gcG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFj
dGVyc1RvRXhwYW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25C
YWNrd2FyZCkKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkKQogICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDaGFyYWN0ZXIpOwogICAg
IH0KICAgICAKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkICYmICFhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNr
d2FyZCkpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJk
ICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICBzdGFy
dCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0KS5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlmIChkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uRm9yd2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kLCBX
b3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChkaXJlY3Rpb24gPT0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
bmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQpKQogICAgICAgICBlbmQgPSBlbmRPZldvcmQoZW5kKS5kZWVwRXF1aXZhbGVudCgp
OwogCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFydCwgZW5kKTsKQEAgLTIwNDEsMTIgKzIwNDEs
MTIgQEAgUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpbwogCiBzdGQ6OnBh
aXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uV2l0aG91dENyb3NzaW5nTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogewotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpKQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29y
ZEJvdW5kYXJ5OjpObyB9OwogCi0gICAgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgIGlmICh3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgIGF1
dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICBpZiAoYXV0byB3b3JkUmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0g
ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAg
ICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAg
ICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgYWRqdXN0ZWRQ
b3NpdGlvbikgPiAxKQogICAgICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSB3b3JkUmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CkBAIC0yMDU0LDEwICsyMDU0LDEwIEBAIHN0ZDo6cGFpcjxWaXNp
YmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3UKICAgICAgICAgcmV0dXJuIHsgYWRqdXN0ZWRQb3Np
dGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpZZXMgfTsKICAgICB9CiAKLSAgICBpZiAoYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpKQorICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQp
KQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpObyB9Owog
Ci0gICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIHJldHVybiB7IG5leHRXb3JkQm91bmRhcnkuaXNO
b3ROdWxsKCkgPyBuZXh0V29yZEJvdW5kYXJ5IDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRp
b24pLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVj
dGlvbjo6ZGUKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgICAgICBjb250ZXh0UmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgICAgIGNvbnRleHRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCk7CiAgICAgfQogCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZp
c2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGQ6OnR1cGxlPFJl
ZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIGhpdEluZGV4ID0gY2hhcmFjdGVy
Q291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoU3RhcnQpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocG9zaXRpb24pIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcyB7IHBvc2l0aW9uIH07Ci0gICAgICAg
IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVz
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogICAgICAgICBwb3NpdGlvbiA9IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuc3Rh
cnQoKTsKIAogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBj
aGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIHJldHVybiBy
YW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKLSAgICBzZWxlY3Rpb25B
Y2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFy
aXR5KTsKKyAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIHBvc2l0aW9u
ID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgpOwogCiAgICAgLy8gQXMg
Y29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTIsMTQgKzY1MiwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzCiAgICAgICAgIGJvb2wgZm9yY2luZ1BlbmRp
bmdQb2xpY3kgPSBmcmFtZS0+c2V0dGluZ3MoKS5pc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCk7
CiAKICAgICAgICAgaWYgKGZvcmNpbmdQZW5kaW5nUG9saWN5IHx8IChwYWdlICYmICF0b3BEb2N1
bWVudC51cmwoKS5pc0xvY2FsRmlsZSgpKSkgewotICAgICAgICAgICAgV2ViR0xMb2FkUG9saWN5
IHBvbGljeSA9IGZvcmNpbmdQZW5kaW5nUG9saWN5ID8gV2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS53ZWJHTFBvbGljeUZvclVSTCh0b3BE
b2N1bWVudC51cmwoKSk7CisgICAgICAgICAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5ID0gZm9y
Y2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9u
IDogcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkud2ViR0xQb2xpY3lGb3JVUkwo
dG9wRG9jdW1lbnQudXJsKCkpOwogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMQmxv
Y2tDcmVhdGlvbikgeworICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQmxvY2tDcmVhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRoZSBw
b2xpY3kgZm9yIHRoaXMgVVJMICglcykgaXMgdG8gYmxvY2sgV2ViR0wuIiwgdG9wRG9jdW1lbnQu
dXJsKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMUGVu
ZGluZ0NyZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMTG9hZFBvbGlj
eTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJX
ZWJHTCBwb2xpY3kgaXMgcGVuZGluZy4gTWF5IG5lZWQgdG8gYmUgcmVzb2x2ZWQgbGF0ZXIuIik7
CiAgICAgICAgICAgICAgICAgaXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbiA9IHRydWU7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHN0cnVjdCBTdHJp
bmdXaXRoRGlyZWN0aW9uOwogCiB0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZCAoUG9saWN5QWN0
aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIpPiBGcmFtZVBvbGljeUZ1bmN0aW9uOwogCi1jbGFz
cyBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRlckNsaWVudCB7CitjbGFzcyBGcmFtZUxvYWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgLy8gQW4g
aW5saW5lIGZ1bmN0aW9uIGNhbm5vdCBiZSB0aGUgZmlyc3Qgbm9uLWFic3RyYWN0IHZpcnR1YWwg
ZnVuY3Rpb24gZGVjbGFyZWQKICAgICAvLyBpbiB0aGUgY2xhc3MgYXMgaXQgcmVzdWx0cyBpbiB0
aGUgdnRhYmxlIGJlaW5nIGdlbmVyYXRlZCBhcyBhIHdlYWsgc3ltYm9sLgogICAgIC8vIFRoaXMg
aHVydHMgcGVyZm9ybWFuY2UgKGluIE1hYyBPUyBYIGF0IGxlYXN0LCB3aGVuIGxvYWRpbmcgZnJh
bWV3b3JrcyksIHNvIHdlCiAgICAgLy8gZG9uJ3Qgd2FudCB0byBkbyBpdCBpbiBXZWJLaXQuCi0g
ICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIH5GcmFtZUxv
YWRlckNsaWVudCgpID0gZGVmYXVsdDsKIApAQCAtMzM5LDggKzMzOSw4IEBAIHB1YmxpYzoKICAg
ICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wgY2FudmFzIGluc2lkZSB0aGlz
IGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8gbm90aWZpY2F0aW9uIHdpdGgg
dGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2RlIChzZWUgRXh0
ZW5zaW9uc0dMLmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlV2ViR0xDb250ZXh0KGludCkg
eyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3Qg
VVJMJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVhbCBX
ZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0
IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9s
aWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9h
ZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBXZWJHTExvYWRQb2xp
Y3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdl
YkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBjb21wbGV0ZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjYxNjk0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc0LDcgKzE3NCw3IEBAIGVudW0gU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0
VVIKICAgICBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTAogfTsKIAotZW51bSBX
ZWJHTExvYWRQb2xpY3kgeworZW51bSBjbGFzcyBXZWJHTExvYWRQb2xpY3kgOiB1aW50OF90IHsK
ICAgICBXZWJHTEJsb2NrQ3JlYXRpb24sCiAgICAgV2ViR0xBbGxvd0NyZWF0aW9uLAogICAgIFdl
YkdMUGVuZGluZ0NyZWF0aW9uCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCBPcHRpb25hbDxTeXN0ZW1Q
cmV2aWV3SW5mbz4gU3lzdGVtUHJldmllCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCplbGVtZW50
KSwgV1RGTW92ZSgqcHJldmlld1JlY3QpLCBXVEZNb3ZlKCppc1ByZXZpZXcpIH0gfTsKIH0KIAot
ZW51bSBjbGFzcyBMb2FkQ29tcGxldGlvblR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgTG9h
ZENvbXBsZXRpb25UeXBlIDogYm9vbCB7CiAgICAgRmluaXNoLAogICAgIENhbmNlbAogfTsKIAot
ZW51bSBjbGFzcyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IHVpbnQ4X3QgeworZW51bSBjbGFz
cyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IGJvb2wgewogICAgIFllcywKICAgICBObywKIH07
CkBAIC0yNzEsMTEgKzI3MSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OlNoCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKLSAgICAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQsCi0gICAgICAg
IFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMsCi0gICAgICAgIFdlYkNvcmU6
OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpObworICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3ksCisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0
aW9uLAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRpbmdDcmVhdGlv
bgogICAgID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgs
NyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAg
ICBpZiAoZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dl
c3Rpb25zV2l0aG91dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVj
dGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsKICAgICAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9u
IHdvcmRTZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgd29yZFNl
bGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAgICAg
ICAgICAgICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxlbmd0
aCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ2LDM1ICsyNDYsMzUgQEAgdm9pZCBET01TZWxlY3Rpb246Om1vZGlmeShjb25z
dCBTdHJpbmcmIAogCiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIp
KQotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAgICAg
ICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rp
b24gPSBEaXJlY3Rpb25MZWZ0OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGly
ZWN0aW9uU3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uUmln
aHQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5n
LCAiY2hhcmFjdGVyIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJp
dHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFu
dWxhcml0eVN0cmluZywgIndvcmQiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVs
YXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVs
YXJpdHlTdHJpbmcsICJzZW50ZW5jZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNl
R3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IExp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaCIpKQotICAgICAgICBncmFudWxhcml0eSA9
IFBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJsaW5lYm91bmRhcnkiKSkKLSAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBMaW5lQm91bmRhcnk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5Iikp
Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gU2VudGVuY2VCb3VuZGFyeTsKKyAgICAgICAgZ3JhbnVs
YXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeTsKKyAgICBlbHNlIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgIlRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VCb3VuZGFyeSIpKQorICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgInBhcmFncmFwaGJvdW5kYXJ5IikpCi0g
ICAgICAgIGdyYW51bGFyaXR5ID0gUGFyYWdyYXBoQm91bmRhcnk7CisgICAgICAgIGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywgImRvY3VtZW50
Ym91bmRhcnkiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBEb2N1bWVudEJvdW5kYXJ5OworICAg
ICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeTsKICAg
ICBlbHNlCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTQsNyArNjE0LDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAgICAgICAgICAgLy8gTlNUZXh0
VmlldyBiZWhhdmlvciBpcyB0byBhbHdheXMgc21hcnQgZGVsZXRlIG9uIG1vdmluZyBhIHNlbGVj
dGlvbiwKICAgICAgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0IGluc2VydCBpZiB0aGUgc2Vs
ZWN0aW9uIGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHkuCiAgICAgICAgICAgICBib29s
IHNtYXJ0RGVsZXRlID0gZWRpdG9yLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwotICAgICAg
ICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRlICYmIGlubmVyRnJhbWUtPnNlbGVj
dGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNt
YXJ0UmVwbGFjZSgpOworICAgICAgICAgICAgYm9vbCBzbWFydEluc2VydCA9IHNtYXJ0RGVsZXRl
ICYmIGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHkgJiYgZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCk7CiAgICAg
ICAgICAgICBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50LnJlbGVhc2VOb25O
dWxsKCksIGRyYWdDYXJldC5iYXNlKCksIHNtYXJ0SW5zZXJ0LCBzbWFydERlbGV0ZSktPmFwcGx5
KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFn
Q2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwgZHJhZ0NhcmV0LCBwb2ludCkpIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDcgKzU0
Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3UKICAgICBpZiAo
c2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0aWF0aW9uU3RhdGUg
PSBFeHRlbmRlZFNlbGVjdGlvbjsKICAgICBlbHNlIHsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICBtX3NlbGVjdGlvbkluaXRpYXRpb25T
dGF0ZSA9IFBsYWNlZENhcmV0OwogICAgIH0KIApAQCAtNTYwLDEzICs1NjAsMTMgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbQogICAgICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0Lmxv
Y2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAg
ICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7Ci0gICAgICAg
ICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkp
OworICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGFw
cGVuZFRyYWlsaW5nV2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2Ug
JiYgbmV3U2VsZWN0aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UoKTsKIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRv
UmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3Jk
R3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRj
aGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVj
dE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogCkBAIC02MDEsMTQgKzYwMSwxNCBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdENvbnRleHR1CiAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVz
dWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICAgICAgaWYgKHBvcy5pc05vdE51
bGwoKSkgewogICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zKTsKLSAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRV
c2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGFwcGVuZFRyYWlsaW5n
V2hpdGVzcGFjZSA9PSBTaG91bGRBcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgJiYgbmV3U2VsZWN0
aW9uLmlzUmFuZ2UoKSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5hcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UoKTsKICAgICAgICAgCi0gICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93
bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNw
ZWN0U2VsZWN0T25Nb3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFdvcmRHcmFu
dWxhcml0eSk7CisgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5n
U2VsZWN0U3RhcnQodGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25N
b3VzZURvd24oKnRhcmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5KTsKICAgICB9CiB9CiAgICAgCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICBpZiAocG9zLmlzTm90
TnVsbCgpICYmIHBvcy5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCktPmlzRGVzY2Vu
ZGFudE9mKCp1cmxFbGVtZW50KSkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZSh1cmxFbGVtZW50KTsKIAotICAg
ICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRh
cmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJn
ZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVT
ZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4
cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdT
ZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQog
CkBAIC02NjcsMTAgKzY2NywxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmIChw
b3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlv
bihwb3MpOwotICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShQYXJh
Z3JhcGhHcmFudWxhcml0eSk7CisgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51
bGFyaXR5KFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogICAgIH0KIAot
ICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0
YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3du
KCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRG93bkRpc3BhdGNoaW5nU2VsZWN0U3RhcnQo
dGFyZ2V0Tm9kZSwgZXhwYW5kU2VsZWN0aW9uVG9SZXNwZWN0U2VsZWN0T25Nb3VzZURvd24oKnRh
cmdldE5vZGUsIG5ld1NlbGVjdGlvbiksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVs
YXJpdHkpOwogfQogCiBzdGF0aWMgdWludDY0X3QgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9u
JiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAgLTcxMCw3ICs3MTAsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgUG9zaXRpb24gcG9zID0gdmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eTsKIAogICAgIGlmICghbV9mcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkQWxsb3dT
aW5nbGVDbGlja1RvQ2hhbmdlU2VsZWN0aW9uKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTczOCw3ICs3MzgsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmV3
U2VsZWN0aW9uLnNldEV4dGVudChwb3MpOwogCi0gICAgICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlv
bigpLmdyYW51bGFyaXR5KCkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgaWYg
KG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5KSB7CiAgICAgICAgICAgICBncmFudWxhcml0eSA9IG1fZnJhbWUu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKTsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSk7CiAg
ICAgICAgIH0KQEAgLTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVT
ZWxlY3Rpb25Gb3JNb3UKICAgICBuZXdTZWxlY3Rpb24uc2V0RXh0ZW50KHRhcmdldFBvc2l0aW9u
KTsKICNlbmRpZgogCi0gICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSAh
PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5ncmFu
dWxhcml0eSgpICE9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAg
ICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KG1fZnJhbWUuc2VsZWN0aW9u
KCkuZ3JhbnVsYXJpdHkoKSk7CiAKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bkJ5TW91c2VJZkRpZmZlcmVudChuZXdTZWxlY3Rpb24sIG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3Jh
bnVsYXJpdHkoKSwKQEAgLTM1MTYsMTUgKzM1MTYsMTUgQEAgc3RhdGljIHZvaWQgc2V0SW5pdGlh
bEtleWJvYXJkU2VsZWN0aW9uKAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb247
CiAKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6
Ci0gICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgaWYg
KGZvY3VzZWRFbGVtZW50KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBv
c2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShmb2N1c2VkRWxlbWVudCkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBlbmRPZkRvY3VtZW50KGRvY3VtZW50KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ6CisgICAg
Y2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoZm9jdXNlZEVsZW1l
bnQpCiAgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRp
b25BZnRlck5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAgICAgZWxzZQpAQCAtMzU0NSw4ICsz
NTQ1LDggQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgIGJv
b2wgaXNTZWxlY3Rpb24gPSAhc2VsZWN0aW9uLmlzTm9uZSgpOwogCiAgICAgRnJhbWVTZWxlY3Rp
b246OkVBbHRlcmF0aW9uIGFsdGVybmF0aW9uID0gZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgiU2hp
ZnQiKSA/IEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kIDogRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBEaXJl
Y3Rpb25Gb3J3YXJkOwotICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQ7CisgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIHN3aXRjaCAoZm9j
dXNEaXJlY3Rpb25Gb3JLZXkoZXZlbnQua2V5SWRlbnRpZmllcigpKSkgewogICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25Ob25lOgpAQCAtMzU1NiwyMCArMzU1NiwyMCBAQCBzdGF0aWMgdm9pZCBoYW5k
bGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblVwOgotICAgICAgICBkaXJl
Y3Rpb24gPSBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBpc0NvbW1h
bmRlZCA/IERvY3VtZW50Qm91bmRhcnkgOiBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVj
dGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CisgICAgICAgIGdyYW51bGFyaXR5
ID0gaXNDb21tYW5kZWQgPyBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBG
b2N1c0RpcmVjdGlvbkRvd246Ci0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvbkZvcndhcmQ7
Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDog
TGluZUdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5kZWQgPyBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50Qm91bmRhcnkgOiBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0
eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkxlZnQ6Ci0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvbkxlZnQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29t
bWFuZGVkKSA/IExpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFdvcmRHcmFudWxhcml0eSA6
IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkxlZnQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6Ci0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvblJpZ2h0OwotICAgICAgICBncmFudWxhcml0eSA9IChpc0Nv
bW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodDsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSAoaXNDb21tYW5kZWQpID8gVGV4
dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSA6IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyAr
NTc5LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc092ZXJUZXh0SW5zaWRlRm9ybQogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRy
PFJhbmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgUmVmUHRyPFJhbmdl
PiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQpOwogICAgIGlmICghd29yZFJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDIwLTA1LTE0ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0gc2VyaWFsaXph
dGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weToKKyAgICAgICAgKiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oOgorICAgICAg
ICAqIFNoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkdMTG9hZFBvbGljeSk6CisgICAg
ICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3kpOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdM
TG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgc2VsZWN0Rm9yV2ViVmlldzpdKToKKyAgICAgICAgKHRvVUlXS1Nl
bGVjdGlvbkZsYWdzKToKKyAgICAgICAgKHRvU2VsZWN0aW9uRmxhZ3MpOgorICAgICAgICAodG9X
S1RleHRHcmFudWxhcml0eSk6CisgICAgICAgICh0b1dLU2VsZWN0aW9uRGlyZWN0aW9uKToKKyAg
ICAgICAgKHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZSk6CisgICAgICAgIChzZWxlY3Rpb25D
aGFuZ2VkV2l0aFRvdWNoKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjaGFuZ2VTZWxlY3Rp
b25XaXRoR2VzdHVyZUF0OndpdGhHZXN0dXJlOndpdGhTdGF0ZTp3aXRoRmxhZ3M6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6d2l0aFNlbGVj
dGlvblRvdWNoOmJhc2VJc1N0YXJ0OndpdGhGbGFnczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBjaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206dG86d2l0aEdlc3R1cmU6d2l0aFN0
YXRlOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdFdvcmRGb3JSZXBsYWNlbWVu
dF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdp
dGhUd29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleHRlbmRTZWxl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0Zvckdy
YW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW06CisgICAgICAgICgtW1dLRE9NUmFuZ2Ug
cmFuZ2VCeUV4cGFuZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOmluRGlyZWN0aW9uOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xp
Y3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5
Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldFNlbGVjdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OnJhbmdlQXRXb3JkQm91bmRhcnlGb3JQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhU
b3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5QXRQ
b2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludEFuZEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVz
dERpY3RhdGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphcHBseUF1dG9j
b3JyZWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphdXRvY29ycmVj
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25J
bmZvcm1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Om1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGlu
Z1dvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3REb2N1bWVu
dEVkaXRpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKwog
MjAyMC0wNS0xNCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVkLCBtaWQgTWF5IDIwMjAgZWRpdGlvbgpJ
bmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAy
NjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC02MTUsNiArNjE1LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6
CiAgICAgICAgICdXZWJDb3JlOjpSZWNlbnRTZWFyY2gnOiBbJzxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5JzogWyc8V2Vi
Q29yZS9BdWRpb1Nlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAorICAg
ICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uJzogWyc8V2ViQ29yZS9WaXNpYmxlU2Vs
ZWN0aW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
cic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4nLCAnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nLCAnPFdlYkNvcmUv
U2VydmljZVdvcmtlckRhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJP
ckNsaWVudElkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPicsICc8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPiddLApAQCAtNjM5LDE3ICs2
NDAsMjIgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpVc2VkTGVnYWN5VExTJzogWyc8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6Vmlld3Bv
cnRBdHRyaWJ1dGVzJzogWyc8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPiddLAorICAgICAg
ICAnV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVz
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpXaWxsQ29udGludWVMb2FkaW5nJzogWyc8V2ViQ29y
ZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNo
YW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAotICAgICAgICAnV2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJyA6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIidd
LAorICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdv
cmxkU2hhcmVkLmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUn
OiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBb
JyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4
dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXll
ckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbic6IFsnIlBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb25XZWJL
aXQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGF5bWVudFNldHVwRmVhdHVyZXMnOiBbJyJBcHBs
ZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzV2ViS2l0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlJl
c3BlY3RTZWxlY3Rpb25BbmNob3InOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dl
YktpdDo6U2VsZWN0aW9uRmxhZ3MnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dl
YktpdDo6U2VsZWN0aW9uVG91Y2gnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6V2ViR2VzdHVyZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6V2ViS2V5Ym9hcmRFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OldlYk1vdXNlRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAkocmV2aXNpb24gMjYxNjk0KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCB7CiAKICAgICBPcHRpb25TZXQ8T3B0aW9ucz4gb3B0aW9uczsKIAotICAgIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBzdXJyb3VuZGluZ0dyYW51bGFyaXR5IHsgV2ViQ29yZTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHkgfTsKKyAgICBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgc3Vycm91bmRpbmdH
cmFudWxhcml0eSB7IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHkgfTsKICAgICBpbnQ2NF90IGdyYW51bGFyaXR5Q291bnQgeyAwIH07CiAKICAgICBXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9HZXN0dXJl
VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5
cGVzLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9HZXN0
dXJlVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDEzIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBHZXN0dXJlVHlwZXNfaAot
I2RlZmluZSBHZXN0dXJlVHlwZXNfaAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBHZXN0dXJlVHlw
ZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVUeXBlIDogdWludDhfdCB7CiAgICAgTG91cGUsCiAgICAg
T25lRmluZ2VyVGFwLAogICAgIFRhcEFuZEFIYWxmLApAQCAtNDUsNyArNDYsNyBAQCBlbnVtIGNs
YXNzIEdlc3R1cmVUeXBlIHsKICAgICBQaHJhc2VCb3VuZGFyeQogfTsKIAotZW51bSBjbGFzcyBT
ZWxlY3Rpb25Ub3VjaCB7CitlbnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIDogdWludDhfdCB7CiAg
ICAgU3RhcnRlZCwKICAgICBNb3ZlZCwKICAgICBFbmRlZCwKQEAgLTU0LDIzICs1NSwyMSBAQCBl
bnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIHsKICAgICBFbmRlZE5vdE1vdmluZwogfTsKIAotZW51
bSBjbGFzcyBHZXN0dXJlUmVjb2duaXplclN0YXRlIHsKK2VudW0gY2xhc3MgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSA6IHVpbnQ4X3QgewogICAgIFBvc3NpYmxlLAogICAgIEJlZ2FuLAogICAgIENo
YW5nZWQsCiAgICAgRW5kZWQsCiAgICAgQ2FuY2VsbGVkLAotICAgIEZhaWxlZCwKLSAgICBSZWNv
Z25pemVkID0gRW5kZWQKKyAgICBGYWlsZWQKIH07CiAKLWVudW0gY2xhc3MgU2hlZXRBY3Rpb24g
eworZW51bSBjbGFzcyBTaGVldEFjdGlvbiA6IGJvb2wgewogICAgIENvcHksCiAgICAgU2F2ZUlt
YWdlCiB9OwogCi1lbnVtIFNlbGVjdGlvbkZsYWdzIHsKLSAgICBOb25lID0gMCwKK2VudW0gU2Vs
ZWN0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAgICBXb3JkSXNOZWFyVGFwID0gMSA8PCAwLAogICAg
IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA9IDEgPDwgMSwKIH07CkBAIC04Miw0ICs4MSw1MSBAQCBl
bnVtIGNsYXNzIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IgOiBib29sCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gR2VzdHVyZVR5cGVzX2gKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R2VzdHVyZVR5cGU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlLAor
ICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpMb3VwZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0
dXJlVHlwZTo6T25lRmluZ2VyVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBB
bmRBSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6RG91YmxlVGFwLAorICAgICAg
ICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRIYWxmLAorICAgICAgICBXZWJLaXQ6Okdlc3R1
cmVUeXBlOjpEb3VibGVUYXBJblVuZWRpdGFibGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5
cGU6Ok9uZUZpbmdlclRhcEluVW5lZGl0YWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlw
ZTo6T25lRmluZ2VyVGFwU2VsZWN0c0FsbCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6
T25lRmluZ2VyRG91YmxlVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVGaW5n
ZXJUcmlwbGVUYXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclNpbmds
ZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VHdvRmluZ2VyUmFuZ2VkU2VsZWN0
R2VzdHVyZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwT25MaW5rV2l0aEdlc3R1
cmUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlBocmFzZUJvdW5kYXJ5CisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6U2Vs
ZWN0aW9uVG91Y2gsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQsCisg
ICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6Ok1vdmVkLAorICAgICAgICBXZWJLaXQ6OlNl
bGVjdGlvblRvdWNoOjpFbmRlZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5k
ZWRNb3ZpbmdGb3J3YXJkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE1v
dmluZ0JhY2t3YXJkLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZE5vdE1v
dmluZworICAgID47Cit9OworCisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlLAorICAgICAgICBXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLAorICAgICAgICBXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyU3RhdGU6OkJlZ2FuLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyU3RhdGU6OkNoYW5nZWQsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RW5kZWQsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2Fu
Y2VsbGVkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkZhaWxlZAor
ICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTczNiwxNiAr
NTczNiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjaWYg
RU5BQkxFKFdFQkdMKQogdm9pZCBXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYm
IHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewotICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5
KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoV2ViR0xMb2FkUG9saWN5IHBv
bGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIHJlcGx5KHN0YXRpY19jYXN0PHVpbnQzMl90Pihwb2xp
Y3kpKTsKLSAgICB9KTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgq
dGhpcywgdXJsLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpS
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBbcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11dGFibGUgewot
ICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0gICAgfSk7Cisg
ICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmws
IFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjE2OTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIzLDggKzIyMyw2IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRJbmRpY2F0b3I7
CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwogCi1lbnVtIFNlbGVjdGlvbkRpcmVjdGlvbiA6IHVp
bnQ4X3Q7Ci0KIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBMb2NrQmFja0Zv
cndhcmRMaXN0IDogYm9vbDsKQEAgLTIzMiw2ICsyMzAsNyBAQCBlbnVtIGNsYXNzIEhhc0luc2Vj
dXJlQ29udGVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIE1vdXNlRXZlbnRQb2xpY3kgOiB1aW50OF90
OwogZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFz
cyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBTZWxlY3Rpb25EaXJl
Y3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRTYW1wbGUgOiBib29sOwogZW51bSBj
bGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBXcml0
aW5nRGlyZWN0aW9uIDogdWludDhfdDsKQEAgLTI0NCw2ICsyNDMsNyBAQCBzdHJ1Y3QgQ29udGVu
dFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbjsK
IHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IERyYWdJdGVtOworc3RydWN0IEVs
ZW1lbnRDb250ZXh0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29z
ZXJTZXR0aW5nczsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOwpAQCAtMjc5LDEwICsy
NzksNiBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTR2xvYmFsCiB0eXBlZGVm
IEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXN0cnVjdCBFbGVtZW50Q29udGV4dDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OwogY2xhc3MgRHJhd2luZ0FyZWFQcm94
eTsKQEAgLTQwNSw4ICs0MDEsOCBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBGb250
SW5mbyYsCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi10eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
dWludDMyX3Q+IEdlc3R1cmVDYWxsYmFjazsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90PiBUb3VjaGVzQ2FsbGJhY2s7
Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1
cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+
PiBHZXN0dXJlQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+PiBU
b3VjaGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0c0NhbGxiYWNrOwogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiY+IEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKICNlbmRpZgpAQCAtNzU2LDkgKzc1Miw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAgICAgdm9pZCB3aWxsQ29tbWl0TGF5
ZXJUcmVlKFRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCB1aW50MzJfdCBn
ZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
KTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQsIFNlbGVjdGlvblRvdWNoLCBib29sIGJhc2VJc1N0YXJ0LCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxT
ZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2b2lkIHNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgRnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJl
UmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJik7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51
bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwogICAgIHZvaWQgbW92ZVNl
bGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMjA5NSw4ICsyMDkxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvbnRBdFNlbGVj
dGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91YmxlLCBib29sLCBDYWxsYmFja0lEKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBnZXN0dXJlQ2FsbGJh
Y2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB0
b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCB0b3VjaGVz
LCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2so
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB0
b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwg
T3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZWxlY3Rp
b25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxlY3RlZFRleHQsIGNvbnN0IFN0cmlu
ZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRleHQsIENhbGxiYWNrSUQpOwogICAg
IHZvaWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmLCBib29sIGlzQ2hhckV2
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHNob3dQbGF5
YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
bGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tl
ZCh1aW50MzJfdCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgU3RyaW5nIG1pbWVUeXBlLCBT
dHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBTdHJpbmcgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJp
bmcsIFN0cmluZyBmcmFtZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdl
YkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KSBTeW5jaHJv
bm91cwotICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3Qg
bG9hZFBvbGljeSkgU3luY2hyb25vdXMKKyAgICBXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5KSBTeW5j
aHJvbm91cworICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAoZW51bTp1
aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5KSBTeW5jaHJvbm91cwog
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMo
c3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJl
Y2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRsZWQpCkBAIC0xNzcsOCArMTc3LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogICAgIEZvbnRBdHRyaWJ1dGVz
Q2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
R2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBnZXN0dXJl
VHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgR2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgZW51bTp1
aW50OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlv
blNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8V2Vi
S2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJpbmcgc2VsZWN0ZWRUZXh0LCBTdHJp
bmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0IFdlYktpdDo6RWRpdG9yU3RhdGUg
c3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAg
ICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3RydWN0IFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
NiwyNSArNDk2LDI1IEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJHTEwK
IHsKICAgICBzd2l0Y2ggKHdlYkdMTG9hZFBvbGljeSkgewogICAgIGNhc2Uga1dLV2ViR0xMb2Fk
UG9saWN5TG9hZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb247CiAgICAgY2FzZSBrV0tXZWJHTExvYWRQb2xpY3lCbG9ja2VkOgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb247CiAgICAgY2FzZSBrV0tX
ZWJHTExvYWRQb2xpY3lQZW5kaW5nOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xQZW5k
aW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6Oldl
YkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogaW5saW5l
IFdLV2ViR0xMb2FkUG9saWN5IHRvQVBJKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExv
YWRQb2xpY3kpCiB7CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKLSAgICBjYXNlIFdl
YkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjoKKyAgICBjYXNlIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOgogICAgICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9s
aWN5TG9hZE5vcm1hbGx5OwotICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOgor
ICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb246CiAg
ICAgICAgIHJldHVybiBrV0tXZWJHTExvYWRQb2xpY3lCbG9ja2VkOwotICAgIGNhc2UgV2ViQ29y
ZTo6V2ViR0xQZW5kaW5nQ3JlYXRpb246CisgICAgY2FzZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOgogICAgICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9s
aWN5UGVuZGluZzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDA5LDIxICs0MDksMjEgQEAgaW5saW5lIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dl
YkNvcgogewogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xp
Y3lBbGxvd0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0
aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb247CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uOgotICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb247CiAgICAgY2FzZSBf
V0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nQ3JlYXRpb246Ci0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpXZWJHTFBlbmRpbmdDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb247CiAgICAgfQogICAgIAogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwog
fQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9s
aWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTExv
YWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdM
TG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBj
b25zdAogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVhdGlvbik7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjYxNjk0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzUxNSw3ICszNTE1LDcgQEAgLSAodm9pZClzZWxlY3RGb3JX
ZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBzZWxl
Y3RXb3JkXTsKICAgICAvLyBXZSBjYW5ub3QgdXNlIHNlbGVjdFdvcmQgY29tbWFuZCwgYmVjYXVz
ZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2VsZWN0IHRoZSB3b3JkIGV2ZW4gd2hlbiBpdCBpcyB0
aGUgbGFzdCBpbiB0aGUgcGFyYWdyYXBoLgotICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2Vi
Q29yZTo6V29yZEdyYW51bGFyaXR5KTsKKyAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKIH0KIAogLSAodm9pZClzZWxl
Y3RBbGxGb3JXZWJWaWV3OihpZClzZW5kZXIKQEAgLTM4MjMsMzIgKzM4MjMsNDIgQEAgc3RhdGlj
IGlubGluZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgdAogICAgIH0KIH0KIAotc3RhdGljIGlu
bGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0aW9uRmxhZ3MoV2ViS2l0OjpTZWxl
Y3Rpb25GbGFncyBmbGFncykKK3N0YXRpYyBpbmxpbmUgVUlXS1NlbGVjdGlvbkZsYWdzIHRvVUlX
S1NlbGVjdGlvbkZsYWdzKE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykK
IHsKICAgICBOU0ludGVnZXIgdWlGbGFncyA9IFVJV0tOb25lOwotICAgIGlmIChmbGFncyAmIFdl
YktpdDo6V29yZElzTmVhclRhcCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViS2l0OjpXb3Jk
SXNOZWFyVGFwKSkKICAgICAgICAgdWlGbGFncyB8PSBVSVdLV29yZElzTmVhclRhcDsKLSAgICBp
ZiAoZmxhZ3MgJiBXZWJLaXQ6OlBocmFzZUJvdW5kYXJ5Q2hhbmdlZCkKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpKQogICAgICAgICB1aUZsYWdz
IHw9IFVJV0tQaHJhc2VCb3VuZGFyeUNoYW5nZWQ7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VUlXS1NlbGVjdGlvbkZsYWdzPih1aUZsYWdzKTsKIH0KIAorc3RhdGljIGlubGluZSBPcHRpb25T
ZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gdG9TZWxlY3Rpb25GbGFncyhVSVdLU2VsZWN0aW9u
RmxhZ3MgdWlGbGFncykKK3sKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4g
ZmxhZ3M7CisgICAgaWYgKHVpRmxhZ3MgJiBVSVdLV29yZElzTmVhclRhcCkKKyAgICAgICAgZmxh
Z3MuYWRkKFdlYktpdDo6V29yZElzTmVhclRhcCk7CisgICAgaWYgKHVpRmxhZ3MgJiBVSVdLUGhy
YXNlQm91bmRhcnlDaGFuZ2VkKQorICAgICAgICBmbGFncy5hZGQoV2ViS2l0OjpQaHJhc2VCb3Vu
ZGFyeUNoYW5nZWQpOworICAgIHJldHVybiBmbGFnczsKK30KKwogc3RhdGljIGlubGluZSBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgdG9XS1RleHRHcmFudWxhcml0eShVSVRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKIHsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBV
SVRleHRHcmFudWxhcml0eUNoYXJhY3RlcjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5V29yZDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldvcmRHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlU
ZXh0R3JhbnVsYXJpdHlTZW50ZW5jZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNlbnRlbmNl
R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVBhcmFncmFwaDoK
LSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAg
ICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okxp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlEb2N1bWVudDoKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRvY3VtZW50R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgfQog
fQogCkBAIC0zODU3LDI5ICszODY3LDI5IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZTo6U2VsZWN0
aW9uRGlyZWN0aW8KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgIGNhc2UgVUlUZXh0TGF5
b3V0RGlyZWN0aW9uRG93bjoKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlvblJpZ2h0Ogot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIGNhc2UgVUlUZXh0TGF5b3V0
RGlyZWN0aW9uVXA6CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25MZWZ0OgotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uTGVmdDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBVSVRl
eHREaXJlY3Rpb24gaXMgbm90IGFuIGVudW0sIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gYWNjZXB0IHZh
bHVlcyBmcm9tIFVJVGV4dExheW91dERpcmVjdGlvbi4KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaXJlY3Rpb25SaWdodDsKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoV0tDb250ZW50VmlldyAqdmll
dywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwg
dWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJl
KFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2Vi
S2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0
YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdz
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgaWYgKGVycm9yICE9
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwotICAg
IFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0
YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2Vz
dHVyZTp0b1VJV0tHZXN0dXJlVHlwZSgoV2ViS2l0OjpHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSkg
d2l0aFN0YXRlOnRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRpY19jYXN0PFdlYktpdDo6
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSkgd2l0aEZsYWdzOih0b1VJV0tT
ZWxlY3Rpb25GbGFncygoV2ViS2l0OjpTZWxlY3Rpb25GbGFncylmbGFncykpXTsKKyAgICBbKFVJ
V0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0g
c2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6
dG9VSVdLR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpIHdpdGhTdGF0ZTp0b1VJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpIHdpdGhGbGFnczp0b1VJV0tTZWxlY3Rpb25GbGFncyhm
bGFncyldOwogfQogCi1zdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29u
dGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
dG91Y2gsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CitzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZp
ZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aCB0b3VjaCwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwotICAgIFsoVUlXS1Rl
eHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBzZWxl
Y3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNo
OnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNlbGVjdGlvblRvdWNoKXRvdWNoKSB3aXRo
RmxhZ3M6c3RhdGljX2Nhc3Q8VUlXS1NlbGVjdGlvbkZsYWdzPihmbGFncyldOworICAgIFsoVUlX
S1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBz
ZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRv
dWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNlbGVjdGlvblRvdWNoKXRvdWNoKSB3
aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpXTsKIH0KIAogLSAoQk9PTClfaGFz
Rm9jdXNlZEVsZW1lbnQKQEAgLTM4OTUsOCArMzkwNSw4IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0
aW9uV2l0aEdlc3R1cmVBdDooQ0cKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVB
dDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBl
IHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKXN0YXRlIHdpdGhGbGFnczooVUlX
S1NlbGVjdGlvbkZsYWdzKWZsYWdzCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9
IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQocG9p
bnQpLCBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3Nl
bGYsIHN0YXRlLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBpbm5lckZsYWdz
LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgc2VsZWN0aW9u
Q2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRl
LCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKKyAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1
cmUoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSwg
dG9HZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRlKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQs
IFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzdGF0ZSwgZmxhZ3NdKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlw
ZSwgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2Vs
ZiwgcG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHRvU2VsZWN0aW9uRmxhZ3MoZmxh
Z3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOwogICAgICAgICBpZiAoc3RhdGUgPT0gVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlRW5kZWQgfHwgc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
Q2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwog
ICAgIH0pOwpAQCAtMzkwNSw5ICszOTE1LDkgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRo
R2VzdHVyZUF0OihDRwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hBdDooQ0dQb2lu
dClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rpb25Ub3VjaCl0b3VjaCBiYXNl
SXNTdGFydDooQk9PTCliYXNlSXNTdGFydCB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rpb25GbGFncylm
bGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgX3BhZ2Ut
PnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHRvU2VsZWN0aW9uVG91Y2godG91Y2gpKSwgYmFzZUlzU3RhcnQs
IFtzZWxmLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0
b3VjaCwgdWludDMyX3QgaW5uZXJGbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVy
cm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goc2VsZiwgcG9pbnQsIHRv
dWNoLCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKLSAgICAgICAgaWYgKHRvdWNoICE9IFVJ
V0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQgJiYgdG91Y2ggIT0gVUlXS1NlbGVjdGlvblRvdWNoTW92
ZWQpCisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBv
aW50KHBvaW50KSwgdG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCksIGJhc2VJc1N0YXJ0LCBbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaCwgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50
LCB0b3VjaCwgdG9TZWxlY3Rpb25GbGFncyhmbGFncykgfCBpbm5lckZsYWdzLCBlcnJvcik7Cisg
ICAgICAgIGlmICh0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCkgIT0gVUlXS1NlbGVjdGlvblRv
dWNoU3RhcnRlZCAmJiB0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCkgIT0gVUlXS1NlbGVjdGlv
blRvdWNoTW92ZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CiAgICAgfSk7CiB9CkBAIC0zOTE1LDkgKzM5MjUsOSBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlv
bldpdGhUb3VjaEF0OihDR1BvCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaGVzRnJv
bTooQ0dQb2ludClmcm9tIHRvOihDR1BvaW50KXRvIHdpdGhHZXN0dXJlOihVSVdLR2VzdHVyZVR5
cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUpZ2VzdHVy
ZVN0YXRlCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFn
ZS0+c2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6
OkludFBvaW50KHRvKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVy
ZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShn
ZXN0dXJlU3RhdGUpKSwgW3NlbGZdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgIF9wYWdlLT5zZWxlY3RX
aXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQo
dG8pLCB0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSwgdG9HZXN0dXJlUmVjb2duaXplclN0YXRl
KGdlc3R1cmVTdGF0ZSksIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpXShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNl
dDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShzZWxmLCBw
b2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MsIGVycm9yKTsKLSAgICAgICAg
aWYgKGdlc3R1cmVTdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCB8fCBnZXN0
dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQorICAgICAgICBp
ZiAodG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSA9PSBVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVFbmRlZCB8fCB0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJl
U3RhdGUpID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKICAgICAgICAgICAg
IF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsKIH0KQEAgLTY1MjEsNyAr
NjUzMSw3IEBAIC0gKHZvaWQpX3NlbGVjdGlvbkNoYW5nZWQKIAogLSAodm9pZClzZWxlY3RXb3Jk
Rm9yUmVwbGFjZW1lbnQKIHsKLSAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6Oldv
cmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKICNpZiBFTkFCTEUoUExBVEZPUk1f
RFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw3ICsxNDQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFr
ZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAgIGlmICghY2FsbGJhY2spIHsKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0
CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShwb2ludCwgZ2Vz
dHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
dG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCBTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJh
Y2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNr
KSB7CkBAIC00MjgsMjEgKzQyOCwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJUcmVlQ29t
bWl0Q29tcGxlCiAgICAgcGFnZUNsaWVudCgpLmxheWVyVHJlZUNvbW1pdENvbXBsZXRlKCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVU
eXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBj
YWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6Oklu
dFBvaW50KCksIEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9z
c2libGUsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUiX3MpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCAodWlu
dDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwg
Z2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1
aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNl
bGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBTZWxlY3Rp
b25Ub3VjaCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFn
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29y
ZTo6SW50UG9pbnQoKSwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgU2VsZWN0aW9uVG91Y2g6
OlN0YXJ0ZWQsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0VGV4dFdpdGhHcmFudWxhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFy
aXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhH
cmFudWxhcml0eUF0UG9pbnQiX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KHBv
aW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQiX3MpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtNTI0LDcgKzUyNCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24ocG9pbnQsIHN0YXRpY19j
YXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PHVpbnQzMl90PihkaXJlY3Rp
b24pLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHBvaW50LCBncmFudWxhcml0eSwgZGlyZWN0aW9uLCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oKTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bW92ZVNlbGVjdGlvbkF0Qm91bmRhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbikpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC02MzAsMTAgKzYzMCwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2du
aXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2Vs
ZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVu
a25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIEdl
c3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2libGUsIHsgfSwg
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRCZWNv
bWVBCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0
eSkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHRlbmRTZWxlY3Rpb24oZ3JhbnVsYXJpdHkpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZWxlY3RXb3JkQmFja3dhcmQoKQpAQCAtNzcwLDcgKzc3MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWwKICAgICB9CiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCJfcykpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxh
cml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGdyYW51bGFyaXR5
KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25P
ZmZzZXQoZ3JhbnVsYXJpdHksIG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRl
eHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lk
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0J
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQs
NyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAKIC0gKFdLRE9NUmFuZ2UgKilyYW5nZUJ5RXhw
YW5kaW5nVG9Xb3JkQm91bmRhcnlCeUNoYXJhY3RlcnM6KE5TVUludGVnZXIpY2hhcmFjdGVycyBp
bkRpcmVjdGlvbjooV0tET01SYW5nZURpcmVjdGlvbilkaXJlY3Rpb24KIHsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3
YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDogX2ltcGwtPnN0YXJ0UG9zaXRpb24oKSwgY2hh
cmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gV2ViQ29y
ZTo6RGlyZWN0aW9uRm9yd2FyZCA6IFdlYkNvcmU6OkRpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rp
b25Gb3J3YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDogX2ltcGwtPnN0YXJ0UG9zaXRpb24o
KSwgY2hhcmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8g
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDogV2ViQ29yZTo6U2VsZWN0aW9u
RGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAKICAgICByZXR1cm4gW1tbV0tET01SYW5nZSBhbGxvY10g
X2luaXRXaXRoSW1wbDpuZXdSYW5nZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgV2ViRnJhbWVMb2FkZXJDCiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybiB3ZWJQYWdlLT53ZWJHTFBvbGljeUZvclVSTChtX2ZyYW1l
LnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1
cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMTYyNyw3ICsxNjI3LDcgQEAgV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQwogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+cmVzb2x2ZVdlYkdMUG9s
aWN5Rm9yVVJMKG1fZnJhbWUucHRyKCksIHVybCk7CiAKLSAgICByZXR1cm4gV2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDksMTIgKzEwNDksMTIg
QEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKFdlYgogI2lmIEVOQUJMRShX
RUJHTCkgJiYgIVBMQVRGT1JNKE1BQykKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdl
Ojp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYpCiB7Ci0gICAgcmV0dXJu
IFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFs
bG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewotICAgIHJldHVy
biBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDEwICsx
OTUsMTIgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogZW51bSBTeW50aGV0aWNDbGlja1R5cGUg
OiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90Owog
ZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90OworZW51bSBjbGFzcyBTZWxl
Y3Rpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
OiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJvb2w7CiBlbnVt
IGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKK2Vu
dW0gY2xhc3MgVGV4dEdyYW51bGFyaXR5IDogdWludDhfdDsKIGVudW0gY2xhc3MgV3JpdGluZ0Rp
cmVjdGlvbiA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwpAQCAtNjg1LDE5
ICs2ODcsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBibHVyRm9jdXNlZEVsZW1lbnQoKTsKICAg
ICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKENhbGxiYWNrSUQpOwotICAg
IHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0
ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKLSAg
ICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMy
X3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIGV4dGVuZFNlbGVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSk7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOworICAgIHZv
aWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBT
ZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBz
ZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBleHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2FyZCgpOwogICAgIHZvaWQgbW92
ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwotICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rp
b24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBSZXNwZWN0U2VsZWN0aW9uQW5jaG9yLCBDYWxs
YmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCB1
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKIAogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlv
bkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0
IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTcyMiw3ICs3MjQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0KENhbGxiYWNrSUQpOwog
ICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAgICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsKLSAgICB2b2lkIGdldFJlY3RzRm9y
R3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90LCBpbnQzMl90LCBDYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0
KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCwgY29uc3QgU3RyaW5n
JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHko
Ym9vbCk7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKTsKQEAgLTEzNjUsNyArMTM2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUmIG5vZGVSZXNwb25kaW5nVG9DbGlj
aywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRpb24sIE9wdGlvblNldDxXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRoZXRpY0NsaWNrVHlwZSwgV2ViQ29y
ZTo6UG9pbnRlcklEID0gV2ViQ29yZTo6bW91c2VQb2ludGVySUQpOwogICAgIHZvaWQgc2VuZFRh
cEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6
Ok5vZGUqKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uSW5G
b2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6
RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6RnJhbWUmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICB2b2lkIHNldEZvY3VzZWRGcmFtZUJl
Zm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAg
ICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRzRm9yU2VsZWN0aW9uR2VzdHVyZShT
ZWxlY3Rpb25Ub3VjaCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02MywxOSArNjMsMTkgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgSW5zcGVjdG9yTm9kZVNlYXJj
aE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEluc3BlY3Rv
ck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAg
ICBCbHVyRm9jdXNlZEVsZW1lbnQoKQotICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUs
IHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBVcGRhdGVTZWxlY3Rpb25X
aXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9v
bCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgU2VsZWN0
V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQg
dG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSkKKyAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
ZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhf
dCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBTZWxlY3RXaXRoVHdv
VG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJDb3JlOjpJbnRQb2ludCB0bywgZW51
bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhfdCBX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyAgICBFeHRlbmRTZWxlY3Rpb24oZW51bTp1aW50OF90IFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICAgICBTZWxlY3RXb3JkQmFja3dhcmQo
KQogICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCkgLT4gKCkgQXN5bmMK
LSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCkgLT4gKCkgQXN5bmMKLSAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGly
ZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+
ICgpIEFzeW5jCi0gICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQz
Ml90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24pIC0+ICgpIEFzeW5jCisgICAgU2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKKyAgICBTZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBBc3luYworICAgIE1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRp
cmVjdGlvbikgLT4gKCkgQXN5bmMKICAgICBTZWxlY3RQb3NpdGlvbkF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4g
KCkgQXN5bmMKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlv
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIGVudW06Ym9vbCBXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNo
b3IgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFJlcXVlc3REaWN0YXRpb25Db250ZXh0KFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VEaWN0YXRlZFRleHQoU3RyaW5nIG9sZFRleHQs
IFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3RlZFRleHQoU3RyaW5nIG9sZFRleHQs
IFN0cmluZyBuZXdUZXh0KQpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4gbW9k
aWZpZXJzLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgSGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIFNl
dEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNjYWxhYmxlKQotICAgIEdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQzMl90IGdyYW51bGFyaXR5LCBp
bnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2V0UmVj
dHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZW51bTp1aW50OF90IFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFJlY3RzQXRTZWxlY3Rpb25PZmZzZXRXaXRoVGV4
dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eShib29sIHNob3VsZFN0b3Jl
KQogICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb3Np
dGlvbkluV2luZG93KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZy
YQogICAgICAgICBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uID0gc3RhcnROb2RlSXNJbnNp
ZGVGaXhlZFBvc2l0aW9uOwogICAgICAgICBwb3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdEVuZCA9
IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUg
Zm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlv
bi4KLSAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0Nv
bnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQo
KSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcG9zdExheW91
dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIHBv
c3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dEZvckNvbnRleHQod29yZFJh
bmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7CiAgICAgICAgIGlmIChz
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIGNoYXJhY3RlcnNBcm91
bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExheW91dERhdGEuY2hhcmFjdGVyQWZ0
ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiwgcG9z
dExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKQEAgLTMyMyw4ICszMjMs
OCBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgY29tcHV0ZUVkaXRhYmxlUm9vdEhhc0NvbnRlbnRBbmRQ
bGFpblRleHQoc2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YSk7Ci0gICAgICAgIHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkRpcmVjdGlvbkJhY2t3YXJkKTsK
LSAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uRW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5
ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVFbmQoKSwgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpEaXJl
Y3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uU3RhcnRJc0F0
UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOworICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxlY3Rp
b25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxl
Y3Rpb24udmlzaWJsZUVuZCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIH0KIH0KIApAQCAtNTQ5LDggKzU0
OSw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmEKICAgICBjb25z
dCBpbnQgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoID0gMzUwOwogICAgIAogICAgIFN0
cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250ZXh0KGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpOwotICAgIFN0cmluZyB0ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rp
b25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBz
ZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkJhY2t3YXJkKS5nZXQoKSk7
Ci0gICAgU3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRl
ZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0
aW9uRm9yd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9y
RGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFy
eShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCBzZWxlY3Rpb25FeHRlbmRl
ZENvbnRleHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpLmdldCgpKTsKKyAg
ICBTdHJpbmcgdGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlD
aGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpLmdldCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKHNlbGVjdGVkVGV4dCwgdGV4dEJlZm9yZSwg
dGV4dEFmdGVyLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0xMzQzLDcgKzEzNDMsNyBAQCBzdGF0aWMg
SW50UG9pbnQgY29uc3RyYWluUG9pbnQoY29uc3QgSW50CiAgICAgcmV0dXJuIGNvbnN0cmFpbmVk
UG9pbnQ7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNl
ZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBpZiAoc3RhdGljX2Nhc3Q8
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSA9PSBHZXN0dXJlUmVjb2duaXpl
clN0YXRlOjpCZWdhbikKICAgICAgICAgc2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4
dEF0TG9jYXRpb24ocG9pbnQpOwpAQCAtMTM1MiwxMSArMTM1MiwxMSBAQCB2b2lkIFdlYlBhZ2U6
OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
ID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJh
Y2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQs
IGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgU2VsZWN0aW9uRmxh
Z3MgZmxhZ3MgPSBOb25lOworICAgIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4gZmxhZ3M7CiAg
ICAgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB3a0dlc3R1cmVTdGF0ZSA9IHN0YXRpY19jYXN0PEdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSk7CiAgICAgc3dpdGNoIChzdGF0aWNf
Y2FzdDxHZXN0dXJlVHlwZT4oZ2VzdHVyZVR5cGUpKSB7CiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6
UGhyYXNlQm91bmRhcnk6CkBAIC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIGlmIChwb3NpdGlvbiA+IG1hcmtlZFJhbmdl
LT5lbmRQb3NpdGlvbigpKQogICAgICAgICAgICAgcG9zaXRpb24gPSBtYXJrZWRSYW5nZS0+ZW5k
UG9zaXRpb24oKTsKICAgICAgICAgaWYgKHdrR2VzdHVyZVN0YXRlICE9IEdlc3R1cmVSZWNvZ25p
emVyU3RhdGU6OkJlZ2FuKQotICAgICAgICAgICAgZmxhZ3MgPSBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSkgIT0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdl
LT5zdGFydFBvc2l0aW9uKCksIHBvc2l0aW9uKSA/IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA6IE5v
bmU7CisgICAgICAgICAgICBmbGFncyA9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRS
YW5nZS0+c3RhcnRQb3NpdGlvbigpLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKSAhPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKSwgcG9zaXRpb24pID8gUGhyYXNlQm91bmRhcnlDaGFuZ2VkIDogT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiB7IH07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZsYWdzID0gUGhyYXNl
Qm91bmRhcnlDaGFuZ2VkOwogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwOgotICAgICAgICBpZiAoYXRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkKSkgewogICAgICAgICAgICAgLy8gRG91YmxlLXRhcCBhdCBlbmQgb2YgbGluZSBvbmx5
IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUuCiAgICAgICAgICAgICAvLyBUaGlzIGhlbHBz
IHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGluZyBhdCBlbmRzIG9mIGxpbmVzLAogICAgICAg
ICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3VtZW50cy4KQEAgLTE0NTQsMTcgKzE0NTQsMTcg
QEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogCiAgICAgY2FzZSBH
ZXN0dXJlVHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwOgogICAgICAgICAvLyBTaW5nbGUgdGFwIHdp
dGggdHdvIGZpbmdlcnMgc2VsZWN0cyB0aGUgZW50aXJlIHBhcmFncmFwaC4KLSAgICAgICAgcmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxlVGFwOgotICAgICAgICBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGly
ZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBv
c2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkKSkgewogICAgICAgICAgICAgLy8gVHJpcGxlLXRhcCBhdCBlbmQgb2YgbGlu
ZSBvbmx5IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUuCiAgICAgICAgICAgICAvLyBUaGlz
IGhlbHBzIHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGluZyBhdCBlbmRzIG9mIGxpbmVzLAog
ICAgICAgICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3VtZW50cy4KICAgICAgICAgICAgIHJh
bmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9u
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpOworICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoK
QEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29u
c3QgSW4KICAgICBpZiAocmFuZ2UpCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UocmFuZ2UuZ2V0KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50LCBnZXN0
dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmxhZ3MpLCBjYWxs
YmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJh
Y2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBjYWxsYmFja0lEKSk7
CiB9CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRp
bmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQpCkBAIC0xNTI3LDI3ICsxNTI3LDI3IEBAIHN0YXRpYyBS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3QKIAogc3RhdGljIFJlZlB0cjxSYW5nZT4g
cmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gc2FtZURpcmVjdGlvbiA9IGJh
c2VJc1N0YXJ0ID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOwotICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gRGlyZWN0
aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBz
YW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQg
OiBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBv
cHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKICAgICBWaXNpYmxlUG9zaXRpb24g
YmFzZSA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2li
bGVTdGFydCgpIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsK
ICAgICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBmcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBpbml0aWFsRXh0ZW50
ID0gcG9zaXRpb247CiAKLSAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBX
b3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVE
aXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JkIGJvdW5kYXJ5LiBMZWF2ZSBz
ZWxlY3Rpb24gd2hlcmUgaXQgaXMuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwg
b3Bwb3NpdGVEaXJlY3Rpb24pKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4
dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9u
KSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeSBpbiB0aGUgd3JvbmcgZGly
ZWN0aW9uLiBOdWRnZSB0aGUgc2VsZWN0aW9uIHRvIGEgY2hhcmFjdGVyIGJlZm9yZSBwcm9jZWVk
aW5nLgogICAgICAgICBleHRlbnQgPSBiYXNlSXNTdGFydCA/IGV4dGVudC5wcmV2aW91cygpIDog
ZXh0ZW50Lm5leHQoKTsKICAgICB9CiAKICAgICAvLyBFeHRlbmQgdG8gdGhlIGJvdW5kYXJ5IG9m
IHRoZSB3b3JkLgogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCb3VuZGFyeSA9IHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBzYW1l
RGlyZWN0aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJvdW5kYXJ5ID0gcG9zaXRpb25P
Zk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgc2FtZURpcmVjdGlvbik7CiAgICAgaWYgKHdvcmRCb3VuZGFyeS5pc05vdE51
bGwoKQotICAgICAgICAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eSh3b3JkQm91bmRhcnksIFdv
cmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkod29yZEJvdW5kYXJ5LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
c2FtZURpcmVjdGlvbikKICAgICAgICAgJiYgaW5pdGlhbEV4dGVudCAhPSB3b3JkQm91bmRhcnkp
IHsKICAgICAgICAgZXh0ZW50ID0gd29yZEJvdW5kYXJ5OwogICAgICAgICByZXR1cm4gKGJhc2Ug
PCBleHRlbnQpID8gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGJhc2UsIGV4dGVu
dCkgOiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgZXh0ZW50LCBiYXNlKTsKQEAg
LTE1NTgsMTAgKzE1NTgsMTAgQEAgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3Vu
ZGFyeQogCiAgICAgLy8gSWYgdGhpcyBpcyB3aGVyZSB0aGUgZXh0ZW50IHdhcyBpbml0aWFsbHks
IHRoZW4gaXRlcmF0ZSBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uIGluIHRoZSBkb2N1bWVudCB1bnRp
bCB3ZSBoaXQgdGhlIG5leHQgd29yZC4KICAgICB3aGlsZSAoZXh0ZW50LmlzTm90TnVsbCgpCi0g
ICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0
eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4
dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCiAg
ICAgICAgICYmIGV4dGVudCAhPSBiYXNlCi0gICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKLSAgICAgICAgJiYg
IWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgTGluZUdyYW51bGFyaXR5LCBvcHBvc2l0
ZURpcmVjdGlvbikpIHsKKyAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVu
dCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCisgICAg
ICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6
TGluZUdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKICAgICAgICAgZXh0ZW50ID0g
YmFzZUlzU3RhcnQgPyBleHRlbnQubmV4dCgpIDogZXh0ZW50LnByZXZpb3VzKCk7CiAgICAgfQog
CkBAIC0xNjc3LDIxICsxNjc3LDIwIEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hTeW50aGV0aWNN
b3VzZUV2ZW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRv
dWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgU2VsZWN0aW9uVG91Y2ggc2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+
cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24g
PSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChwb2ludEluRG9jdW1lbnQpOwogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgdG91Y2hlcywgMCwgY2FsbGJhY2tJRCkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwg
c2VsZWN0aW9uVG91Y2gsIHsgfSwgY2FsbGJhY2tJRCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0
OwotICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdzID0gTm9uZTsKKyAgICBPcHRpb25TZXQ8U2VsZWN0
aW9uRmxhZ3M+IGZsYWdzOwogCi0gICAgYXV0byBzZWxlY3Rpb25Ub3VjaCA9IHN0YXRpY19jYXN0
PFNlbGVjdGlvblRvdWNoPih0b3VjaGVzKTsKICAgICBpZiAoc2hvdWxkRGlzcGF0Y2hTeW50aGV0
aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24oKSkKICAgICAgICAgZGlzcGF0Y2hT
eW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoc2VsZWN0aW9uVG91Y2gsIHBv
aW50KTsKIApAQCAtMTcxMCwxMSArMTcwOSwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZWxlY3Rpb25Ub3Vj
aDo6RW5kZWRNb3ZpbmdGb3J3YXJkOgotICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbigmZnJhbWUsIHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgRGlyZWN0aW9uRm9y
d2FyZCk7CisgICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZm
cmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
OwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5k
ZWRNb3ZpbmdCYWNrd2FyZDoKLSAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9y
UG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIERpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oJmZyYW1l
LCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6Ok1vdmVkOgpAQCAtMTcy
NCwxMCArMTcyMywxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVz
CiAgICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgdG91Y2hlcywg
ZmxhZ3MsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRv
dWNoZXNDYWxsYmFjayhwb2ludCwgc2VsZWN0aW9uVG91Y2gsIGZsYWdzLCBjYWxsYmFja0lEKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
dm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJl
VHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBmcm9tUG9zaXRpb24g
PSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZS52aWV3KCktPnJvb3RWaWV3VG9D
b250ZW50cyhmcm9tKSk7CkBAIC0xNzQyLDE0ICsxNzQxLDE0IEBAIHZvaWQgV2ViUGFnZTo6c2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QKICAgICB9CiAKICAgICAvLyBXZSBjYW4gdXNlIHRoZSBz
YW1lIGNhbGxiYWNrIGZvciB0aGUgZ2VzdHVyZXMgd2l0aCBvbmUgcG9pbnQuCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2soZnJvbSwgZ2VzdHVyZVR5cGUs
IGdlc3R1cmVTdGF0ZSwgMCwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IHsgfSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbih1
aW50MzJfdCBncmFudWxhcml0eSkKK3ZvaWQgV2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIC8vIEZv
ciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFdvcmRHcmFudWxhcml0eS4KLSAgICBpZiAoZ3Jh
bnVsYXJpdHkgIT0gV29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0
KCkpCisgICAgLy8gRm9yIHRoZSBtb21lbnQgd2UgaGFuZGxlIG9ubHkgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkuCisgICAgaWYgKGdyYW51bGFyaXR5ICE9IFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CkBAIC0xNzkyLDcgKzE3OTEsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0
KCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25C
YWNrd2FyZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOwogICAgIGlmIChzdGFy
dFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHN0YXJ0UG9zaXRpb24gIT0gcG9zaXRpb24pCiAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5h
ZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CiB9CkBAIC0xODA0LDEwICsxODAzLDEwIEBAIHZvaWQgV2ViUGFn
ZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpOwogICAgIGlmIChz
dGFydFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgU2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVj
dGlvbkZvcndhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8
IDAgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMob2Zmc2V0KTsgKytpKSB7Ci0gICAgICAgIHBvc2l0
aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOworICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkNo
YXJhY3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNO
dWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTQzLDcgKzE5NDIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlCiAgICAgcmVwbHkoV1RGTW92
ZShyZWN0c1RvQXZvaWRJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFu
dWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoV2ViQ29yZTo6
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgQ2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkuaXNOb25lKCkgPyBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSA6IG1fc3RvcmVkU2VsZWN0aW9uRm9yQWNjZXNzaWJpbGl0eTsK
QEAgLTE5NTUsOSArMTk1NCw5IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0
eVdpdGgKICAgICB9CiAKICAgICBhdXRvIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yUG9z
aXRpb25XaXRoT2Zmc2V0KHNlbGVjdGlvblN0YXJ0LCBvZmZzZXQpOwotICAgIFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJl
Y3Rpb25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQg
PCAwID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZDsKIAotICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVs
YXJpdHkpLCBkaXJlY3Rpb24pOworICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIGlmICgh
cmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZCgpKSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2VsZWN0aW9uUmVjdHNDYWxsYmFjayh7IH0sIGNhbGxiYWNrSUQpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA0OCw1MiArMjA0Nyw1MiBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRQb2ludChjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRp
cmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6OnNlbGVj
dFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50KTsKIAogICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkgewotICAgICAg
ICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3Rh
dGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKKyAgICAgICAgcG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVs
YXJpdHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKICAg
ICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgVVBTVFJFQU0s
IFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJp
Z2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3QgZ3JhbnVs
YXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3Jl
OjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKICAgICBpZiAoIWZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7Ci0gICAgICAgIGJvb2wgaXNGb3J3
YXJkID0gKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25SaWdodCk7CisgICAgICAgIGJvb2wgaXNGb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQgfHwgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6UmlnaHQpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSAoaXNGb3J3YXJk
KSA/IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSA6IGZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwotICAgICAgICBwb3NpdGlvbiA9
IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8U2Vs
ZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVj
dGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAgIGZy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6
IERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckdyYW51bGFyaXR5QXRQb2ludChGcmFt
ZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKK1JlZlB0cjxSYW5n
ZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KQogewogICAgIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQ
b2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogCiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpKSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFu
dWxhcml0eToKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICByYW5nZSA9IG1ha2VSYW5nZShw
b3NpdGlvbiwgcG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICByYW5nZSA9IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICAgICAgcmFuZ2UgPSBlbmNsb3Np
bmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFNlbnRlbmNlR3JhbnVsYXJpdHksIERp
cmVjdGlvbkZvcndhcmQpOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51
bGFyaXR5OgorICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdy
YW51bGFyaXR5OgotICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0
eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICAgICAgcmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgLy8gRklYTUU6
IEl0J3Mgbm90IGNsZWFyIHdoeSB0aGlzIG11dGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGFu
ZCByZXR1cm5zIG51bGwuCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwog
ICAgICAgICBicmVhazsKQEAgLTIxMTgsNyArMjExNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Rm9j
dXNlZEZyYW1lQmVmb3JlU2VsZWMKICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5z
ZXRGb2N1c2VkRnJhbWUocmVzdWx0LmlubmVyTm9kZUZyYW1lKCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFu
dWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2V0Rm9jdXNlZEZy
YW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24ocG9pbnQpOwogCkBAIC0yMTMwLDEzICsy
MTI5LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUEKICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5E
aXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewotICAgIG1fc2VsZWN0
aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSA9
PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5kOworICAgIG1fc2VsZWN0aW9uQW5jaG9yID0g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCA/IFN0YXJ0IDogRW5kOwogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlv
bkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwpAQCAtMjIzMiw3ICsyMjMxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
RGljdGF0aW9uQ29udGV4dChDYQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gY3VycmVudFBvc2l0
aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGxhc3RQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWN0
YXRpb25Db250ZXh0V29yZENvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlv
biA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQ
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOworICAgICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkobGFzdFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpOwogICAgICAgICAgICAgaWYgKGN1cnJl
bnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2EKICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gbGFzdFBvc2l0aW9uID0gZW5kUG9zaXRpb247CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkaWN0YXRpb25Db250ZXh0V29yZENvdW50OyArK2kpIHsKLSAgICAgICAgICAg
IGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShsYXN0UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkp
OworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gZW5kT2ZXb3JkKHBvc2l0aW9uT2ZOZXh0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpOwogICAgICAgICAgICAg
aWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKQEAgLTI0MzIsNyArMjQz
MSw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmEKICAgICBpZiAo
Y29ycmVjdGlvbi5sZW5ndGgoKSkKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChj
b3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0eSgpID8gVGV4dEV2ZW50SW5wdXRLZXli
b2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24pOwogICAgIGVsc2UgaWYgKG9yaWdp
bmFsVGV4dC5sZW5ndGgoKSkKLSAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVj
dGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0NzcsNyArMjQ3Niw3
IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY28KICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW5Db250ZXh0V29yZENvdW50OyArK2kpIHsKICAg
ICAgICAgICAgICAgICBpZiAoY29udGV4dEJlZm9yZS5sZW5ndGgoKSA+PSBtaW5Db250ZXh0TGVu
Z2h0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBwcmV2aW91
c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSk7
CisgICAgICAgICAgICAgICAgcHJldmlvdXNQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9u
T2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKICAg
ICAgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnRXb3JkID0gcGxh
aW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwcmV2aW91
c1Bvc2l0aW9uLCBjdXJyZW50UG9zaXRpb24pLnB0cigpKTsKQEAgLTI0ODgsMTUgKzI0ODcsMTUg
QEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6OmF1dG9jbwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwoKSAmJiBjdXJyZW50
UG9zaXRpb24gIT0gc3RhcnRQb3NpdGlvbikgewogICAgICAgICAgICAgICAgIGNvbnRleHRCZWZv
cmUgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRyKCkpOwotICAgICAgICAgICAgICAg
IGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFBhcmFncmFwaEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAgICAgICAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBtYWtlU3RyaW5nKCJcbiAiX3MsIGNvbnRleHRC
ZWZvcmUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZFBvc2l0
aW9uICE9IGVuZE9mRWRpdGFibGVDb250ZW50KGVuZFBvc2l0aW9uKSkgewogICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbjsKLSAgICAgICAgICAgIGlmICghYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9y
d2FyZCkgJiYgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQotICAgICAgICAgICAgICAgIG5leHRQb3NpdGlv
biA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3Jk
R3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICAgICAgaWYgKCFhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkgJiYgd2l0aGluVGV4dFVuaXRPZkdy
YW51bGFyaXR5KGVuZFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkKKyAgICAgICAgICAgICAgICBuZXh0UG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZCk7CiAgICAgICAgICAgICBpZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIG5leHRQb3NpdGlvbikucHRyKCkpOwogICAg
ICAgICB9CkBAIC0yNjMwLDkgKzI2MjksOSBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JMaW5r
UG9zaXRpb25JbmZvCiAgICAgYXV0byBsaW5rUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGVsZW1lbnQu
ZG9jdW1lbnQoKSk7CiAgICAgbGlua1JhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7
CiAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVk
QnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgRGly
ZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29u
dGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkuZ2V0KCkpOwogICAgIGlu
Zm8udGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0
ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFuZ2UtPmVuZFBvc2l0aW9uKCksCi0g
ICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndh
cmQpLmdldCgpKTsKKyAgICAgICAgZGF0YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKS5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDA2
OSw3ICs0MDY4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBtb3ZlQnlHcmFudWxhcml0eQog
ewogICAgIEFTU0VSVChncmFudWxhcml0eUNvdW50KTsKICAgICBBU1NFUlQocG9zaXRpb24uaXNO
b3ROdWxsKCkpOwotICAgIGJvb2wgYmFja3dhcmRzID0gZGlyZWN0aW9uID09IERpcmVjdGlvbkJh
Y2t3YXJkOworICAgIGJvb2wgYmFja3dhcmRzID0gZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQ7CiAgICAgYXV0byBmYXJ0aGVzdFBvc2l0aW9uSW5EaXJlY3Rpb24gPSBi
YWNrd2FyZHMgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHBvc2l0aW9uKTsKICAgICBpZiAocG9zaXRpb24gPT0gZmFydGhlc3RQb3NpdGlv
bkluRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gYmFja3dhcmRzID8gc3RhcnRPZldvcmQocG9z
aXRpb24pIDogZW5kT2ZXb3JkKHBvc2l0aW9uKTsKQEAgLTQwODMsOCArNDA4Miw4IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkKICAgICAgICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbikp
CiAgICAgICAgICAgICAtLWdyYW51bGFyaXR5Q291bnQ7CiAgICAgfSB3aGlsZSAoZ3JhbnVsYXJp
dHlDb3VudCk7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IFNlbnRlbmNlR3JhbnVsYXJpdHkpIHsK
LSAgICAgICAgQVNTRVJUKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwg
U2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgaWYgKGdyYW51bGFyaXR5ID09
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSkgeworICAgICAgICBBU1NFUlQo
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOwogICAgICAgICByZXR1cm4gY3VycmVu
dFBvc2l0aW9uOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQgdGhpcyByb3VuZHMgdG8gdGhlIG5l
YXJlc3Qgd29yZCwgd2hpY2ggbWF5IGNyb3NzIGEgbGluZSBib3VuZGFyeSB3aGVuIHVzaW5nIGxp
bmUgZ3JhbnVsYXJpdHkuCkBAIC00MTk3LDggKzQxOTYsOCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVl
c3REb2N1bWVudEVkaXRpbmdDb250CiAgICAgVmlzaWJsZVBvc2l0aW9uIGNvbnRleHRBZnRlckVu
ZDsKICAgICBhdXRvIGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkuY29tcG9zaXRp
b25SYW5nZSgpOwogICAgIGlmIChyZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQpIHsKLSAgICAgICAg
Y29udGV4dEJlZm9yZVN0YXJ0ID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5k
YXJ5KHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHks
IHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9uQmFja3dhcmQpOwotICAgICAgICBj
b250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnko
cmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJlcXVl
c3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIGNvbnRleHRC
ZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5n
ZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0
LmdyYW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOworICAgICAg
ICBjb250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRh
cnkocmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJl
cXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBjb250ZXh0QmVmb3JlU3RhcnQgPSByYW5nZU9mSW50ZXJlc3RT
dGFydDsKICAgICAgICAgY29udGV4dEFmdGVyRW5kID0gcmFuZ2VPZkludGVyZXN0RW5kOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaD4KQEAgLTc3MywyNCArNzc0LDE4IEBAIHZvaWQgV2ViUGFnZTo6ZHJh
d1BhZ2VzVG9QREZGcm9tUERGRG9jdW0KIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6Ondl
YkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgdWludDMy
X3QgcG9saWN5UmVzdWx0ID0gMDsKLQotICAgIGlmIChzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
ZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0KSkpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGljeVJlc3VsdCk7Ci0KLSAgICByZXR1cm4g
V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9hZFBvbGljeSBwb2xpY3lSZXN1bHQgPSBX
ZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0KSk7CisgICAgcmV0
dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi1XZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFn
ZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJiB1cmwpCiB7
Ci0gICAgdWludDMyX3QgcG9saWN5UmVzdWx0ID0gMDsKLQotICAgIGlmIChzZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpSZXBseShwb2xpY3lS
ZXN1bHQpKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkdMTG9hZFBvbGljeT4ocG9s
aWN5UmVzdWx0KTsKLQotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgV2ViR0xM
b2FkUG9saWN5IHBvbGljeVJlc3VsdCA9IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBv
bGljeUZvclVSTCh1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpOworICAgIHJldHVybiBwb2xpY3lSZXN1bHQ7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW06CisgICAgICAgICgtW1dlYkZyYW1lIGFnZ3Jlc3NpdmVseUV4cGFu
ZFNlbGVjdGlvblRvV29yZENvbnRhaW5pbmdDYXJldFNlbGVjdGlvbl0pOgorICAgICAgICAoLVtX
ZWJGcmFtZSBzZXRTZWxlY3Rpb25HcmFudWxhcml0eTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICh0b1RleHRHcmFudWxhcml0eSk6
CisgICAgICAgICh0b1NlbGVjdGlvbkRpcmVjdGlvbik6CisKIDIwMjAtMDUtMTAgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xpY2tpbmcgYSB0ZWw6
Ly8gbGluayBvbiBpUGFkIHdpdGggYSB0cmFja3BhZCBwcmVzZW50cyBkaWZmZXJlbnQgVUkgdGhh
biB0YXBwaW5nIG9uIGl0CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQ4NCw3ICs0ODQsNyBAQCAtICh2b2lkKWFnZ3Jlc3NpdmVseUV4cGFuZFNl
bGVjdGlvblRvV29yCiAKICAgICAvLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IGhhY2sgdW50aWwgd2Ug
Z2V0IHRoZSBpbXByb3ZlbWVudHMKICAgICAvLyBJJ20gd29ya2luZyBvbiBmb3IgUlRMIHNlbGVj
dGlvbi4KLSAgICBpZiAoZnJhbWVTZWxlY3Rpb24uZ3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVs
YXJpdHkpCisgICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpCiAgICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhm
cmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLCBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rp
b24oKS5lbmQoKSk7CiAgICAgCiAgICAgaWYgKGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLmlz
Q2FyZXQoKSkgewpAQCAtNjA0LDIzICs2MDQsMjMgQEAgLSAodm9pZCltb3ZlU2VsZWN0aW9uVG9Q
b2ludDooQ0dQb2ludClwbwogCiAtICh2b2lkKXNldFNlbGVjdGlvbkdyYW51bGFyaXR5OihXZWJU
ZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKIHsKLSAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIFRleHRHcmFudWxhcml0eSB3Y0dy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBz
d2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5Q2hh
cmFjdGVyOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3Jh
bnVsYXJpdHlXb3JkOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFdvcmRHcmFudWxhcml0
eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxh
cml0eVNlbnRlbmNlOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFNlbnRlbmNlR3JhbnVs
YXJpdHk7CisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4
dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFn
cmFwaEdyYW51bGFyaXR5OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlBbGw6Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIERv
Y3VtZW50R3JhbnVsYXJpdHkuCi0gICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gUGFyYWdyYXBo
R3JhbnVsYXJpdHk7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIFRleHRHcmFudWxhcml0eTo6
RG9jdW1lbnRHcmFudWxhcml0eS4KKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaXNpYmxlUG9zaXRpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjA1LDI3ICsyMDUsMjcgQEAgc3RhdGljIGlubGluZSBUZXh0R3JhbnVsYXJpdHkg
dG9UZXh0R3JhbgogICAgIAogICAgIHN3aXRjaCAod2ViR3JhbnVsYXJpdHkpIHsKICAgICAgICAg
Y2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAgICAgICBncmFudWxhcml0
eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlXb3JkOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlTZW50ZW5jZToKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gU2VudGVuY2VHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlMaW5lOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlQYXJhZ3JhcGg6Ci0gICAgICAgICAgICBncmFudWxh
cml0eSA9IFBhcmFncmFwaEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlBbGw6Ci0gICAgICAgICAgICBncmFu
dWxhcml0eSA9IERvY3VtZW50R3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNDIsMjcgKzI0MiwyNyBAQCBzdGF0aWMgaW5saW5l
IFNlbGVjdGlvbkRpcmVjdGlvbiB0b1NlbGVjCiAgICAgCiAgICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudEZvcndhcmQ6Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkOgotICAgICAgICAgICAgcmVzdWx0
ID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFJpZ2h0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGly
ZWN0aW9uUmlnaHQ7CisgICAgICAgICAgICByZXN1bHQgPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJp
Z2h0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBXZWJU
ZXh0QWRqdXN0bWVudExlZnQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25MZWZ0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgICAgICBjYXNlIFdlYlRleHRBZGp1c3RtZW50VXA6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rpb25MZWZ0OworICAgICAgICAgICAgcmVzdWx0ID0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAog
ICAgICAgICBjYXNlIFdlYlRleHRBZGp1c3RtZW50RG93bjoKLSAgICAgICAgICAgIHJlc3VsdCA9
IERpcmVjdGlvblJpZ2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9u
OjpSaWdodDsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDUtMTQg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBV
c2UgZW51bSBzZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTVJhbmdlIG1vdmU6aW5EaXJlY3Rp
b246XSk6CisgICAgICAgICgtW0RPTVJhbmdlIGV4dGVuZDppbkRpcmVjdGlvbjpdKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBf
Y2FuU21hcnRDb3B5T3JEZWxldGVdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRDb21wbGV0
aW9uQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVy
IGRvQ29tcGxldGlvbl0pOgorCiAyMDIwLTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gTmV1dGVyIFdLRnJhbWVJc0ZyYW1lU2V0KCkgLyBXS1Bh
Z2VHZXRGcmFtZVNldExhcmdlc3RGcmFtZSgpIEMgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0JKHJldmlzaW9uIDI2MTY5
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTgyLDE1ICs4MiwxNSBAQCAtICh2b2lkKW1vdmU6KFVJbnQzMilh
bW91bnQgaW5EaXJlY3Rpb246CiAgICAgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24gZnJhbWVTZWxl
Y3Rpb247CiAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHJhbmdlKTsKICAgICAKLSAgICBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKKyAgICBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBXZWJD
b3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgIC8vIFVudGls
IFdlYktpdCBzdXBwb3J0cyB2ZXJ0aWNhbCBsYXlvdXQsICJkb3duIiBpcyBlcXVpdmFsZW50IHRv
ICJmb3J3YXJkIGJ5IGEgbGluZSIgYW5kCiAgICAgLy8gInVwIiBpcyBlcXVpdmFsZW50IHRvICJi
YWNrd2FyZCBieSBhIGxpbmUiLgogICAgIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1l
bnREb3duKSB7CiAgICAgICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50Rm9yd2FyZDsK
LSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpMaW5lR3JhbnVsYXJpdHk7CisgICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7
CiAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRVcCkgewogICAg
ICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVudEJhY2t3YXJkOwotICAgICAgICBncmFu
dWxhcml0eSA9IFdlYkNvcmU6OkxpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkg
PSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICB9CiAgICAg
CiAgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBhbW91bnQ7IGkrKykKQEAgLTExMSw3ICsxMTEs
NyBAQCAtICh2b2lkKWV4dGVuZDooVUludDMyKWFtb3VudCBpbkRpcmVjdGlvCiAgICAgZnJhbWVT
ZWxlY3Rpb24ubW92ZVRvKHJhbmdlKTsKICAgICAKICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8
IGFtb3VudDsgaSsrKQotICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoV2ViQ29yZTo6RnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b24pZGlyZWN0aW9uLCBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGZy
YW1lU2VsZWN0aW9uLm1vZGlmeShXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbilkaXJlY3Rpb24sIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIAogICAgIFBvc2l0aW9u
IHN0YXJ0ID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKS5wYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmQgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rp
b24oKS5lbmQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjExMiwxMiArMjExMiwxMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1dlYkdMKCkK
IAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBv
bGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdAogewotICAgIHJldHVybiBzaG91bGRCbG9ja1dl
YkdMKCkgPyBXZWJDb3JlOjpXZWJHTEJsb2NrQ3JlYXRpb24gOiBXZWJDb3JlOjpXZWJHTEFsbG93
Q3JlYXRpb247CisgICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdMQmxv
Y2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gc2hv
dWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3Jl
YXRpb24gOiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTczMiw3ICs1NzMyLDcgQEAgLSAoQk9PTClfY2FuU21hcnRDb3B5T3JEZWxldGUKICAgICBp
ZiAoIVtbc2VsZiBfd2ViVmlld10gc21hcnRJbnNlcnREZWxldGVFbmFibGVkXSkKICAgICAgICAg
cmV0dXJuIE5POwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0g
ICAgcmV0dXJuIGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5
KCkgPT0gV2ViQ29yZTo6V29yZEdyYW51bGFyaXR5OworICAgIHJldHVybiBjb3JlRnJhbWUgJiYg
Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5OwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xs
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJU
ZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgLSAodm9pZClkb0NvbXBsZXRpb24KICAg
ICAgICAgV2ViRnJhbWUgKmZyYW1lID0gW19odG1sVmlldyBfZnJhbWVdOwogICAgICAgICBET01S
YW5nZSAqc2VsZWN0aW9uID0ga2l0KGNyZWF0ZUxpdmVSYW5nZShjb3JlKGZyYW1lKS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkuZ2V0KCkpOwogICAgICAgICBE
T01SYW5nZSAqd2hvbGVXb3JkID0gW2ZyYW1lIF9yYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0
aW9uOkZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kCi0gICAgICAgICAgICBkaXJlY3Rp
b246RGlyZWN0aW9uQmFja3dhcmQgZ3JhbnVsYXJpdHk6V29yZEdyYW51bGFyaXR5XTsKKyAgICAg
ICAgICAgIGRpcmVjdGlvbjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIGdyYW51bGFyaXR5
OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5XTsKICAgICAgICAgRE9NUmFuZ2UgKnBy
ZWZpeCA9IFt3aG9sZVdvcmQgY2xvbmVSYW5nZV07CiAgICAgICAgIFtwcmVmaXggc2V0RW5kOltz
ZWxlY3Rpb24gc3RhcnRDb250YWluZXJdIG9mZnNldDpbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XV07
CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2MTY5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDIwLTA1LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0gc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9m
IGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4
dFNlbGVjdGlvbik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZWFzZVRl
eHRTZWxlY3Rpb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4dFNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlYXNlVGV4dFNlbGVjdGlvbik6CisKIDIwMjAtMDUt
MTQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAg
c3RyZXNzL2FycmF5LWJ1ZmZlci12aWV3LXdhdGNocG9pbnQtY2FuLWJlLWZpcmVkLWluLXJlYWxs
eS1hZGQtaW4tZGZnLmpzIGZhaWxpbmcgb24gcHBjNjRsZSBhbmQgczM5MHgKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9T
Lm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDEyICszNDUsMTIg
QEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbAogCiB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4dFNlbGVjdGlvbigpCiB7Ci0gICAgW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OkNoYXJhY3RlckdyYW51
bGFyaXR5IGluY3JlYXNlOllFU107CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5
U2VsZWN0aW9uOldlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkg
aW5jcmVhc2U6WUVTXTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZWFz
ZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNl
bGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpOT107ICAgIAor
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOk5PXTsgICAgCiB9CiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0Fz
KCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2
aXNpb24gMjYxNjk0KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9p
b3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTM2LDEy
ICs5MzYsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxQYWdlUgogCiB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4dFNlbGVjdGlvbigpCiB7Ci0g
ICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OkNoYXJh
Y3RlckdyYW51bGFyaXR5IGluY3JlYXNlOllFU107CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkgaW5jcmVhc2U6WUVTXTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpO
T107CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6
OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9dOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5n
Rm9yU2VsZWN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399380</attachid>
            <date>2020-05-14 11:23:05 -0700</date>
            <delta_ts>2020-05-14 13:55:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514112304.patch</filename>
            <type>text/plain</type>
            <size>236278</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTQgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbiBuZWVkcyB0byBhcHBseSBwZW5k
aW5nIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSBnaXZlbiBub2RlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEyLDcgKzIwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgRnJhbWVTZWxlY3Rp
b24gc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkpOwogICAgIAogICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCAtICh2
b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRlCiAgICAgaWYgKGZyYW1lU2VsZWN0
aW9uLmlzTm9uZSgpICYmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPCByYW5nZS5zdGFydCB8
fCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpID4gcmFuZ2UuZW5kKSkKICAgICAgICAgZnJhbWVTZWxl
Y3Rpb24ubW92ZVRvKHJhbmdlLnN0YXJ0LCBVc2VyVHJpZ2dlcmVkKTsKICAgICAKLSAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChpbmNy
ZWFzZSkgPyBEaXJlY3Rpb25SaWdodCA6IERpcmVjdGlvbkxlZnQsIGdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0IDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBncmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9
CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUluY3JlYXNlU2VsZWN0aW9uOihUZXh0R3JhbnVsYXJp
dHkpZ3JhbnVsYXJpdHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0JlaGF2
aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQmVoYXZp
b3IuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
QmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT24gaU9TLCB3ZSBkb24ndCB3YW50IHRvIHNlbGVjdCBhbGwgdGhlIHRleHQgd2hlbiBmb2N1
c2luZyBhIGZpZWxkLiBJbnN0ZWFkLCBtYXRjaCBwbGF0Zm9ybSBiZWhhdmlvciBieSBnb2luZyB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgIGJvb2wgc2hvdWxkTW92ZVNlbGVjdGlvblRvRW5k
V2hlbkZvY3VzaW5nVGV4dElucHV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAotICAgIC8vIE9uIGlPUywgd2hlbiBzbWFydCBkZWxldGUgaXMg
b24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBkbyBub3QgYWRkaXRpb25hbCBjaGVja3Mg
KGkuZS4gV29yZEdyYW51bGFyaXR5KS4KKyAgICAvLyBPbiBpT1MsIHdoZW4gc21hcnQgZGVsZXRl
IGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91bGQgZG8gbm90IGFkZGl0aW9uYWwgY2hl
Y2tzIChpLmUuIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KS4KICAgICBib29sIHNo
b3VsZEFsd2F5c1NtYXJ0RGVsZXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAogICAgIC8vIE9uIGlPUywgd2Ugc2hvdWxkIHR1cm4gb24gc21h
cnQgaW5zZXJ0IGFuZCBkZWxldGUgYW5kIG5ld2xpbmVzIGFyb3VuZCBwYXJhZ3JhcGhzIHRvIG1h
dGNoIFVJS2l0IGJlaGF2aW91ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgRWRpdG9yOjpzaG91bGRTbWFydERl
bGV0ZSgpCiB7CiAgICAgaWYgKGJlaGF2aW9yKCkuc2hvdWxkQWx3YXlzU21hcnREZWxldGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eTsKIH0KIAogYm9vbCBFZGl0b3I6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCkBAIC01
NjgsMTIgKzU2OCwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
CiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQogICAgICAgICAgICAgb3B0aW9ucyB8
PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgICAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3Jh
bnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uQmFj
a3dhcmQ6Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1l
bnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIFN0cmluZyBFZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRD
YXJldE9yUmEKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIHdvcmRTZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7
CiAgICAgYXV0byB3b3JkUmFuZ2UgPSB3b3JkU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgaWYgKCF3b3JkUmFuZ2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0MDIs
NyArMjQwMiw3IEBAIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWwKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlv
cigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewog
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgd29yZFNlbGVj
dGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5KTsKICAgICAgICAgICAgIHJhbmdlID0gd29yZFNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCk7CkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUg
Y2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRv
KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
CkBAIC0yOTE5LDExICsyOTE5LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihj
b25zdCBTcGUKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFn
cmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhC
b3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24s
IHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxh
Y2VtZW50CiAgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9p
ZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleAogICAgIH0gZWxzZQogICAgICAg
ICBpbnNlcnRUZXh0KGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LCBudWxscHRyKTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCksIERpcmVjdGlvbkJh
Y2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UgPSByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoaW5zZXJ0ZWRDYW5kaWRhdGVS
YW5nZSkKICAgICAgICAgaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoKmluc2VydGVkQ2FuZGlkYXRlUmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCwzMiArMzA0LDMyIEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGUoRnJhbWUmIGZyYW1lLCAKIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJh
Y2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLmVkaXRvcigpLmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRl
V2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYQogewogICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXAKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBu
YW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9m
CiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LgotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9N
YXJrKEZyYW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2Fy
ZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDI0LDcg
KzQyNCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lJiAKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpAQCAtNjA2LDQ3ICs2MDYsNDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdAogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg4LDIwMyAr
Njg4LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdy
YW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7Cisg
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFNl
bnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVk
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9m
U2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0Vu
ZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNl
clRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZy
YW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQs
IFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMzUsMTcgKzEwMzUsMTcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSYgZnJhbQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
U2VsZWN0TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShm
cmFtZSwgTGluZUdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHkpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0UGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRT
ZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0
U2VudGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJh
bWUsIFNlbnRlbmNlR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtMTA2Miw3ICsxMDYyLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZgogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU2VsZWN0V29yZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3QKIEZy
YW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oKSkKLSAgICAsIG1fZ3JhbnVsYXJp
dHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgLCBtX2dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAg
LCBtX2NhcmV0QmxpbmtUaW1lcigqdGhpcywgJkZyYW1lU2VsZWN0aW9uOjpjYXJldEJsaW5rVGlt
ZXJGaXJlZCkKICNlbmRpZgpAQCAtNjc2LDIyICs2NzYsMjIgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6d2lsbEJlTW9kaWZpZWQoRUFsdAogICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNl
IERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6
CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJh
c2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFz
ZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoK
ICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNzY1LDM0ICs3NjUsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeAogICAgIC8vIGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhl
IGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4
dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERp
cmVjdGlvbjo6UlRMLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJh
Y3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2
aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2Fz
ZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
PwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODA2LDM0ICs4MDYsMzQgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogewogICAgIFZpc2libGVQb3Np
dGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlv
blBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBv
c2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAg
ICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpM
aW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZv
cm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBl
bmRPZlBhcmFncmFwaChlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBpZiAoaXNF
ZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9
IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC04NTMsNyArODUzLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5
ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpIHsK
ICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtODYyLDcgKzg2Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwpAQCAtODcwLDE5ICs4NzAsMTkgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgKnJlYWNoZWRC
b3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHJpZ2h0Qm91bmRhcnlPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg5NSwxNSArODk1
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAg
KnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9z
aXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGN1cnJlbnRQb3Np
dGlvbiA9IGVuZEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBA
IC05MTIsMTkgKzkxMiwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICAvLyBGSVhNRTogU3RheSBpbiBlZGl0
YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24gZ3JhbnVsYXJpdGllcy4KICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRX
b3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewogICAg
ICAgICAvLyBkb3duLWFycm93aW5nIGZyb20gYSByYW5nZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0
IHRoZSBzdGFydCBvZiBhIGxpbmUgbmVlZHMKICAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVj
dGlvbiBhdCB0aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9u
ISkKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9uOwpAQCAtOTMyLDIyICs5MzIsMjIgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9z
ID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0
aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50
UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihT
VEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgp
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAg
ICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKQEAgLTk1NiwxMyArOTU2LDEz
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9z
ID09IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgYnJlYWs7CkBAIC05ODIsMzMgKzk4MiwzMyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0
ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGly
ZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYg
dGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2Fy
ZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9j
dW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTEwMjcsMzggKzEwMjcsMzggQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIEl0IHdhcyBkb25lIGhlcmUgaW5zdGVhZCBv
ZiBpbiBWaXNpYmxlUG9zaXRpb24gYmVjYXVzZSB3ZSB3YW50IFZQcyB0byBpdGVyYXRlCiAgICAg
Ly8gb3ZlciBldmVyeXRoaW5nLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9z
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5l
UG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAg
ICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBs
YXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2Fs
U3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRGb3JQbGF0Zm9y
bSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFy
dEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChw
b3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9z
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA3NCw3ICsxMDc0LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVh
Y2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtMTA4Myw3ICsx
MDgzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxlZnQodHJ1ZSwgcmVhY2hlZEJvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CiAgICAgICAgIGJvb2wgc2tpcHNT
cGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+ZWRpdG9yKCku
YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9IGxlZnRXb3JkUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKQEAgLTEwOTEsMTkgKzEwOTEs
MTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAg
ICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAg
ICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsZWZ0Qm91bmRh
cnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCks
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTExMTYsMTUgKzExMTYsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpAQCAtMTEzMiw1MiArMTEzMiw1MiBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAg
ICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExp
bmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgogICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxp
bmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlv
dXNQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZv
ckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShjdXJyZW50UG9zaXRpb24p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxp
bmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQ
YXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChjdXJyZW50
UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVl
cEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50
KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChw
b3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFn
cmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAg
ICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAg
ICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KIAogc3RhdGljIGJvb2wgaXNCb3VuZGFyeShUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8
fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBEb2N1
bWVudEJvdW5kYXJ5OworICAgIHJldHVybiBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeTsKIH0KIAogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OnRleHRT
ZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKQEAgLTEyMDIsNTUgKzEyMDIsNTUg
QEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OgogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVu
ZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
aW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
V29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkg
PSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVj
dGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBib29sIGJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5
OgogICAgICAgICBib3VuZGFyeSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6Ci0gICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKKyAg
ICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5
KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5k
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA6IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoK
LSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAg
aWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBm
bGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uQmVnaW5uaW5nOwogICAgICAgICBlbHNlCkBAIC0xMjYyLDU4ICsxMjYyLDU4IEBAIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKIAogc3RhdGljIEFYVGV4dFNlbGVj
dGlvbiB0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFyaXR5KFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICAv
LyBGSVhNRTogQWNjb3VudCBmb3IgQklESSBpbiBEaXJlY3Rpb25SaWdodCAmIERpcmVjdGlvbkxl
ZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQgbWFwIHRvIFByZXZpb3VzL0JlZ2lubmlu
ZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCisgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIEJJREkg
aW4gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCAmIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdC4g
KEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAgdG8gUHJldmlvdXMvQmVnaW5uaW5nIGFu
ZCBMZWZ0IHRvIE5leHQvRW5kLikKICAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24gaW50ZW50
RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5rbm93bjsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIGlu
dGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25M
ZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IGludGVudEdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duOwogICAgIHN3aXRjaCAoZ3Jh
bnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVs
YXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxl
Y3Rpb25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFy
eSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3Vu
ZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAg
ICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6IC8v
IEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBk
aXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBz
aG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBp
bnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAg
ICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgICAgICBpbnRl
bnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xMzQ0LDI1ICsxMzQ0LDI1IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlm
eShFQWx0ZXJhdGlvbiAKICAgICBQb3NpdGlvbiBvcmlnaW5hbFN0YXJ0UG9zaXRpb24gPSBtX3Nl
bGVjdGlvbi5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1v
dmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5
LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVj
dGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJh
dGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgY2FzZSBBbHRlcmF0aW9u
RXh0ZW5kOgogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCi0gICAgICAgICAg
ICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkKKyAg
ICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5KQog
ICAgICAgICAgICAgJiYgbV9kb2N1bWVudCAmJiAhbV9kb2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZp
b3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVBY3Jvc3NDYXJldCgpKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIHNlbGVjdGlvbiBnbyBhY3Jvc3MgdGhlIGJhc2Ug
cG9zaXRpb24gZGlyZWN0bHkuIE5lZWRlZCB0byBtYXRjaCBtYWMKICAgICAgICAgICAgIC8vIGJl
aGF2aW9yIHdoZW4sIGZvciBpbnN0YW5jZSwgd29yZC1zZWxlY3RpbmcgYmFja3dhcmRzIHN0YXJ0
aW5nIHdpdGggdGhlIGNhcmV0IGluCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRp
b24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKTsKLSAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8
fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERp
cmVjdGlvbkxlZnQpKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSICYm
IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0KSB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6TGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CkBAIC0xNDI4LDExICsxNDI4LDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IGlmIChncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFy
YWdyYXBoR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHkpCiAgICAgICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uID0geDsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCi0gICAg
ICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgbV9ncmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBz
ZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25VcCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgd2ls
bEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBMYXlvdXRVbml0IHhQb3M7CkBAIC0xNTI0LDcgKzE1
MjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgfQog
CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkKLSAgICAgICAgbV9ncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBtX2dyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIG1fc2VsZWN0aW9u
LnNldElzRGlyZWN0aW9uYWwoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9k
b2N1bWVudCkgfHwgYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKQEAgLTE1NzIsMTMgKzE1
NzIsMTMgQEAgTGF5b3V0VW5pdCBGcmFtZVNlbGVjdGlvbjo6bGluZURpcmVjdGlvbgogCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpjbGVhcigpCiB7Ci0gICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OwogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCkpOwog
fQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKIHsKLSAg
ICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgbV9ncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICNpZiBFTkFCTEUo
VEVYVF9DQVJFVCkKICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdG9wKCk7CkBAIC0xNTg3LDcgKzE1
ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyCiAgICAgaWYg
KGF1dG8qIHZpZXcgPSBtX2RvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHZpZXctPnNl
bGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShWaXNpYmxlU2Vs
ZWN0aW9uKCksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAg
bV9wcmV2aW91c0NhcmV0Tm9kZSA9IG51bGxwdHI7CiAgICAgbV90eXBpbmdTdHlsZSA9IG51bGxw
dHI7CiAgICAgbV9hcHBlYXJhbmNlVXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjE2NSw3ICsyMTY1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gQ29u
c3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5l
Y2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBh
IHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4NjY+LgogI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWlu
dEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0
eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRW
aXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLCBlbmRWaXNpYmxlUG9zaXRpb24pOwogI2Vsc2UKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVj
dGlvbi52aXNpYmxlRW5kKCkpOwpAQCAtMjc0MywxMCArMjc0MywxMCBAQCBWaXNpYmxlU2VsZWN0
aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsCiAgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBv
ZiBzZWxlY3RpbmcgdGhlIHdvcmQgb24gdGhlIGxpbmUgKHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSB3YW50LCByYXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4K
ICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAm
JiAhaXNTdGFydE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKQotICAg
ICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCk7Ci0gICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgZnJhbWVTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBm
cmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZy
YW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
VmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbAogICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQogICAgICAgICBmcmFtZVNlbGVjdGlv
bi5tb3ZlVG8oc3RhcnRWaXNpYmxlUG9zKTsKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29y
ZEdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgIHN0YXJ0UG9zID0gZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgZW5kUG9zID0gZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgIHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2li
bGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CkBAIC0yODcyLDkgKzI4
NzIsOSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhCiAKICAgICBG
cmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxl
Y3Rpb24obV9zZWxlY3Rpb24pOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBh
bW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOworICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFicyhhbW91bnQpOyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1v
ZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwg
Ym9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
bjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5l
ZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRp
b25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCks
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vy
c29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51
bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBFQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCShyZXZpc2lvbiAyNjE2OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFRo
aXMgcmVhbGx5IHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBtb3JlIHRoYW4gb25lIGNvbmNlcHQu
CiAvLyBGcmFtZSBkb2Vzbid0IG5lZWQgdGhlIDMgYm91bmRhcmllcyBpbiB0aGlzIGVudW0uCi1l
bnVtIFRleHRHcmFudWxhcml0eSB7CitlbnVtIGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4
X3QgewogICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgIFdvcmRHcmFudWxhcml0eSwKICAg
ICBTZW50ZW5jZUdyYW51bGFyaXR5LApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxNiBAQCBz
dGF0aWMgaW5saW5lIEVkaXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5CiAgICAgY2FzZSBUeXBpbmdD
b21tYW5kOjpEZWxldGVTZWxlY3Rpb246CiAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBp
bmdEZWxldGVTZWxlY3Rpb247CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVLZXk6IHsK
LSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSkKKyAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAg
ICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVdvcmRCYWNrd2FyZDsKLSAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAgICAgICAgaWYgKGdyYW51bGFy
aXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJu
IEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVCYWNrd2FyZDsKICAgICAgICAgcmV0dXJuIEVk
aXRBY3Rpb246OlR5cGluZ0RlbGV0ZUJhY2t3YXJkOwogICAgIH0KICAgICBjYXNlIFR5cGluZ0Nv
bW1hbmQ6OkZvcndhcmREZWxldGVLZXk6Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3Jk
R3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdE
ZWxldGVXb3JkRm9yd2FyZDsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFy
eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVGb3J3
YXJkOwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlRm9yd2FyZDsKICAg
ICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQ6CkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oRG9jdQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3Bl
bkZvclR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlm
ZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3Vt
ZW50KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgLy8gRklYTUU6IEZvcndhcmQg
ZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlwaW5n
IGNvbW1hbmQuCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7
CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0
aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudCk7CiAgICAgICAgICAgICBsYXN0
VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxl
dGlvbik7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
QW5kTm90aWZ5QQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0ZXh0KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKElu
c2VydFRleHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRleHQpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNvbW1hbmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIHRleHQsIHNlbGVjdEluc2VydGVkVGV4dCwKQEAgLTU0NSw3ICs1
NDUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhaygpCiAgICAgaWYgKCFj
YW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRM
aW5lQnJlYWssIExpbmVHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVu
Q29tbWFuZChJbnNlcnRMaW5lQnJlYWssIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKQEAgLTU2NSw3ICs1NjUsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyCiAgICAgaWYgKCFjYW5B
cHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRU
eXBpbmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0
ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246OlR5cGluZ0luc2VydFBhcmFn
cmFwaCkpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXIKIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JJblF1b3RlZENvbnRlbnQoKQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50LCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IHN0YXJ0cyBpbnNpZGUgYSB0YWJsZSwganVzdCBpbnNlcnQgdGhlIHBhcmFncmFwaCBzZXBhcmF0
b3Igbm9ybWFsbHkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwogICAg
ICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJp
bmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
aWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxh
cml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICAg
ICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQg
PSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9uID0gdmlzaWJsZVN0YXJ0LnByZXZpb3VzKENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVy
IGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
dmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eAogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwog
Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUu
c3RhcnQoKS5jb250YWluZXJOb2RlKCkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpCiAgICAgICAgICAgICAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA+IDEpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUg
cmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlvbnMuCiAgICAgICAgICAgICBzZWxlY3Rp
b25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFsaWRhdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwg
c2VsZWN0aW9uVG9EZWxldGUuZW5kKCkucHJldmlvdXMoQmFja3dhcmREZWxldGlvbikpOwpAQCAt
NzczLDExICs3NzMsMTEgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
cwogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEg
ZG9jdW1lbnQuCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBz
ZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGlmIChzaG91bGRBZGRU
b0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAg
ICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRv
d25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC03OTUsOCArNzk1LDggQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAgICAgICB9CiAKICAgICAgICAgLy8gZGVs
ZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMg
dG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCi0gICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
ICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5
ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChz
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAK
ICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAg
ICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxl
dGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKQEAgLTg1Niw3ICs4NTYs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUpCiB7Ci0gICAgaWYg
KCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVTZWxlY3Rpb24sIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc21h
cnREZWxldGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHVu
c2lnbmVkIE9wdGlvbnM7CiAKICAgICBzdGF0aWMgdm9pZCBkZWxldGVTZWxlY3Rpb24oRG9jdW1l
bnQmLCBPcHRpb25zID0gMCwgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5v
bmUpOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25z
ID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIHN0YXRp
YyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRl
eHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBzdGF0aWMgdm9pZCBk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyB2b2lk
IGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIHN0
YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25zLCBU
ZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgc3RhdGljIHZv
aWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9u
ZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiwgT3B0aW9ucyk7
CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIFJlZjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRp
b25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29t
cG9zaXRpb25Ob25lKQorICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0
ID0gZW1wdHlTdHJpbmcoKSwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVGV4dENv
bXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25Ob25lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwg
Y29tbWFuZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRp
b25zIG9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29t
bWFuZCwgdGV4dCwgb3B0aW9ucywgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBpbmdDb21tYW5kKGRvY3VtZW50
LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9CiAKICAgICBUeXBpbmdDb21tYW5kKERv
Y3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucywgVGV4
dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxLDEyMCArMjcxLDEyMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5k
RW5kRnJvCiAgICAgfQogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFu
c2lvbi4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eTog
ewotICAgICAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBTZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0
IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkuCi0gICAgICAgICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBh
ZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgc29mdC13cmFwcGVkIGxpbmUgb3IgdGhlIGxhc3Qgd29y
ZCBpbgotICAgICAgICAgICAgLy8gdGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBsYXN0IHdvcmQg
KExlZnRXb3JkSWZPbkJvdW5kYXJ5KS4KLSAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhl
IGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgsIHNlbGVjdCBmcm9t
IHRoZSBlbmQgb2YgdGhlCi0gICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJl
YWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Ci0g
ICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAgICAg
ICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChzdGFydCkgfHwg
KGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGluZShzdGFydCkgJiYgIWlzRW5kT2ZQ
YXJhZ3JhcGgoc3RhcnQpKSkKLSAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91
bmRhcnk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQsIHNpZGUpLmRl
ZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9y
aWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5l
KG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRPZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQotICAgICAg
ICAgICAgICAgIHNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChvcmlnaW5hbEVu
ZCwgc2lkZSkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCh3b3JkRW5kKTsKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIC8v
IERvbid0IGRvIGFueSBleHBhbnNpb24uCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBT
ZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0
aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQg
bGluZSBvciB0aGUgbGFzdCB3b3JkIGluCisgICAgICAgIC8vIHRoZSBkb2N1bWVudCwgc2VsZWN0
IHRoYXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2Ug
Y2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgs
IHNlbGVjdCBmcm9tIHRoZSBlbmQgb2YgdGhlCisgICAgICAgIC8vIGxhc3Qgd29yZCB0byB0aGUg
bGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIEVXb3JkU2lkZSBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICBp
ZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoc3RhcnQpIHx8IChpc0VuZE9m
TGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHN0YXJ0KSkpCisgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAg
ICAgIG1fc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgaWYgKGlzRW5k
T2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9yaWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxp
bmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRP
ZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQorICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZP
bkJvdW5kYXJ5OworCisgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChv
cmlnaW5hbEVuZCwgc2lkZSkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kKHdvcmRFbmQp
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxFbmQpICYm
ICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIC8vIFNlbGVjdCB0aGUgcGFyYWdyYXBoIGJyZWFrICh0aGUgc3BhY2UgZnJvbSB0aGUgZW5k
IG9mIGEgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiAKKyAgICAgICAgICAgIC8vIHRoZSBuZXh0
IG9uZSkgdG8gbWF0Y2ggVGV4dEVkaXQuCisgICAgICAgICAgICBlbmQgPSB3b3JkRW5kLm5leHQo
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2lu
YWxFbmQpICYmICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHBhcmFncmFwaCBicmVhayAodGhlIHNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgCi0gICAgICAgICAg
ICAgICAgLy8gdGhlIG5leHQgb25lKSB0byBtYXRjaCBUZXh0RWRpdC4KLSAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kLm5leHQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBw
YXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhIGJsb2NrIHRhYmxlIGVuZHMKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhlIHRh
YmxlLgotICAgICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IHdvcmRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IC8vIEVuZCBtdXN0IG5vdCBiZSBiZWZvcmUgc3RhcnQuCi0gICAgICAgICAgICBpZiAobV9zdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkgewotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGFydCA9IG1fZW5kOyAgICAKLSAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7
ICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OiB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3Rh
cnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKLSAgICAg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9h
ZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOwotICAg
ICAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlzIGxpbmUgaXMgYXQgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCi0gICAgICAgICAgICAvLyBhZnRlciB0aGUgZW5k
IG9mIHRoZSBsaW5lIGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChlbmQpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSBl
bmQubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0LmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBuZXh0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9l
bmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0
T2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxl
bnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2Vu
ZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eTogewotICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXJ0
T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zKSkK
LSAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKLSAgICAgICAgICAgIG1fc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAotICAgICAgICAgICAgLy8gb2YgdGhl
IG5leHQgb25lKSBpbiB0aGUgc2VsZWN0aW9uLgotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCh2aXNpYmxlUGFyYWdyYXBoRW5kLm5leHQoKSk7Ci0gICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
ZW5kKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0ZXIgdGhl
IGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBlbmRzCi0g
ICAgICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhl
IHRhYmxlLCBub3QgYXQgdGhlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgdGhlIHRhYmxlLgorICAgICAg
ICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGFmdGVyIHRoZSB0YWJs
ZS4KICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLSAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBh
cmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQ7
CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQ7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKKyAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9lbmQgPSBl
bmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
RG9jdW1lbnQobV9zdGFydC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5kLmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
LSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbiht
X3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5p
dHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9yZSBzdGFydC4K
KyAgICAgICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVk
Tm9kZSgpICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFy
dCk7CisgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAgIAorICAgICAgICAgICAgbV9lbmQg
PSBzd2FwOyAgICAKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgbV9zdGFydCA9
IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
ID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOworICAgICAg
ICAvLyBJZiB0aGUgZW5kIG9mIHRoaXMgbGluZSBpcyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LCBpbmNsdWRlIHRoZSBzcGFjZSAKKyAgICAgICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGlu
ZSBpbiB0aGUgc2VsZWN0aW9uLgorICAgICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmQpKSB7
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IGVuZC5uZXh0KCk7CisgICAgICAg
ICAgICBpZiAobmV4dC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBuZXh0Owor
ICAgICAgICB9CisgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5Ogor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHk6IHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsK
KyAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChwb3MpKQorICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Cisg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFn
cmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAorICAgICAgICAvLyBvZiB0aGUgbmV4
dCBvbmUpIGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQodmlz
aWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOworCisgICAgICAgIGlmIChOb2RlKiB0YWJsZSA9IGlz
Rmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoZW5kKSkgeworICAgICAgICAgICAgLy8gVGhlIHBhcmFn
cmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IGJsb2NrIHRhYmxlIGVuZHMKKyAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFy
YWdyYXBoIGFmdGVyIHRoZSB0YWJsZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRo
ZSB0YWJsZS4KKyAgICAgICAgICAgIGlmIChpc0Jsb2NrKHRhYmxlKSkKKyAgICAgICAgICAgICAg
ICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgICAgICAg
ICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFw
aCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxlUGFyYWdyYXBoRW5kOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVuZC5pc051bGwoKSkKKyAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJh
Z3JhcGhFbmQ7CisKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1lbnQo
KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5k
LmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0
YXJ0T2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgICAgICBt
X3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmlu
aXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZp
c2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhIGRhbmdsaW5nIHN0YXJ0IG9y
IGVuZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiVGV4dEdy
YW51bGFyaXR5LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNiw3IEBA
IGNsYXNzIFBvc2l0aW9uOwogc3RydWN0IFNpbXBsZVJhbmdlOwogCiBjb25zdCBFQWZmaW5pdHkg
U0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOwotZW51bSBTZWxlY3Rpb25EaXJlY3Rp
b24gOiB1aW50OF90IHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVj
dGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlv
biA6IHVpbnQ4X3QgeyBGb3J3YXJkLCBCYWNrd2FyZCwgUmlnaHQsIExlZnQgfTsKIAogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5ID0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAvLyBTdXBw
b3J0IG1ldGhvZHMgZm9yIHZhbGlkYXRlKCkKICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnRUb0Rl
ZXBFcXVpdmFsZW50cygpOwpAQCAtMTY0LDMgKzE2NSwxNyBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yCiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mKTsKIHZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiopOwogI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLAorICAgICAgICBXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLAorICAgICAgICBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0LAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NTgsMjAgKzE1NTgsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29u
cwogCiBzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkKQor
ICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3
YXJkKQorICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgZG9lc24ndCB0
YWtlIGludG8gYWNjb3VudCB0aGUgb3JpZ2luYWwgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50Lgog
ICAgIC8vIEknbSBub3QgZml4aW5nIHRoaXMgbm93IGJlY2F1c2UgSSdtIGFmcmFpZCB0aGVyZSBp
cyBzb21lIGNvZGUgaW4gVUlLaXQgcmVseWluZyBvbgogICAgIC8vIHRoaXMgd3JvbmcgYmVoYXZp
b3IuCi0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodDsKKyAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiB9CiAKIGJvb2wgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlm
IChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnk7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAgICAgYm9v
bCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gdmlzaWJs
ZV91bml0cyBjbGFpbXMgZXJyb25lb3VzbHkgdGhhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQKICAg
ICAgICAgLy8gb2YgYSBwYXJhZ3JhcGggYXJlIHRoZSBlbmQgYW5kIHN0YXJ0IG9mIGEgd29yZCwg
cmVzcGVjdGl2ZWx5LgogICAgICAgICBpZiAoKHVzZURvd25zdHJlYW0gJiYgaXNTdGFydE9mUGFy
YWdyYXBoKHZwKSkgfHwgKCF1c2VEb3duc3RyZWFtICYmIGlzRW5kT2ZQYXJhZ3JhcGgodnApKSkK
QEAgLTE1ODksMjIgKzE1ODksMjIgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25z
dCBWaXNpYgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZldvcmQodnAs
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
Ym91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZShwcmV2aW91c1NlbnRlbmNl
UG9zaXRpb24odnApKSA6IHN0YXJ0T2ZTZW50ZW5jZShuZXh0U2VudGVuY2VQb3NpdGlvbih2cCkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEFmZmluaXR5IGhh
cyB0byBiZSBzZXQgdG8gZ2V0IHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSBsaW5lLgogICAgICAgICBi
b3VuZGFyeSA9IHZwOwogICAgICAgICBib3VuZGFyeS5zZXRBZmZpbml0eSh1c2VEb3duc3RyZWFt
ID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNKTsKICAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZMaW5lKGJvdW5kYXJ5KSA6IHN0YXJ0T2ZMaW5lKGJv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRP
ZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBEb2N1bWVudEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5Ogog
ICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0
YXJ0T2ZEb2N1bWVudCh2cCk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNjE4LDcgKzE2MTgsNyBA
QCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAKIGJvb2wgd2l0aGlu
VGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkg
PT0gRG9jdW1lbnRHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ym9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CkBA
IC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25z
dCBWCiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeTsKICAgICAKICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0
IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9w
cmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBM
ZWZ0V29yZElmT25Cb3VuZGFyeSkpOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQo
dnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9u
Qm91bmRhcnkpKTsKQEAgLTE2MzgsMTIgKzE2MzgsMTIgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9m
R3JhbnVsYXJpdHkoY29uc3QgVgogCiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFy
aXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOwogICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CiAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7CiAKQEAgLTE2NTUsNyArMTY1NSw3IEBA
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQ
YXJhZ3JhcGgodnApOwogICAgICAgICBicmVhazsKQEAgLTE2ODUsNyArMTY4NSw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJvdW4KIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dFdvcmRCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgYm9vbCB1c2VEb3duc3RyZWFt
ID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7Ci0gICAgYm9vbCB3aXRoaW5Vbml0
T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgV29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAgICAgCiAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKQEAgLTE3NTksNyArMTc1OSw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9
IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwotICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3Jh
bnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAK
ICAgICBpZiAod2l0aGluVW5pdE9mR3JhbnVsYXJpdHkpCkBAIC0xODAxLDkgKzE4MDEsOSBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhCb3VuCiB7CiAgICAgYXV0byB1c2VE
b3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAgICAgYXV0byBs
aW5lRGlyZWN0aW9uID0gcG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rp
b25OYXZpZ2F0aW9uKCk7Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbikpCiAgICAgICAgIHJldHVybiB1c2VEb3duc3RyZWFtID8gc3RhcnRPZlBh
cmFncmFwaChuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVEaXJlY3Rpb24pKSA6
IGVuZE9mUGFyYWdyYXBoKHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVE
aXJlY3Rpb24pKTsKLSAgICBBU1NFUlQod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgQVNTRVJUKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CiAgICAgcmV0dXJuIHVzZURvd25zdHJlYW0gPyBl
bmRPZlBhcmFncmFwaChwb3NpdGlvbikgOiBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKTsKIH0K
IApAQCAtMTgxNSwxNyArMTgxNSwxNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHREb2N1
bWVudEJvdW5kCiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRDaGFy
YWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24sIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dFdvcmRCb3VuZGFyeUlu
RGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
cmV0dXJuIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbih2
cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5l
eHRQYXJhZ3JhcGhCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHREb2N1bWVudEJvdW5kYXJ5SW5EaXJlY3Rp
b24odnAsIGRpcmVjdGlvbik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xODQ0LDUyICsxODQ0LDUyIEBAIFJlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGEKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oZGlyZWN0aW9uKTsKIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHZw
OwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgotICAgICAgICAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKLSAgICAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZX
b3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHZwOworICAgICAgICBuZXh0Qm91
bmRhcnkgPSBwcmV2Qm91bmRhcnkubmV4dCgpOworICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mU2VudGVuY2UodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5j
ZSh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKLSAgICAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7Ci0KLSAgICAgICAgICAgIGlmIChwcmV2
Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5l
eHRCb3VuZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
blNhbWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKLSAgICAgICAgICAgICAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gdnAubmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAgICAgICBp
ZiAodXNlRG93bnN0cmVhbSkgeworICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldv
cmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0
V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZQYXJhZ3JhcGgodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJh
Z3JhcGgodnApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkRvY3VtZW50KHZw
KTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1lbnQodnApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2Uo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKKworICAgICAgICBpZiAocHJldkJvdW5k
YXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExp
bmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNl
dEFmZmluaXR5KFVQU1RSRUFNKTsKKyAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gdnAu
bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJhZ3JhcGgo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVu
dEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mRG9jdW1lbnQodnAp
OworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50KHZwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKHByZXZCb3VuZGFyeS5pc051bGwo
KSB8fCBuZXh0Qm91bmRhcnkuaXNOdWxsKCkpCkBAIC0xOTIxLDE0ICsxOTIxLDE0IEBAIHZvaWQg
Y2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2kKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IHBvc2l0aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRD
aGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBp
ZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQ
b3NpdGlvbjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENo
YXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
UG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwog
ICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwotICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gbmV4
dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwgRGlyZWN0aW9u
QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHByZXZpb3VzUG9zaXRp
b24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKICAgICB9CkBAIC0xOTUyLDEx
ICsxOTUyLDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQpOwogCiAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBhdCB0aGUg
c3RhcnQgb2YgYSB3b3JkLCB0cnkgZm9yd2FyZC4KLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCkBAIC0xOTY0LDExICsx
OTY0LDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKIAogICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBkbyB7Ci0g
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7
Ci0gICAgfSB3aGlsZSAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
QmFja3dhcmQpKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CisgICAgfSB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShj
dXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAKICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTnVs
bCgpKQotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51
bGwoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHBv
c2l0aW9uKTsKQEAgLTE5ODMsMjMgKzE5ODMsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RX
b3JkQm91bmRhcnlGb3JQbwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAKICAgICAvLyBt
b3ZlIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB3b3JkCi0gICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkg
ewogICAgICAgICAvLyBEb24ndCBjcm9zcyBsaW5lIGJvdW5kYXJpZXMuCiAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uOwotICAgIH0gZWxzZSBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgfSBl
bHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAg
ICAgICAgIC8vIFRoZSBwb3NpdGlvbiBsaWVzIHdpdGhpbiBhIHdvcmQuCi0gICAgICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBSZWZQdHI8
UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlv
biwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCk7CiAKICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkg
PiAxKQogICAgICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAg
IH0gZWxzZSBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKSB7CisgICAgfSBlbHNlIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKSB7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBp
cyBhdCB0aGUgZW5kIG9mIGEgd29yZC4KICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gYSB3b3JkLgog
ICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBib3VuZGFyeS4KLSAgICAgICAgcmVzdWx0ID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBzdWNoIGJvdW5kYXJ5IHdlIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCiAg
ICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBAIC0yMDEzLDE1ICsyMDEzLDE1IEBAIFJlZlB0
cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0kKICAgICBQb3NpdGlvbiBzdGFydCA9
IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gcG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFj
dGVyc1RvRXhwYW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25C
YWNrd2FyZCkKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkKQogICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDaGFyYWN0ZXIpOwogICAg
IH0KICAgICAKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkICYmICFhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNr
d2FyZCkpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJk
ICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICBzdGFy
dCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0KS5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlmIChkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uRm9yd2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kLCBX
b3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChkaXJlY3Rpb24gPT0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
bmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQpKQogICAgICAgICBlbmQgPSBlbmRPZldvcmQoZW5kKS5kZWVwRXF1aXZhbGVudCgp
OwogCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFydCwgZW5kKTsKQEAgLTIwNDEsMTIgKzIwNDEs
MTIgQEAgUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpbwogCiBzdGQ6OnBh
aXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uV2l0aG91dENyb3NzaW5nTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogewotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpKQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29y
ZEJvdW5kYXJ5OjpObyB9OwogCi0gICAgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgIGlmICh3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgIGF1
dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICBpZiAoYXV0byB3b3JkUmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0g
ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAg
ICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAg
ICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgYWRqdXN0ZWRQ
b3NpdGlvbikgPiAxKQogICAgICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSB3b3JkUmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CkBAIC0yMDU0LDEwICsyMDU0LDEwIEBAIHN0ZDo6cGFpcjxWaXNp
YmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3UKICAgICAgICAgcmV0dXJuIHsgYWRqdXN0ZWRQb3Np
dGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpZZXMgfTsKICAgICB9CiAKLSAgICBpZiAoYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpKQorICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQp
KQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpObyB9Owog
Ci0gICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIHJldHVybiB7IG5leHRXb3JkQm91bmRhcnkuaXNO
b3ROdWxsKCkgPyBuZXh0V29yZEJvdW5kYXJ5IDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRp
b24pLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVj
dGlvbjo6ZGUKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgICAgICBjb250ZXh0UmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgICAgIGNvbnRleHRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCk7CiAgICAgfQogCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZp
c2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGQ6OnR1cGxlPFJl
ZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIGhpdEluZGV4ID0gY2hhcmFjdGVy
Q291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoU3RhcnQpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocG9zaXRpb24pIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcyB7IHBvc2l0aW9uIH07Ci0gICAgICAg
IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVz
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogICAgICAgICBwb3NpdGlvbiA9IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuc3Rh
cnQoKTsKIAogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBj
aGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIHJldHVybiBy
YW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKLSAgICBzZWxlY3Rpb25B
Y2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFy
aXR5KTsKKyAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIHBvc2l0aW9u
ID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgpOwogCiAgICAgLy8gQXMg
Y29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTIsMTQgKzY1MiwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzCiAgICAgICAgIGJvb2wgZm9yY2luZ1BlbmRp
bmdQb2xpY3kgPSBmcmFtZS0+c2V0dGluZ3MoKS5pc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCk7
CiAKICAgICAgICAgaWYgKGZvcmNpbmdQZW5kaW5nUG9saWN5IHx8IChwYWdlICYmICF0b3BEb2N1
bWVudC51cmwoKS5pc0xvY2FsRmlsZSgpKSkgewotICAgICAgICAgICAgV2ViR0xMb2FkUG9saWN5
IHBvbGljeSA9IGZvcmNpbmdQZW5kaW5nUG9saWN5ID8gV2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS53ZWJHTFBvbGljeUZvclVSTCh0b3BE
b2N1bWVudC51cmwoKSk7CisgICAgICAgICAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5ID0gZm9y
Y2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9u
IDogcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkud2ViR0xQb2xpY3lGb3JVUkwo
dG9wRG9jdW1lbnQudXJsKCkpOwogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMQmxv
Y2tDcmVhdGlvbikgeworICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQmxvY2tDcmVhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRoZSBw
b2xpY3kgZm9yIHRoaXMgVVJMICglcykgaXMgdG8gYmxvY2sgV2ViR0wuIiwgdG9wRG9jdW1lbnQu
dXJsKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMUGVu
ZGluZ0NyZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMTG9hZFBvbGlj
eTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJX
ZWJHTCBwb2xpY3kgaXMgcGVuZGluZy4gTWF5IG5lZWQgdG8gYmUgcmVzb2x2ZWQgbGF0ZXIuIik7
CiAgICAgICAgICAgICAgICAgaXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbiA9IHRydWU7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw4ICszMzksOCBAQCBwdWJsaWM6CiAgICAg
Ly8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNpZGUgdGhpcyBm
cmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAogICAgIC8vIG5vdGlmaWNhdGlvbiB3aXRoIHRo
ZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAoc2VlIEV4dGVu
c2lvbnNHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsg
fQotICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVS
TCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQotICAgIHZpcnR1YWwgV2Vi
R0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7
IHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KKyAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGlj
eSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJH
TExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgY29tcGxldGVQYWdlVHJhbnNpdGlvbklmTmVlZGVkKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3NCw3ICsxNzQsNyBAQCBlbnVtIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
CiAgICAgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwKIH07CiAKLWVudW0gV2Vi
R0xMb2FkUG9saWN5IHsKK2VudW0gY2xhc3MgV2ViR0xMb2FkUG9saWN5IDogdWludDhfdCB7CiAg
ICAgV2ViR0xCbG9ja0NyZWF0aW9uLAogICAgIFdlYkdMQWxsb3dDcmVhdGlvbiwKICAgICBXZWJH
TFBlbmRpbmdDcmVhdGlvbgpAQCAtMjIyLDEyICsyMjIsMTIgQEAgT3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IFN5c3RlbVByZXZpZQogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqZWxlbWVudCks
IFdURk1vdmUoKnByZXZpZXdSZWN0KSwgV1RGTW92ZSgqaXNQcmV2aWV3KSB9IH07CiB9CiAKLWVu
dW0gY2xhc3MgTG9hZENvbXBsZXRpb25UeXBlIDogdWludDhfdCB7CitlbnVtIGNsYXNzIExvYWRD
b21wbGV0aW9uVHlwZSA6IGJvb2wgewogICAgIEZpbmlzaCwKICAgICBDYW5jZWwKIH07CiAKLWVu
dW0gY2xhc3MgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiB1aW50OF90IHsKK2VudW0gY2xhc3Mg
QWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiBib29sIHsKICAgICBZZXMsCiAgICAgTm8sCiB9OwpA
QCAtMjcxLDExICsyNzEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpTaAogICAgID47CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8Ci0gICAgICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0LAotICAgICAgICBX
ZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzLAotICAgICAgICBXZWJDb3JlOjpB
bGxvd3NDb250ZW50SmF2YVNjcmlwdDo6Tm8KKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5LAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24s
CisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24K
ICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SQogICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0
aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rp
b24uaXNDYXJldE9yUmFuZ2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3
b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgICAgICAgICAgICAgIHdvcmRTZWxl
Y3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbih3b3JkU2VsZWN0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS5sZW5ndGgo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NiwzNSArMjQ2LDM1IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2RpZnkoY29uc3Qg
U3RyaW5nJiAKIAogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImZvcndhcmQiKSkK
LSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgZGlyZWN0aW9u
ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImJhY2t3YXJkIikpCi0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJkOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQiKSkKLSAgICAgICAgZGlyZWN0aW9u
ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVj
dGlvblN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvblJpZ2h0
OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5Owog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywg
ImNoYXJhY3RlciIpKQotICAgICAgICBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVs
YXJpdHlTdHJpbmcsICJ3b3JkIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gV29yZEdyYW51bGFy
aXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFy
aXR5U3RyaW5nLCAic2VudGVuY2UiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdy
YW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShncmFudWxhcml0eVN0cmluZywgImxpbmUiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBMaW5l
R3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5l
R3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Z3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGgiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBQ
YXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZWJvdW5kYXJ5IikpCi0gICAgICAg
IGdyYW51bGFyaXR5ID0gTGluZUJvdW5kYXJ5OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAic2VudGVuY2Vib3VuZGFyeSIpKQot
ICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNlQm91bmRhcnk7CisgICAgICAgIGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk7CisgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnkiKSkKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGhib3VuZGFyeSIpKQotICAg
ICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEJvdW5kYXJ5OworICAgICAgICBncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJkb2N1bWVudGJv
dW5kYXJ5IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gRG9jdW1lbnRCb3VuZGFyeTsKKyAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk7CiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIC8vIE5TVGV4dFZp
ZXcgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3ZpbmcgYSBzZWxlY3Rp
b24sCiAgICAgICAgICAgICAvLyBidXQgb25seSB0byBzbWFydCBpbnNlcnQgaWYgdGhlIHNlbGVj
dGlvbiBncmFudWxhcml0eSBpcyB3b3JkIGdyYW51bGFyaXR5LgogICAgICAgICAgICAgYm9vbCBz
bWFydERlbGV0ZSA9IGVkaXRvci5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLSAgICAgICAg
ICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAmJiBpbm5lckZyYW1lLT5zZWxlY3Rp
b24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSAmJiBkcmFnRGF0YS5jYW5TbWFy
dFJlcGxhY2UoKTsKKyAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAm
JiBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgICAg
ICAgICAgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudC5yZWxlYXNlTm9uTnVs
bCgpLCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpLT5hcHBseSgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KGlubmVyRnJhbWUuZ2V0KCksIGRyYWdDYXJldCwgcG9pbnQpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91CiAgICAgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgIG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlID0g
RXh0ZW5kZWRTZWxlY3Rpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hh
cmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0aWF0aW9uU3Rh
dGUgPSBQbGFjZWRDYXJldDsKICAgICB9CiAKQEAgLTU2MCwxMyArNTYwLDEzIEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb20KICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2Nh
bFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKHBvcy5pc05vdE51bGwoKSkgewogICAg
ICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwotICAgICAgICAg
ICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYm
IG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5k
VHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VE
b3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jl
c3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdy
YW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hp
bmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RP
bk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApAQCAtNjAxLDE0ICs2MDEsMTQgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3Vs
dC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmIChwb3MuaXNOb3ROdWxs
KCkpIHsKICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBv
cyk7Ci0gICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNp
bmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYmIG5ld1NlbGVjdGlv
bi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5kVHJhaWxpbmdXaGl0
ZXNwYWNlKCk7CiAgICAgICAgIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25E
aXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVj
dFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVs
YXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1Nl
bGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91
c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSk7CiAgICAgfQogfQogICAgIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHUKICAgICAgICAgaWYgKHBvcy5pc05vdE51
bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRh
bnRPZigqdXJsRWxlbWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUodXJsRWxlbWVudCk7CiAKLSAgICAg
ICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJn
ZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0
Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2Vs
ZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBh
bmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2Vs
ZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApA
QCAtNjY3LDEwICs2NjcsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NF
dmVudAogICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zKTsKLSAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoUGFyYWdy
YXBoR3JhbnVsYXJpdHkpOworICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxh
cml0eShUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KTsKICAgICB9CiAKLSAg
ICByZXR1cm4gdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFy
dCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigq
dGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdyYXBoR3JhbnVsYXJpdHkpOworICAgIHJl
dHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRh
cmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJn
ZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5KTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC03MTAsNyArNzEwLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIFBvc2l0aW9uIHBvcyA9IHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdT
ZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHk7CiAKICAgICBpZiAoIW1fZnJhbWUuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZEFsbG93U2lu
Z2xlQ2xpY2tUb0NoYW5nZVNlbGVjdGlvbigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC03MzgsNyArNzM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5ld1Nl
bGVjdGlvbi5zZXRFeHRlbnQocG9zKTsKIAotICAgICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24o
KS5ncmFudWxhcml0eSgpICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CisgICAgICAgIGlmICht
X2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0gVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBtX2ZyYW1lLnNl
bGVjdGlvbigpLmdyYW51bGFyaXR5KCk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkpOwogICAg
ICAgICB9CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Vs
ZWN0aW9uRm9yTW91CiAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudCh0YXJnZXRQb3NpdGlvbik7
CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVs
YXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQogICAgICAg
ICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigp
LmdyYW51bGFyaXR5KCkpOwogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb25C
eU1vdXNlSWZEaWZmZXJlbnQobmV3U2VsZWN0aW9uLCBtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51
bGFyaXR5KCksCkBAIC0zNTE2LDE1ICszNTE2LDE1IEBAIHN0YXRpYyB2b2lkIHNldEluaXRpYWxL
ZXlib2FyZFNlbGVjdGlvbigKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uOwog
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgot
ICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlmIChm
b2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9IFZpc2libGVQb3Np
dGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gZW5kT2ZEb2N1bWVudChkb2N1bWVudCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKLSAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgorICAgIGNh
c2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50
KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9u
QWZ0ZXJOb2RlKGZvY3VzZWRFbGVtZW50KSk7CiAgICAgICAgIGVsc2UKQEAgLTM1NDUsOCArMzU0
NSw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW0KICAgICBib29s
IGlzU2VsZWN0aW9uID0gIXNlbGVjdGlvbi5pc05vbmUoKTsKIAogICAgIEZyYW1lU2VsZWN0aW9u
OjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIlNoaWZ0
IikgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gRGlyZWN0
aW9uRm9yd2FyZDsKLSAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eTsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOworICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBzd2l0Y2ggKGZvY3Vz
RGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50aWZpZXIoKSkpIHsKICAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uTm9uZToKQEAgLTM1NTYsMjAgKzM1NTYsMjAgQEAgc3RhdGljIHZvaWQgaGFuZGxl
S2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKLSAgICAgICAgZGlyZWN0
aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5k
ZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgICAgICBncmFudWxhcml0eSA9
IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdy
YW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25Eb3duOgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOwot
ICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gRG9jdW1lbnRCb3VuZGFyeSA6IExp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFy
aXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgotICAgICAgICBk
aXJlY3Rpb24gPSBEaXJlY3Rpb25MZWZ0OwotICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1h
bmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0
aW9uOjpMZWZ0OworICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1hbmRlZCkgPyBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5IDogVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgotICAgICAgICBk
aXJlY3Rpb24gPSBEaXJlY3Rpb25SaWdodDsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSAoaXNDb21t
YW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDog
Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVj
dGlvbjo6UmlnaHQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3
OSw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm0KICAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxS
YW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIFJlZlB0cjxSYW5nZT4g
d29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
KTsKICAgICBpZiAoIXdvcmRSYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wNS0xNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNlcmlhbGl6YXRp
b24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBTaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJHTExvYWRQb2xpY3kpOgorICAgICAg
ICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExv
YWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHNlbGVjdEZvcldlYlZpZXc6XSk6CisgICAgICAgICh0b1VJV0tTZWxl
Y3Rpb25GbGFncyk6CisgICAgICAgICh0b1NlbGVjdGlvbkZsYWdzKToKKyAgICAgICAgKHRvV0tU
ZXh0R3JhbnVsYXJpdHkpOgorICAgICAgICAodG9XS1NlbGVjdGlvbkRpcmVjdGlvbik6CisgICAg
ICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUpOgorICAgICAgICAoc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaCk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9u
V2l0aEdlc3R1cmVBdDp3aXRoR2VzdHVyZTp3aXRoU3RhdGU6d2l0aEZsYWdzOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OndpdGhTZWxlY3Rp
b25Ub3VjaDpiYXNlSXNTdGFydDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOnRvOndpdGhHZXN0dXJlOndpdGhTdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRo
VHdvVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIHJh
bmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczppbkRpcmVjdGlvbjpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5
Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
c29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZv
clVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0
V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpyYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9p
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29y
cmVjdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXV0b2NvcnJlY3Rp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6ZGF0YURldGVjdG9yTGlua1Bvc2l0aW9uSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdX
b3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisKIDIw
MjAtMDUtMTQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlZCwgbWlkIE1heSAyMDIwIGVkaXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkocmV2aXNpb24gMjYx
Njk0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNjE1LDYgKzYxNSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgog
ICAgICAgICAnV2ViQ29yZTo6UmVjZW50U2VhcmNoJzogWyc8V2ViQ29yZS9TZWFyY2hQb3B1cE1l
bnUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSc6IFsnPFdlYkNv
cmUvQXVkaW9TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKKyAgICAg
ICAgJ1dlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbic6IFsnPFdlYkNvcmUvVmlzaWJsZVNlbGVj
dGlvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIn
OiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+JywgJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+JywgJzxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJEYXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nLCAnPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4nXSwKQEAgLTYzOSwxNyArNjQw
LDIyIEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUnOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyc6IFsnPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKKyAgICAgICAg
J1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyc6IFsnPFdlYkNvcmUv
RnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6
IFsnIkVkaXRvclN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktp
dDo6Q29udGVudFdvcmxkSWRlbnRpZmllcicgOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwK
KyAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3Js
ZFNoYXJlZC5oIiddLAorICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzog
WyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyci
R2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJ
RCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJI
b3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQ
YXlQYXltZW50U2V0dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNw
ZWN0U2VsZWN0aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJL
aXQ6OlNlbGVjdGlvbkZsYWdzJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJL
aXQ6OlNlbGVjdGlvblRvdWNoJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OldlYkdlc3R1cmVFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OldlYktleWJvYXJkRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Qg
ewogCiAgICAgT3B0aW9uU2V0PE9wdGlvbnM+IG9wdGlvbnM7CiAKLSAgICBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHkgc3Vycm91bmRpbmdHcmFudWxhcml0eSB7IFdlYkNvcmU6OkNoYXJhY3Rlckdy
YW51bGFyaXR5IH07CisgICAgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IHN1cnJvdW5kaW5nR3Jh
bnVsYXJpdHkgeyBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
IH07CiAgICAgaW50NjRfdCBncmFudWxhcml0eUNvdW50IHsgMCB9OwogCiAgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IHJlY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5
cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0dlc3R1cmVUeXBl
cy5oCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVy
ZVR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMywxMyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgR2VzdHVyZVR5cGVzX2gKLSNk
ZWZpbmUgR2VzdHVyZVR5cGVzX2gKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgR2VzdHVyZVR5cGUg
eworZW51bSBjbGFzcyBHZXN0dXJlVHlwZSA6IHVpbnQ4X3QgewogICAgIExvdXBlLAogICAgIE9u
ZUZpbmdlclRhcCwKICAgICBUYXBBbmRBSGFsZiwKQEAgLTQ1LDcgKzQ2LDcgQEAgZW51bSBjbGFz
cyBHZXN0dXJlVHlwZSB7CiAgICAgUGhyYXNlQm91bmRhcnkKIH07CiAKLWVudW0gY2xhc3MgU2Vs
ZWN0aW9uVG91Y2ggeworZW51bSBjbGFzcyBTZWxlY3Rpb25Ub3VjaCA6IHVpbnQ4X3QgewogICAg
IFN0YXJ0ZWQsCiAgICAgTW92ZWQsCiAgICAgRW5kZWQsCkBAIC01NCwyMyArNTUsMjEgQEAgZW51
bSBjbGFzcyBTZWxlY3Rpb25Ub3VjaCB7CiAgICAgRW5kZWROb3RNb3ZpbmcKIH07CiAKLWVudW0g
Y2xhc3MgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVSZWNvZ25p
emVyU3RhdGUgOiB1aW50OF90IHsKICAgICBQb3NzaWJsZSwKICAgICBCZWdhbiwKICAgICBDaGFu
Z2VkLAogICAgIEVuZGVkLAogICAgIENhbmNlbGxlZCwKLSAgICBGYWlsZWQsCi0gICAgUmVjb2du
aXplZCA9IEVuZGVkCisgICAgRmFpbGVkCiB9OwogCi1lbnVtIGNsYXNzIFNoZWV0QWN0aW9uIHsK
K2VudW0gY2xhc3MgU2hlZXRBY3Rpb24gOiBib29sIHsKICAgICBDb3B5LAogICAgIFNhdmVJbWFn
ZQogfTsKIAotZW51bSBTZWxlY3Rpb25GbGFncyB7Ci0gICAgTm9uZSA9IDAsCitlbnVtIFNlbGVj
dGlvbkZsYWdzIDogdWludDhfdCB7CiAgICAgV29yZElzTmVhclRhcCA9IDEgPDwgMCwKICAgICBQ
aHJhc2VCb3VuZGFyeUNoYW5nZWQgPSAxIDw8IDEsCiB9OwpAQCAtODIsNCArODEsNTEgQEAgZW51
bSBjbGFzcyBSZXNwZWN0U2VsZWN0aW9uQW5jaG9yIDogYm9vbAogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAotI2VuZGlmIC8vIEdlc3R1cmVUeXBlc19oCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okdlc3R1cmVUeXBlPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZSwKKyAg
ICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6TG91cGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVy
ZVR5cGU6Ok9uZUZpbmdlclRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwQW5k
QUhhbGYsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OkRvdWJsZVRhcCwKKyAgICAgICAg
V2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwQW5kSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJl
VHlwZTo6RG91YmxlVGFwSW5VbmVkaXRhYmxlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBl
OjpPbmVGaW5nZXJUYXBJblVuZWRpdGFibGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6
Ok9uZUZpbmdlclRhcFNlbGVjdHNBbGwsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9u
ZUZpbmdlckRvdWJsZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2Vy
VHJpcGxlVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVU
YXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclJhbmdlZFNlbGVjdEdl
c3R1cmUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlRhcE9uTGlua1dpdGhHZXN0dXJl
LAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeQorICAgID47Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6U2VsZWN0aW9uVG91Y2g+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6OlNlbGVj
dGlvblRvdWNoLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpTdGFydGVkLAorICAg
ICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpNb3ZlZCwKKyAgICAgICAgV2ViS2l0OjpTZWxl
Y3Rpb25Ub3VjaDo6RW5kZWQsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVk
TW92aW5nRm9yd2FyZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3Zp
bmdCYWNrd2FyZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWROb3RNb3Zp
bmcKKyAgICA+OworfTsKKworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwKKyAgICAgICAgV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0
dXJlUmVjb2duaXplclN0YXRlOjpCZWdhbiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2du
aXplclN0YXRlOjpDaGFuZ2VkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3Rh
dGU6OkVuZGVkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNhbmNl
bGxlZCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQKKyAg
ICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MzYsMTYgKzU3
MzYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2lmIEVO
QUJMRShXRUJHTCkKIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1
cmwsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKLSAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgq
dGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xp
Y3kpIG11dGFibGUgewotICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5
KSk7Ci0gICAgfSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRo
aXMsIHVybCwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX25h
dmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5
ID0gV1RGTW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAg
ICAgICAgcmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkpOwotICAgIH0pOworICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBX
VEZNb3ZlKHJlcGx5KSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIy
Myw4ICsyMjMsNiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwog
Y2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKIAotZW51bSBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50
OF90OwotCiBlbnVtIGNsYXNzIEF1dG9wbGF5RXZlbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgTG9ja0JhY2tGb3J3
YXJkTGlzdCA6IGJvb2w7CkBAIC0yMzIsNiArMjMwLDcgQEAgZW51bSBjbGFzcyBIYXNJbnNlY3Vy
ZUNvbnRlbnQgOiBib29sOwogZW51bSBjbGFzcyBNb3VzZUV2ZW50UG9saWN5IDogdWludDhfdDsK
IGVudW0gY2xhc3MgTm90aWZpY2F0aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3Mg
Um91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0aW9uRGlyZWN0
aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xh
c3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGlu
Z0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CkBAIC0yNDQsNiArMjQzLDcgQEAgc3RydWN0IENvbnRlbnRS
dWxlTGlzdFJlc3VsdHM7CiBzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb247CiBz
dHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVjdCBEcmFnSXRlbTsKK3N0cnVjdCBFbGVt
ZW50Q29udGV4dDsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2Vy
U2V0dGluZ3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKQEAgLTI3OSwxMCArMjc5
LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbAogdHlwZWRlZiBI
V05EIFBsYXRmb3JtVmlld1dpZGdldDsKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1z
dHJ1Y3QgRWxlbWVudENvbnRleHQ7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7
CkBAIC00MDUsOCArNDAxLDggQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9udElu
Zm8mLAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVp
bnQzMl90PiBHZXN0dXJlQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdD4gVG91Y2hlc0NhbGxiYWNrOwor
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJl
VHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4g
R2VzdHVyZUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4gVG91
Y2hlc0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q+Jj4gU2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTc1Niw5ICs3NTIsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOwogICAgIHZvaWQgd2lsbENvbW1pdExheWVy
VHJlZShUcmFuc2FjdGlvbklEKTsKIAotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25p
emVyU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50LCBTZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9p
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2Vs
ZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RX
aXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxl
Y3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKQEAgLTIwOTUsOCArMjA5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250QXRTZWxlY3Rp
b25DYWxsYmFjayhjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tJRCk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNr
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdG91
Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywg
dWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91
Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2VsZWN0aW9u
Q29udGV4dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcm
IGJlZm9yZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCBDYWxsYmFja0lEKTsKICAgICB2
b2lkIGludGVycHJldEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiwgYm9vbCBpc0NoYXJFdmVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxl
bWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQo
dWludDMyX3QgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3Ry
aW5nIHBsdWdpblVSTFN0cmluZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5n
LCBTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8v
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJH
TFBvbGljeUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgU3luY2hyb25v
dXMKLSAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKHVpbnQzMl90IGxv
YWRQb2xpY3kpIFN5bmNocm9ub3VzCisgICAgV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4g
KGVudW06dWludDhfdCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hy
b25vdXMKKyAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKGVudW06dWlu
dDhfdCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hyb25vdXMKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgRGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKHN0
cnVjdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICBEaWRSZWNl
aXZlRXZlbnQodWludDMyX3QgdHlwZSwgYm9vbCBoYW5kbGVkKQpAQCAtMTc3LDggKzE3Nyw4IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKICAgICBGb250QXR0cmlidXRlc0Nh
bGxiYWNrKHN0cnVjdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEdl
c3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQotICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWlu
dDhfdCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25T
ZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51
bTp1aW50OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBTZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5n
IGJlZm9yZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0
YXRlLCBib29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAg
IERpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTYs
MjUgKzQ5NiwyNSBAQCBpbmxpbmUgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHRvV2ViR0xMCiB7
CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKICAgICBjYXNlIGtXS1dlYkdMTG9hZFBv
bGljeUxvYWROb3JtYWxseToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVh
dGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogICAgIGNhc2Uga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2Uga1dLV2Vi
R0xMb2FkUG9saWN5UGVuZGluZzoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMUGVuZGlu
Z0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TFBlbmRpbmdDcmVhdGlvbjsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIGlubGluZSBX
S1dlYkdMTG9hZFBvbGljeSB0b0FQSShXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2Fk
UG9saWN5KQogewogICAgIHN3aXRjaCAod2ViR0xMb2FkUG9saWN5KSB7Ci0gICAgY2FzZSBXZWJD
b3JlOjpXZWJHTEFsbG93Q3JlYXRpb246CisgICAgY2FzZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3k6OldlYkdMQWxsb3dDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGlj
eUxvYWROb3JtYWxseTsKLSAgICBjYXNlIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjoKKyAg
ICBjYXNlIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOgogICAg
ICAgICByZXR1cm4ga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDsKLSAgICBjYXNlIFdlYkNvcmU6
OldlYkdMUGVuZGluZ0NyZWF0aW9uOgorICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
OjpXZWJHTFBlbmRpbmdDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGlj
eVBlbmRpbmc7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwOSwyMSArNDA5LDIxIEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJD
b3IKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5
QWxsb3dDcmVhdGlvbjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlv
bjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOwogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbjoKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2UgX1dL
V2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
V2ViR0xQZW5kaW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
IAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGlj
eShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdXZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViR0xBbGxvd0NyZWF0aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xMb2Fk
UG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00NDAsNyArNDQwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
Ogogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExv
YWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29u
c3QKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM1MTUsNyArMzUxNSw3IEBAIC0gKHZvaWQpc2VsZWN0Rm9yV2Vi
VmlldzooaWQpc2VuZGVyCiB7CiAgICAgW190ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgc2VsZWN0
V29yZF07CiAgICAgLy8gV2UgY2Fubm90IHVzZSBzZWxlY3RXb3JkIGNvbW1hbmQsIGJlY2F1c2Ug
d2Ugd2FudCB0byBiZSBhYmxlIHRvIHNlbGVjdCB0aGUgd29yZCBldmVuIHdoZW4gaXQgaXMgdGhl
IGxhc3QgaW4gdGhlIHBhcmFncmFwaC4KLSAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNv
cmU6OldvcmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKIC0gKHZvaWQpc2VsZWN0
QWxsRm9yV2ViVmlldzooaWQpc2VuZGVyCkBAIC0zODIzLDMyICszODIzLDQyIEBAIHN0YXRpYyBp
bmxpbmUgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHQKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxp
bmUgVUlXS1NlbGVjdGlvbkZsYWdzIHRvVUlXS1NlbGVjdGlvbkZsYWdzKFdlYktpdDo6U2VsZWN0
aW9uRmxhZ3MgZmxhZ3MpCitzdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rpb25GbGFncyB0b1VJV0tT
ZWxlY3Rpb25GbGFncyhPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MpCiB7
CiAgICAgTlNJbnRlZ2VyIHVpRmxhZ3MgPSBVSVdLTm9uZTsKLSAgICBpZiAoZmxhZ3MgJiBXZWJL
aXQ6OldvcmRJc05lYXJUYXApCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYktpdDo6V29yZElz
TmVhclRhcCkpCiAgICAgICAgIHVpRmxhZ3MgfD0gVUlXS1dvcmRJc05lYXJUYXA7Ci0gICAgaWYg
KGZsYWdzICYgV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpCisgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKFdlYktpdDo6UGhyYXNlQm91bmRhcnlDaGFuZ2VkKSkKICAgICAgICAgdWlGbGFncyB8
PSBVSVdLUGhyYXNlQm91bmRhcnlDaGFuZ2VkOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJ
V0tTZWxlY3Rpb25GbGFncz4odWlGbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0
PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IHRvU2VsZWN0aW9uRmxhZ3MoVUlXS1NlbGVjdGlvbkZs
YWdzIHVpRmxhZ3MpCit7CisgICAgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZs
YWdzOworICAgIGlmICh1aUZsYWdzICYgVUlXS1dvcmRJc05lYXJUYXApCisgICAgICAgIGZsYWdz
LmFkZChXZWJLaXQ6OldvcmRJc05lYXJUYXApOworICAgIGlmICh1aUZsYWdzICYgVUlXS1BocmFz
ZUJvdW5kYXJ5Q2hhbmdlZCkKKyAgICAgICAgZmxhZ3MuYWRkKFdlYktpdDo6UGhyYXNlQm91bmRh
cnlDaGFuZ2VkKTsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKIHN0YXRpYyBpbmxpbmUgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5IHRvV0tUZXh0R3JhbnVsYXJpdHkoVUlUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAgIGNhc2UgVUlU
ZXh0R3JhbnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpDaGFyYWN0
ZXJHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVdvcmQ6Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4
dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTZW50ZW5jZUdy
YW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlQYXJhZ3JhcGg6Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAg
Y2FzZSBVSVRleHRHcmFudWxhcml0eUxpbmU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpMaW5l
R3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5RG9jdW1lbnQ6Ci0gICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4g
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OwogICAgIH0KIH0K
IApAQCAtMzg1NywyOSArMzg2NywyOSBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIFVJVGV4dExheW91
dERpcmVjdGlvbkRvd246CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25SaWdodDoKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvblJpZ2h0OworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAgICBjYXNlIFVJVGV4dExheW91dERp
cmVjdGlvblVwOgogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uTGVmdDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvbkxlZnQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVUlUZXh0
RGlyZWN0aW9uIGlzIG5vdCBhbiBlbnVtLCBidXQgd2Ugb25seSB3YW50IHRvIGFjY2VwdCB2YWx1
ZXMgZnJvbSBVSVRleHRMYXlvdXREaXJlY3Rpb24uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIH0KIH0KIAotc3Rh
dGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKFdLQ29udGVudFZpZXcgKnZpZXcs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikKK3N0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShX
S0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktp
dDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBb
KFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFu
dF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1
cmU6dG9VSVdLR2VzdHVyZVR5cGUoKFdlYktpdDo6R2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUpIHdp
dGhTdGF0ZTp0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6Okdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkpIHdpdGhGbGFnczoodG9VSVdLU2Vs
ZWN0aW9uRmxhZ3MoKFdlYktpdDo6U2VsZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CisgICAgWyhVSVdL
VGV4dEludGVyYWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNl
bGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRv
VUlXS0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGUoZ2VzdHVyZVN0YXRlKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxh
Z3MpXTsKIH0KIAotc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRl
bnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRv
dWNoLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQor
c3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2gg
dG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBbKFVJV0tUZXh0
SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0
aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0
b1VJV0tTZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZs
YWdzOnN0YXRpY19jYXN0PFVJV0tTZWxlY3Rpb25GbGFncz4oZmxhZ3MpXTsKKyAgICBbKFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3Vj
aDp0b1VJV0tTZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0
aEZsYWdzOnRvVUlXS1NlbGVjdGlvbkZsYWdzKGZsYWdzKV07CiB9CiAKIC0gKEJPT0wpX2hhc0Zv
Y3VzZWRFbGVtZW50CkBAIC0zODk1LDggKzM5MDUsOCBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlv
bldpdGhHZXN0dXJlQXQ6KENHCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6
KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3
aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZSB3aXRoRmxhZ3M6KFVJV0tT
ZWxlY3Rpb25GbGFncylmbGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZ
RVM7Ci0gICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50
KSwgV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0
b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1
cmVSZWNvZ25pemVyU3RhdGUoc3RhdGUpKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtzZWxm
LCBzdGF0ZSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3Qg
Z2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgaW5uZXJGbGFncywg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNo
YW5nZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwg
ZmxhZ3MgfCBpbm5lckZsYWdzLCBlcnJvcik7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJl
KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRv
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBb
c2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RhdGUsIGZsYWdzXShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUs
IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYs
IHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB0b1NlbGVjdGlvbkZsYWdzKGZsYWdz
KSB8IGlubmVyRmxhZ3MsIGVycm9yKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZUVuZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNh
bmNlbGxlZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAg
ICB9KTsKQEAgLTM5MDUsOSArMzkxNSw5IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdl
c3R1cmVBdDooQ0cKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlz
U3RhcnQ6KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxh
Z3MKIHsKICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT51
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSksIGJhc2VJc1N0YXJ0LCBb
c2VsZiwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91
Y2gsIHVpbnQzMl90IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewotICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50LCB0b3Vj
aCwgZmxhZ3MgfCBpbm5lckZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlmICh0b3VjaCAhPSBVSVdL
U2VsZWN0aW9uVG91Y2hTdGFydGVkICYmIHRvdWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaE1vdmVk
KQorICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dChwb2ludCksIHRvU2VsZWN0aW9uVG91Y2godG91Y2gpLCBiYXNlSXNTdGFydCwgW3NlbGYsIHN0
cm9uZ1NlbGYgPSByZXRhaW5QdHIoc2VsZiksIGZsYWdzXShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6
OlNlbGVjdGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChzZWxmLCBwb2ludCwg
dG91Y2gsIHRvU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOworICAg
ICAgICBpZiAodG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25Ub3Vj
aFN0YXJ0ZWQgJiYgdG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25U
b3VjaE1vdmVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwog
ICAgIH0pOwogfQpAQCAtMzkxNSw5ICszOTI1LDkgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25X
aXRoVG91Y2hBdDooQ0dQbwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206
KENHUG9pbnQpZnJvbSB0bzooQ0dQb2ludCl0byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBl
KWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVT
dGF0ZQogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgX3BhZ2Ut
PnNlbGVjdFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50KGZyb20pLCBXZWJDb3JlOjpJ
bnRQb2ludCh0byksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBlKGdlc3R1cmVU
eXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2Vz
dHVyZVN0YXRlKSksIFtzZWxmXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0V2l0
aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRv
KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShn
ZXN0dXJlU3RhdGUpLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBl
LCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8
V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9p
bnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlm
IChnZXN0dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQgfHwgZ2VzdHVy
ZVN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKKyAgICAgICAgaWYg
KHRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkgPT0gVUlHZXN0dXJlUmVj
b2duaXplclN0YXRlRW5kZWQgfHwgdG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0
YXRlKSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCiAgICAgICAgICAgICBf
dXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87CiAgICAgfSk7CiB9CkBAIC02NTIxLDcgKzY1
MzEsNyBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAKIC0gKHZvaWQpc2VsZWN0V29yZEZv
clJlcGxhY2VtZW50CiB7Ci0gICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpXb3Jk
R3JhbnVsYXJpdHkpOworICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogfQogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RS
SVZFTl9URVhUX0NIRUNLSU5HKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQs
NyArMTQ0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
R2VzdHVyZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0x
NTUsNyArMTU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdAog
ICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1
cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRv
dWNoZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRv
dWNoZXMsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFncywg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNr
cy50YWtlPFRvdWNoZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykg
ewpAQCAtNDI4LDIxICs0MjgsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVyVHJlZUNvbW1p
dENvbXBsZQogICAgIHBhZ2VDbGllbnQoKS5sYXllclRyZWVDb21taXRDb21wbGV0ZSgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMy
X3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0
dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxX
ZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6
OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQ
b2ludCgpLCBHZXN0dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3Np
YmxlLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlIl9zKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQz
Ml90KWdyYW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsIGdl
c3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWlu
dDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgU2VsZWN0aW9u
VG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6
OkludFBvaW50KCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIFNlbGVjdGlvblRvdWNoOjpT
dGFydGVkLCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dFRleHRXaXRoR3JhbnVsYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0
eUF0UG9pbnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2lu
dCwgZ3JhbnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0
eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJv
eHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTUyNCw3ICs1MjQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9u
KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0g
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9z
aXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihwb2ludCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbiwgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KCk7CiAgICAgfSk7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1v
dmVTZWxlY3Rpb25BdEJvdW5kYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihkaXJlY3Rpb24pKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihncmFudWxhcml0eSwgZGlyZWN0aW9uKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRC
b3VuZGFyeVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtNjMwLDEwICs2MzAsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVU
eXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVj
dGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCBHZXN0
dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLCB7IH0sIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03NTQsNyArNzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkp
KSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RXh0ZW5kU2VsZWN0aW9uKGdyYW51bGFyaXR5KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0V29yZEJhY2t3YXJkKCkKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsCiAgICAgfQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5
OjpyZXF1ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQiX3MpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJp
dHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSks
IG9mZnNldCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zm
c2V0KGdyYW51bGFyaXR5LCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0
KGludDMyX3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcg
QEAgLSAoTlNBcnJheSAqKXRleHRSZWN0cwogCiAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFu
ZGluZ1RvV29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcnMgaW5E
aXJlY3Rpb246KFdLRE9NUmFuZ2VEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVj
dGlvbkF0V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2Fy
ZCA/ICBfaW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCksIGNoYXJh
Y3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdlYkNvcmU6
OkRpcmVjdGlvbkZvcndhcmQgOiBXZWJDb3JlOjpEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJ
bkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9u
Rm9yd2FyZCA/ICBfaW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCks
IGNoYXJhY3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFdlYkNvcmU6OlNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQpOwogCiAgICAgcmV0dXJuIFtbW1dLRE9NUmFuZ2UgYWxsb2NdIF9p
bml0V2l0aEltcGw6bmV3UmFuZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5IFdlYkZyYW1lTG9hZGVyQwogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+d2ViR0xQb2xpY3lGb3JVUkwobV9mcmFtZS5w
dHIoKSwgdXJsKTsKIAotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJu
IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TChjb25zdCBVUkwmIHVybCkgY29uc3QKQEAgLTE2MjcsNyArMTYyNyw3IEBAIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckMKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIHdlYlBhZ2UtPnJlc29sdmVXZWJHTFBvbGlj
eUZvclVSTChtX2ZyYW1lLnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVh
dGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9
CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ5LDEyICsxMDQ5LDEyIEBA
IFJlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWIKICNpZiBFTkFCTEUoV0VC
R0wpICYmICFQTEFURk9STShNQUMpCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6
d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewotICAgIHJldHVybiBX
ZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxv
d0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2
ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKLSAgICByZXR1cm4g
V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxs
b3dDcmVhdGlvbjsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMCArMTk1
LDEyIEBAIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDog
aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0
aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogZW51bSBj
bGFzcyBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4X3Q7CitlbnVt
IGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJl
Y3Rpb24gOiB1aW50OF90OwogCiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKQEAgLTY4NSwxOSAr
Njg3LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmx1ckZvY3VzZWRFbGVtZW50KCk7CiAgICAg
dm9pZCByZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDYWxsYmFja0lEKTsKLSAgICB2
b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwotICAgIHZv
aWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBleHRlbmRTZWxlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHkpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lk
IHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2Vs
ZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVT
ZWxlY3Rpb25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29s
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpT
ZWxlY3Rpb25EaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNl
bGVjdGlvbkRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9u
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29y
ZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25D
b250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBT
dHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBAIC03MjIsNyArNzI0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAg
ICB2b2lkIGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCB1aW50NjRfdCByZXF1ZXN0
SUQpOwogICAgIHZvaWQgaGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0Zvckdy
YW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2FsbGJhY2tJ
RCk7CisgICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChX
ZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGludDMyX3QsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
Z2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJv
b2wpOwogICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CkBAIC0xMzY1LDcgKzEzNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cGxldGVTeW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ss
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpX
ZWJFdmVudDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpTeW50aGV0aWNDbGlja1R5cGUsIFdlYkNvcmU6
OlBvaW50ZXJJRCA9IFdlYkNvcmU6Om1vdXNlUG9pbnRlcklEKTsKICAgICB2b2lkIHNlbmRUYXBI
aWdobGlnaHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpO
b2RlKik7CiAgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9j
dXNlZE5vZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9v
bCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
UmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRnJhbWVCZWZv
cmVTZWxlY3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAg
IHZvaWQgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2Vs
ZWN0aW9uVG91Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjMsMTkgKzYzLDE5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hN
b3ZlZFRvUG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBJbnNwZWN0b3JO
b2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAg
Qmx1ckZvY3VzZWRFbGVtZW50KCkKLSAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQ
b2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVu
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0
aFRvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wg
YmFzZUlzU3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFdp
dGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRv
LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKLSAgICBFeHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVs
YXJpdHkpCisgICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVu
dW06dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
KyAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
ZW51bTp1aW50OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNT
dGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aFR3b1Rv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIGVudW06
dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCisgICAgRXh0ZW5kU2VsZWN0aW9uKGVudW06dWludDhfdCBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgU2VsZWN0V29yZEJhY2t3YXJkKCkK
ICAgICBNb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQpIC0+ICgpIEFzeW5jCi0g
ICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQpIC0+ICgpIEFzeW5jCi0gICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQz
Ml90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAo
KSBBc3luYwotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJf
dCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uKSAtPiAoKSBBc3luYworICAgIFNlbGVj
dFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5jCisgICAgU2VsZWN0UG9zaXRp
b25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgp
IEFzeW5jCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24s
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24s
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBlbnVtOmJvb2wgV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9y
IHJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQot
ICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0
aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKICAgICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBT
dHJpbmcgbmV3VGV4dCkKICAgICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBT
dHJpbmcgbmV3VGV4dCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlm
aWVycywgdWludDY0X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRG
b3JjZUFsd2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0Zv
ckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50
MzJfdCBvZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFJlY3Rz
Rm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGVudW06dWludDhfdCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQo
aW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKICAgICBTdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoYm9vbCBzaG91bGRTdG9yZSkK
ICAgICBTdGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9zaXRp
b25JbldpbmRvdykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmEK
ICAgICAgICAgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IHN0YXJ0Tm9kZUlzSW5zaWRl
Rml4ZWRQb3NpdGlvbjsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBw
b3N0TGF5b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZv
bGxvd2luZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24u
Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250
ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCks
IFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXRE
YXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBwb3N0
TGF5b3V0RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5n
ZUZyb21Qb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkuZ2V0KCkpOwogICAgICAgICBpZiAoc2Vs
ZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICBjaGFyYWN0ZXJzQXJvdW5k
UG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckFmdGVy
U2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24sIHBvc3RM
YXlvdXREYXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CkBAIC0zMjMsOCArMzIzLDgg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxh
aW5UZXh0KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwotICAgICAgICBwb3N0TGF5b3V0RGF0
YS5zZWxlY3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpEaXJlY3Rpb25CYWNrd2FyZCk7Ci0g
ICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9
IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlRW5kKCksIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6RGlyZWN0
aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBh
cmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2li
bGVTdGFydCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9u
RW5kSXNBdFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0
aW9uLnZpc2libGVFbmQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiB9CiAKQEAgLTU0OSw4ICs1NDks
OCBAQCB2b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhCiAgICAgY29uc3Qg
aW50IHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCA9IDM1MDsKICAgICAKICAgICBTdHJp
bmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKTsKLSAgICBTdHJpbmcgdGV4dEJlZm9yZSA9
IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9u
QXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2Vs
ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCkpOwot
ICAgIFN0cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmVuZCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlv
bkZvcndhcmQpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRp
c3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnko
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRD
b250ZXh0TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKS5nZXQoKSk7CisgICAg
U3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hh
cmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKS5nZXQoKSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIHRleHRCZWZvcmUsIHRl
eHRBZnRlciwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTM0Myw3ICsxMzQzLDcgQEAgc3RhdGljIElu
dFBvaW50IGNvbnN0cmFpblBvaW50KGNvbnN0IEludAogICAgIHJldHVybiBjb25zdHJhaW5lZFBv
aW50OwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50
JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVj
b2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRF
bGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PEdl
c3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkgPT0gR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6QmVnYW4pCiAgICAgICAgIHNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRB
dExvY2F0aW9uKHBvaW50KTsKQEAgLTEzNTIsMTEgKzEzNTIsMTEgQEAgdm9pZCBXZWJQYWdlOjpz
ZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9
IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgp
KSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNr
KHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCAwLCBjYWxsYmFja0lEKSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50LCBn
ZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIFNlbGVjdGlvbkZsYWdz
IGZsYWdzID0gTm9uZTsKKyAgICBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzOwogICAg
IEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgd2tHZXN0dXJlU3RhdGUgPSBzdGF0aWNfY2FzdDxHZXN0
dXJlUmVjb2duaXplclN0YXRlPihnZXN0dXJlU3RhdGUpOwogICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8R2VzdHVyZVR5cGU+KGdlc3R1cmVUeXBlKSkgewogICAgIGNhc2UgR2VzdHVyZVR5cGU6OlBo
cmFzZUJvdW5kYXJ5OgpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RX
aXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICBpZiAocG9zaXRpb24gPiBtYXJrZWRSYW5nZS0+
ZW5kUG9zaXRpb24oKSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbWFya2VkUmFuZ2UtPmVuZFBv
c2l0aW9uKCk7CiAgICAgICAgIGlmICh3a0dlc3R1cmVTdGF0ZSAhPSBHZXN0dXJlUmVjb2duaXpl
clN0YXRlOjpCZWdhbikKLSAgICAgICAgICAgIGZsYWdzID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRp
b25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCkpICE9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5nZS0+
c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbikgPyBQaHJhc2VCb3VuZGFyeUNoYW5nZWQgOiBOb25l
OworICAgICAgICAgICAgZmxhZ3MgPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQo
KSkgIT0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIHBvc2l0aW9uKSA/IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA6IE9wdGlvblNldDxTZWxlY3Rp
b25GbGFncz4geyB9OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmbGFncyA9IFBocmFzZUJv
dW5kYXJ5Q2hhbmdlZDsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pOwpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZpbmdlckRvdWJsZVRhcDoKLSAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpKSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpIHsKICAgICAgICAgICAgIC8vIERvdWJsZS10YXAgYXQgZW5kIG9mIGxpbmUgb25seSBw
bGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB0
byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAgICAgICAg
ICAgIC8vIHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCkBAIC0xNDU0LDE3ICsxNDU0LDE3IEBA
IHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW4KIAogICAgIGNhc2UgR2Vz
dHVyZVR5cGU6OlR3b0ZpbmdlclNpbmdsZVRhcDoKICAgICAgICAgLy8gU2luZ2xlIHRhcCB3aXRo
IHR3byBmaW5nZXJzIHNlbGVjdHMgdGhlIGVudGlyZSBwYXJhZ3JhcGguCi0gICAgICAgIHJhbmdl
ID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRyaXBsZVRhcDoKLSAgICAgICAgaWYg
KGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVj
dGlvbkZvcndhcmQpKSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCkpIHsKICAgICAgICAgICAgIC8vIFRyaXBsZS10YXAgYXQgZW5kIG9mIGxpbmUg
b25seSBwbGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBo
ZWxwcyB0byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAg
ICAgICAgICAgIC8vIHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCiAgICAgICAgICAgICByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3
YXJkKTsKKyAgICAgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBA
IC0xNDczLDcgKzE0NzMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0
IEluCiAgICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSwgY2FsbGJh
Y2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNr
KHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgY2FsbGJhY2tJRCkpOwog
fQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5h
dGVzLCBib29sIGJhc2VJc1N0YXJ0KQpAQCAtMTUyNywyNyArMTUyNywyNyBAQCBzdGF0aWMgUmVm
UHRyPFJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJh
bmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNl
SXNTdGFydCA/IERpcmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICBTZWxl
Y3Rpb25EaXJlY3Rpb24gb3Bwb3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlv
bkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gc2Ft
ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gb3Bw
b3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJh
c2UgPSBiYXNlSXNTdGFydCA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxl
U3RhcnQoKSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAg
ICAgVmlzaWJsZVBvc2l0aW9uIGV4dGVudCA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS52aXNpYmxlU3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gaW5pdGlhbEV4dGVudCA9
IHBvc2l0aW9uOwogCi0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29y
ZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGly
ZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeS4gTGVhdmUgc2Vs
ZWN0aW9uIHdoZXJlIGl0IGlzLgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9w
cG9zaXRlRGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikp
IHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmQgYm91bmRhcnkgaW4gdGhlIHdyb25nIGRpcmVj
dGlvbi4gTnVkZ2UgdGhlIHNlbGVjdGlvbiB0byBhIGNoYXJhY3RlciBiZWZvcmUgcHJvY2VlZGlu
Zy4KICAgICAgICAgZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBleHRlbnQucHJldmlvdXMoKSA6IGV4
dGVudC5uZXh0KCk7CiAgICAgfQogCiAgICAgLy8gRXh0ZW5kIHRvIHRoZSBib3VuZGFyeSBvZiB0
aGUgd29yZC4KIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQm91bmRhcnkgPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwgc2FtZURp
cmVjdGlvbik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZO
ZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pOwogICAgIGlmICh3b3JkQm91bmRhcnkuaXNOb3ROdWxs
KCkKLSAgICAgICAgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkod29yZEJvdW5kYXJ5LCBXb3Jk
R3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmIGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHdvcmRCb3VuZGFyeSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNh
bWVEaXJlY3Rpb24pCiAgICAgICAgICYmIGluaXRpYWxFeHRlbnQgIT0gd29yZEJvdW5kYXJ5KSB7
CiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICAgICAgcmV0dXJuIChiYXNlIDwg
ZXh0ZW50KSA/IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQp
IDogUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CkBAIC0x
NTU4LDEwICsxNTU4LDEwIEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRh
cnkKIAogICAgIC8vIElmIHRoaXMgaXMgd2hlcmUgdGhlIGV4dGVudCB3YXMgaW5pdGlhbGx5LCB0
aGVuIGl0ZXJhdGUgaW4gdGhlIG90aGVyIGRpcmVjdGlvbiBpbiB0aGUgZG9jdW1lbnQgdW50aWwg
d2UgaGl0IHRoZSBuZXh0IHdvcmQuCiAgICAgd2hpbGUgKGV4dGVudC5pc05vdE51bGwoKQotICAg
ICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHks
IHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQogICAg
ICAgICAmJiBleHRlbnQgIT0gYmFzZQotICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoZXh0ZW50LCBMaW5lR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCi0gICAgICAgICYmICFh
dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgb3Bwb3NpdGVE
aXJlY3Rpb24pKSB7CisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQorICAgICAg
ICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CiAgICAgICAgIGV4dGVudCA9IGJh
c2VJc1N0YXJ0ID8gZXh0ZW50Lm5leHQoKSA6IGV4dGVudC5wcmV2aW91cygpOwogICAgIH0KIApA
QCAtMTY3NywyMSArMTY3NywyMCBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91
c2VFdmVuCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNT
dGFydCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIFNlbGVjdGlvblRvdWNoIHNlbGVj
dGlvblRvdWNoLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAg
ICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBJbnRQb2ludCBwb2ludEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJv
b3RWaWV3VG9Db250ZW50cyhwb2ludCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0g
ZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkRvY3VtZW50KTsKICAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHNl
bGVjdGlvblRvdWNoLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsK
LSAgICBTZWxlY3Rpb25GbGFncyBmbGFncyA9IE5vbmU7CisgICAgT3B0aW9uU2V0PFNlbGVjdGlv
bkZsYWdzPiBmbGFnczsKIAotICAgIGF1dG8gc2VsZWN0aW9uVG91Y2ggPSBzdGF0aWNfY2FzdDxT
ZWxlY3Rpb25Ub3VjaD4odG91Y2hlcyk7CiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGlj
TW91c2VFdmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3lu
dGhldGljTW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2lu
dCk7CiAKQEAgLTE3MTAsMTEgKzE3MDksMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6
OkVuZGVkTW92aW5nRm9yd2FyZDoKLSAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIERpcmVjdGlvbkZvcndh
cmQpOworICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJh
bWUsIHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVk
TW92aW5nQmFja3dhcmQ6Ci0gICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uKCZmcmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBEaXJlY3Rpb25CYWNrd2FyZCk7
CisgICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZmcmFtZSwg
cG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpNb3ZlZDoKQEAgLTE3MjQs
MTAgKzE3MjMsMTAgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcwog
ICAgIGlmIChyYW5nZSkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShyYW5nZS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIGZs
YWdzLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3Vj
aGVzQ2FsbGJhY2socG9pbnQsIHNlbGVjdGlvblRvdWNoLCBmbGFncywgY2FsbGJhY2tJRCkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3Zv
aWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZnJvbVBvc2l0aW9uID0g
ZnJhbWUudmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29u
dGVudHMoZnJvbSkpOwpAQCAtMTc0MiwxNCArMTc0MSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhUd29Ub3VjaGVzKGNvbnN0CiAgICAgfQogCiAgICAgLy8gV2UgY2FuIHVzZSB0aGUgc2Ft
ZSBjYWxsYmFjayBmb3IgdGhlIGdlc3R1cmVzIHdpdGggb25lIHBvaW50LgotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1cmVUeXBlLCBn
ZXN0dXJlU3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Okdlc3R1cmVDYWxsYmFjayhmcm9tLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7
IH0sIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24odWlu
dDMyX3QgZ3JhbnVsYXJpdHkpCit2b2lkIFdlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbihXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICAvLyBGb3Ig
dGhlIG1vbWVudCB3ZSBoYW5kbGUgb25seSBXb3JkR3JhbnVsYXJpdHkuCi0gICAgaWYgKGdyYW51
bGFyaXR5ICE9IFdvcmRHcmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgp
KQorICAgIC8vIEZvciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5LgorICAgIGlmIChncmFudWxhcml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwpAQCAtMTc5Miw3ICsxNzkxLDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICByZXR1cm47CiAKICAgICBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
OwotICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpOworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoc3RhcnRQ
b3NpdGlvbi5pc05vdE51bGwoKSAmJiBzdGFydFBvc2l0aW9uICE9IHBvc2l0aW9uKQogICAgICAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZm
aW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMs
IFVzZXJUcmlnZ2VyZWQpOwogfQpAQCAtMTgwNCwxMCArMTgwMywxMCBAQCB2b2lkIFdlYlBhZ2U6
Om1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICBpZiAoc3Rh
cnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rp
b25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAw
ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgYWJzKG9mZnNldCk7ICsraSkgewotICAgICAgICBwb3NpdGlv
biA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBDaGFyYWN0
ZXJHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTk0Myw3ICsxOTQyLDcgQEAgdm9p
ZCBXZWJQYWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZQogICAgIHJlcGx5KFdURk1vdmUo
cmVjdHNUb0F2b2lkSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVs
YXJpdHksIGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0g
bV9zdG9yZWRTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5LmlzTm9uZSgpID8gZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkgOiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHk7CkBA
IC0xOTU1LDkgKzE5NTQsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlX
aXRoCiAgICAgfQogCiAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclBvc2l0
aW9uV2l0aE9mZnNldChzZWxlY3Rpb25TdGFydCwgb2Zmc2V0KTsKLSAgICBTZWxlY3Rpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwgMCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0
aW9uRm9yd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwg
MCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZv
cndhcmQ7CiAKLSAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFy
aXR5KSwgZGlyZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdy
YW51bGFyaXR5KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICBpZiAoIXJh
bmdlIHx8IHJhbmdlLT5jb2xsYXBzZWQoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNlbGVjdGlvblJlY3RzQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTIwNDgsNTIgKzIwNDcsNTIgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQ
b3NpdGlvbkF0UG9pbnQoY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJl
Y3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQ
b3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9u
SW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1
c2VkRWxlbWVudCk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKLSAgICAgICAg
cG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRp
Y19jYXN0PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9u
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFy
aXR5LCBkaXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAg
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIFVQU1RSRUFNLCBX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdn
ZXJlZCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW50MzJfdCBkaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCiAgICAgaWYgKCFmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewotICAgICAgICBib29sIGlzRm9yd2Fy
ZCA9IChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0
aW9uUmlnaHQpOworICAgICAgICBib29sIGlzRm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gU2VsZWN0
aW9uRGlyZWN0aW9uOjpGb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246
OlJpZ2h0KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gKGlzRm9yd2FyZCkg
PyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkgOiBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKLSAgICAgICAgcG9zaXRpb24gPSBw
b3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PFNlbGVj
dGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25P
Zk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rp
b24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBE
T1dOU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
LVJlZlB0cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUm
IGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpCitSZWZQdHI8UmFuZ2U+
IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KEZyYW1lJiBmcmFtZSwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKIHsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9p
bnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKIAogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2U7Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVs
YXJpdHk6CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmFuZ2UgPSBtYWtlUmFuZ2UocG9z
aXRpb24sIHBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
cmFuZ2UgPSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIHJhbmdlID0gZW5jbG9zaW5n
VGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBTZW50ZW5jZUdyYW51bGFyaXR5LCBEaXJl
Y3Rpb25Gb3J3YXJkKTsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxh
cml0eToKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHJhbmdl
ID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEZJWE1FOiBJ
dCdzIG5vdCBjbGVhciB3aHkgdGhpcyBtdXRhdGVzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBhbmQg
cmV0dXJucyBudWxsLgogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3RBbGwoKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0yMTE4LDcgKzIxMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvY3Vz
ZWRGcmFtZUJlZm9yZVNlbGVjCiAgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0
Rm9jdXNlZEZyYW1lKHJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNldEZvY3VzZWRGcmFt
ZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKHBvaW50KTsKIApAQCAtMjEzMCwxMyArMjEy
OSwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBtX3NlbGVjdGlv
bkFuY2hvciA9IChzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikgPT0g
RGlyZWN0aW9uTGVmdCkgPyBTdGFydCA6IEVuZDsKKyAgICBtX3NlbGVjdGlvbkFuY2hvciA9IGRp
cmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQgPyBTdGFydCA6IEVuZDsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25B
bmNob3IgPT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRl
U2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25J
bkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50KTsKQEAgLTIyMzIsNyArMjIzMSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERp
Y3RhdGlvbkNvbnRleHQoQ2EKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0UG9zaXRpb24g
PSBzdGFydFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdGF0
aW9uQ29udGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjdXJyZW50UG9zaXRpb24g
PSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9z
aXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKyAgICAgICAgICAg
IGN1cnJlbnRQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGxhc3RQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50
UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBs
YXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yMjQ2LDcgKzIyNDUsNyBAQCB2b2lk
IFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhCiAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBjdXJyZW50UG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIGxhc3RQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGljdGF0aW9uQ29udGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBj
dXJyZW50UG9zaXRpb24gPSBlbmRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkobGFzdFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKTsK
KyAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKTsKICAgICAgICAgICAgIGlm
IChjdXJyZW50UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBsYXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yNDMyLDcgKzI0MzEs
NyBAQCBib29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hCiAgICAgaWYgKGNv
cnJlY3Rpb24ubGVuZ3RoKCkpCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQoY29y
cmVjdGlvbiwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9h
cmQgOiBUZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlIGlmIChvcmlnaW5h
bFRleHQubGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rp
b24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDc3LDcgKzI0NzYsNyBA
QCBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWluQ29udGV4dFdvcmRDb3VudDsgKytpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHRCZWZvcmUubGVuZ3RoKCkgPj0gbWluQ29udGV4dExlbmdo
dCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOwor
ICAgICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9m
TmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWlu
VGV4dEZvckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQ
b3NpdGlvbiwgY3VycmVudFBvc2l0aW9uKS5wdHIoKSk7CkBAIC0yNDg4LDE1ICsyNDg3LDE1IEBA
IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY28KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgY3VycmVudFBv
c2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBj
dXJyZW50UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKLSAgICAgICAgICAgICAgICBp
ZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKQorICAgICAgICAgICAgICAgIGlmIChhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gbWFrZVN0cmluZygiXG4gIl9zLCBjb250ZXh0QmVm
b3JlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRQb3NpdGlv
biAhPSBlbmRPZkVkaXRhYmxlQ29udGVudChlbmRQb3NpdGlvbikpIHsKICAgICAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBuZXh0UG9zaXRpb247Ci0gICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKLSAgICAgICAgICAgICAgICBuZXh0UG9zaXRpb24g
PSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgICAgIGlmICghYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFu
dWxhcml0eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpCisgICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9u
ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQp
OwogICAgICAgICAgICAgaWYgKG5leHRQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAg
ICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKICAgICAg
ICAgfQpAQCAtMjYzMCw5ICsyNjI5LDkgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlua1Bv
c2l0aW9uSW5mbwogICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LmRv
Y3VtZW50KCkpOwogICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwog
ICAgIGluZm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5
Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0
aW9uKCksCi0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVj
dGlvbkJhY2t3YXJkKS5nZXQoKSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRl
eHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpLmdldCgpKTsKICAgICBpbmZv
LnRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLAotICAg
ICAgICBkYXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJk
KS5nZXQoKSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIFNl
bGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTQwNjks
NyArNDA2OCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkKIHsK
ICAgICBBU1NFUlQoZ3JhbnVsYXJpdHlDb3VudCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTm90
TnVsbCgpKTsKLSAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25CYWNr
d2FyZDsKKyAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkOwogICAgIGF1dG8gZmFydGhlc3RQb3NpdGlvbkluRGlyZWN0aW9uID0gYmFj
a3dhcmRzID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudChwb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxl
Q29udGVudChwb3NpdGlvbik7CiAgICAgaWYgKHBvc2l0aW9uID09IGZhcnRoZXN0UG9zaXRpb25J
bkRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuIGJhY2t3YXJkcyA/IHN0YXJ0T2ZXb3JkKHBvc2l0
aW9uKSA6IGVuZE9mV29yZChwb3NpdGlvbik7CkBAIC00MDgzLDggKzQwODIsOCBAQCBzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG1vdmVCeUdyYW51bGFyaXR5CiAgICAgICAgIGlmIChhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQog
ICAgICAgICAgICAgLS1ncmFudWxhcml0eUNvdW50OwogICAgIH0gd2hpbGUgKGdyYW51bGFyaXR5
Q291bnQpOwotICAgIGlmIChncmFudWxhcml0eSA9PSBTZW50ZW5jZUdyYW51bGFyaXR5KSB7Ci0g
ICAgICAgIEFTU0VSVChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFNl
bnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOworICAgIGlmIChncmFudWxhcml0eSA9PSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgQVNTRVJUKGF0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRQ
b3NpdGlvbjsKICAgICB9CiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgcm91bmRzIHRvIHRoZSBuZWFy
ZXN0IHdvcmQsIHdoaWNoIG1heSBjcm9zcyBhIGxpbmUgYm91bmRhcnkgd2hlbiB1c2luZyBsaW5l
IGdyYW51bGFyaXR5LgpAQCAtNDE5Nyw4ICs0MTk2LDggQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udAogICAgIFZpc2libGVQb3NpdGlvbiBjb250ZXh0QWZ0ZXJFbmQ7
CiAgICAgYXV0byBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9u
UmFuZ2UoKTsKICAgICBpZiAocmVxdWVzdC5ncmFudWxhcml0eUNvdW50KSB7Ci0gICAgICAgIGNv
bnRleHRCZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFy
eShyYW5nZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCBy
ZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQsIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICAgICAgY29u
dGV4dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJh
bmdlT2ZJbnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0
LmdyYW51bGFyaXR5Q291bnQsIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBjb250ZXh0QmVm
b3JlU3RhcnQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VP
ZkludGVyZXN0U3RhcnQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5n
cmFudWxhcml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAg
Y29udGV4dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5
KHJhbmdlT2ZJbnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1
ZXN0LmdyYW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgY29udGV4dEJlZm9yZVN0YXJ0ID0gcmFuZ2VPZkludGVyZXN0U3Rh
cnQ7CiAgICAgICAgIGNvbnRleHRBZnRlckVuZCA9IHJhbmdlT2ZJbnRlcmVzdEVuZDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmg+CkBAIC03NzMsMjQgKzc3NCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQ
YWdlc1RvUERGRnJvbVBERkRvY3VtCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1XZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJH
TFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVpbnQzMl90
IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2Vi
R0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViR0xMb2FkUG9saWN5Pihwb2xpY3lSZXN1bHQpOwotCi0gICAgcmV0dXJuIFdl
YkdMQWxsb3dDcmVhdGlvbjsKKyAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5UmVzdWx0ID0gV2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V2ViR0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpOworICAgIHJldHVy
biBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIHVpbnQzMl90IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKHVybCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVz
dWx0KSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGlj
eVJlc3VsdCk7Ci0KLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9h
ZFBvbGljeSBwb2xpY3lSZXN1bHQgPSBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
bjsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpSZXBseShwb2xpY3lSZXN1bHQpKTsKKyAgICByZXR1cm4gcG9saWN5UmVzdWx0Owog
fQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgZW51bSBz
ZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBhZ2dyZXNzaXZlbHlFeHBhbmRT
ZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAodG9UZXh0R3JhbnVsYXJpdHkpOgor
ICAgICAgICAodG9TZWxlY3Rpb25EaXJlY3Rpb24pOgorCiAyMDIwLTA1LTEwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWNraW5nIGEgdGVsOi8v
IGxpbmsgb24gaVBhZCB3aXRoIGEgdHJhY2twYWQgcHJlc2VudHMgZGlmZmVyZW50IFVJIHRoYW4g
dGFwcGluZyBvbiBpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00ODQsNyArNDg0LDcgQEAgLSAodm9pZClhZ2dyZXNzaXZlbHlFeHBhbmRTZWxl
Y3Rpb25Ub1dvcgogCiAgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGdl
dCB0aGUgaW1wcm92ZW1lbnRzCiAgICAgLy8gSSdtIHdvcmtpbmcgb24gZm9yIFJUTCBzZWxlY3Rp
b24uCi0gICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFy
aXR5KQorICAgIGlmIChmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oZnJh
bWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSwgZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9u
KCkuZW5kKCkpOwogICAgIAogICAgIGlmIChmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0Nh
cmV0KCkpIHsKQEAgLTYwNCwyMyArNjA0LDIzIEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvblRvUG9p
bnQ6KENHUG9pbnQpcG8KIAogLSAodm9pZClzZXRTZWxlY3Rpb25HcmFudWxhcml0eTooV2ViVGV4
dEdyYW51bGFyaXR5KWdyYW51bGFyaXR5CiB7Ci0gICAgVGV4dEdyYW51bGFyaXR5IHdjR3JhbnVs
YXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxhcml0eUNoYXJh
Y3RlcjoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsK
KyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51
bGFyaXR5V29yZDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7
CisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJp
dHlTZW50ZW5jZToKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdyYW51bGFy
aXR5OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRH
cmFudWxhcml0eVBhcmFncmFwaDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBQYXJhZ3Jh
cGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBEb2N1
bWVudEdyYW51bGFyaXR5LgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFncmFwaEdy
YW51bGFyaXR5OworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50R3JhbnVsYXJpdHkuCisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaWJsZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIwNSwyNyArMjA1LDI3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dEdyYW51bGFyaXR5IHRv
VGV4dEdyYW4KICAgICAKICAgICBzd2l0Y2ggKHdlYkdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5Q2hhcmFjdGVyOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkg
PSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gV29yZEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgICAgICBncmFudWxhcml0
eSA9IFNlbnRlbmNlR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgICAgIGdyYW51bGFy
aXR5ID0gTGluZUdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgZ3JhbnVsYXJp
dHkgPSBQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgZ3JhbnVs
YXJpdHkgPSBEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBkZWZhdWx0OgpAQCAtMjQyLDI3ICsyNDIsMjcgQEAgc3RhdGljIGlubGluZSBT
ZWxlY3Rpb25EaXJlY3Rpb24gdG9TZWxlYwogICAgIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7
CiAgICAgICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRGb3J3YXJkOgotICAgICAgICAgICAgcmVz
dWx0ID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDoKLSAgICAgICAgICAgIHJlc3VsdCA9
IERpcmVjdGlvbkJhY2t3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgV2ViVGV4dEFkanVzdG1lbnRSaWdodDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVj
dGlvblJpZ2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdo
dDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgV2ViVGV4
dEFkanVzdG1lbnRMZWZ0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFVwOgotICAg
ICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAg
ICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudERvd246Ci0gICAgICAgICAgICByZXN1bHQgPSBE
aXJlY3Rpb25SaWdodDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6
UmlnaHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNl
IGVudW0gc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9N
VUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01SYW5nZSBtb3ZlOmluRGlyZWN0aW9u
Ol0pOgorICAgICAgICAoLVtET01SYW5nZSBleHRlbmQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2Nh
blNtYXJ0Q29weU9yRGVsZXRlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBk
b0NvbXBsZXRpb25dKToKKwogMjAyMC0wNS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXSzJdIE5ldXRlciBXS0ZyYW1lSXNGcmFtZVNldCgpIC8gV0tQYWdl
R2V0RnJhbWVTZXRMYXJnZXN0RnJhbWUoKSBDIEFQSQpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCShyZXZpc2lvbiAyNjE2OTQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNSArODIsMTUgQEAgLSAodm9pZCltb3ZlOihVSW50MzIpYW1v
dW50IGluRGlyZWN0aW9uOgogICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0
aW9uOwogICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhyYW5nZSk7CiAgICAgCi0gICAgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk7CisgICAgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAvLyBVbnRpbCBX
ZWJLaXQgc3VwcG9ydHMgdmVydGljYWwgbGF5b3V0LCAiZG93biIgaXMgZXF1aXZhbGVudCB0byAi
Zm9yd2FyZCBieSBhIGxpbmUiIGFuZAogICAgIC8vICJ1cCIgaXMgZXF1aXZhbGVudCB0byAiYmFj
a3dhcmQgYnkgYSBsaW5lIi4KICAgICBpZiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50
RG93bikgewogICAgICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVudEZvcndhcmQ7Ci0g
ICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6TGluZUdyYW51bGFyaXR5OworICAgICAgICBn
cmFudWxhcml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5Owog
ICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50VXApIHsKICAgICAg
ICAgZGlyZWN0aW9uID0gV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDsKLSAgICAgICAgZ3JhbnVs
YXJpdHkgPSBXZWJDb3JlOjpMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0g
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgfQogICAgIAog
ICAgIGZvciAoVUludDMyIGkgPSAwOyBpIDwgYW1vdW50OyBpKyspCkBAIC0xMTEsNyArMTExLDcg
QEAgLSAodm9pZClleHRlbmQ6KFVJbnQzMilhbW91bnQgaW5EaXJlY3RpbwogICAgIGZyYW1lU2Vs
ZWN0aW9uLm1vdmVUbyhyYW5nZSk7CiAgICAgCiAgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBh
bW91bnQ7IGkrKykKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCAoV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
KWRpcmVjdGlvbiwgV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIChXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24pZGlyZWN0aW9uLCBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAKICAgICBQb3NpdGlvbiBz
dGFydCA9IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9u
KCkuZW5kKCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMTIsMTIgKzIxMTIsMTIgQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tXZWJHTCgpCiAK
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xp
Y3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJH
TCgpID8gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25z
dAogewotICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTEJsb2Nr
Q3JlYXRpb24gOiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIHNob3Vs
ZEJsb2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0
aW9uIDogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU3MzIsNyArNTczMiw3IEBAIC0gKEJPT0wpX2NhblNtYXJ0Q29weU9yRGVsZXRlCiAgICAgaWYg
KCFbW3NlbGYgX3dlYlZpZXddIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZF0pCiAgICAgICAgIHJl
dHVybiBOTzsKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAg
IHJldHVybiBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgp
ID09IFdlYkNvcmU6OldvcmRHcmFudWxhcml0eTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0gKHZvaWQpZG9Db21wbGV0aW9uCiAgICAg
ICAgIFdlYkZyYW1lICpmcmFtZSA9IFtfaHRtbFZpZXcgX2ZyYW1lXTsKICAgICAgICAgRE9NUmFu
Z2UgKnNlbGVjdGlvbiA9IGtpdChjcmVhdGVMaXZlUmFuZ2UoY29yZShmcmFtZSktPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpLmdldCgpKTsKICAgICAgICAgRE9N
UmFuZ2UgKndob2xlV29yZCA9IFtmcmFtZSBfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlv
bjpGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZAotICAgICAgICAgICAgZGlyZWN0aW9u
OkRpcmVjdGlvbkJhY2t3YXJkIGdyYW51bGFyaXR5OldvcmRHcmFudWxhcml0eV07CisgICAgICAg
ICAgICBkaXJlY3Rpb246U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCBncmFudWxhcml0eTpU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eV07CiAgICAgICAgIERPTVJhbmdlICpwcmVm
aXggPSBbd2hvbGVXb3JkIGNsb25lUmFuZ2VdOwogICAgICAgICBbcHJlZml4IHNldEVuZDpbc2Vs
ZWN0aW9uIHN0YXJ0Q29udGFpbmVyXSBvZmZzZXQ6W3NlbGVjdGlvbiBzdGFydE9mZnNldF1dOwog
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjE2OTYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBj
YXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRJT1MubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRT
ZWxlY3Rpb24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0
U2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24pOgorCiAyMDIwLTA1LTE0
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIHN0
cmVzcy9hcnJheS1idWZmZXItdmlldy13YXRjaHBvaW50LWNhbi1iZS1maXJlZC1pbi1yZWFsbHkt
YWRkLWluLWRmZy5qcyBmYWlsaW5nIG9uIHBwYzY0bGUgYW5kIHMzOTB4CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQkocmV2aXNpb24gMjYxNjk0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0NSwxMiArMzQ1LDEyIEBA
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWwKIAogdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxh
cml0eSBpbmNyZWFzZTpZRVNdOworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNl
bGVjdGlvbjpXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IGlu
Y3JlYXNlOllFU107CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VU
ZXh0U2VsZWN0aW9uKCkKIHsKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlTZWxl
Y3Rpb246V2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9dOyAgICAKKyAg
ICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246V2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpOT107ICAgIAogfQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygp
CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlz
aW9uIDI2MTY5NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNiwxMiAr
OTM2LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZVIKIAogdm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAg
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0
ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpZRVNdOworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5IGluY3JlYXNlOllFU107CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZGVjcmVhc2VUZXh0U2VsZWN0aW9uKCkKIHsKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlN
b2RpZnlTZWxlY3Rpb246V2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9d
OworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOk5PXTsKIH0KIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Zv
clNlbGVjdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399405</attachid>
            <date>2020-05-14 13:55:17 -0700</date>
            <delta_ts>2020-05-15 20:09:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200514135516.patch</filename>
            <type>text/plain</type>
            <size>239293</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNCAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTQgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbiBuZWVkcyB0byBhcHBseSBwZW5k
aW5nIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSBnaXZlbiBub2RlLgpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEyLDcgKzIwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVy
CiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2libGVQb3MuCiAgICAgRnJhbWVTZWxlY3Rp
b24gc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSk7CisgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnkpOwogICAgIAogICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCAtICh2
b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246KFRlCiAgICAgaWYgKGZyYW1lU2VsZWN0
aW9uLmlzTm9uZSgpICYmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPCByYW5nZS5zdGFydCB8
fCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpID4gcmFuZ2UuZW5kKSkKICAgICAgICAgZnJhbWVTZWxl
Y3Rpb24ubW92ZVRvKHJhbmdlLnN0YXJ0LCBVc2VyVHJpZ2dlcmVkKTsKICAgICAKLSAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChpbmNy
ZWFzZSkgPyBEaXJlY3Rpb25SaWdodCA6IERpcmVjdGlvbkxlZnQsIGdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0IDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBncmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9
CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUluY3JlYXNlU2VsZWN0aW9uOihUZXh0R3JhbnVsYXJp
dHkpZ3JhbnVsYXJpdHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0JlaGF2
aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQmVoYXZp
b3IuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
QmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT24gaU9TLCB3ZSBkb24ndCB3YW50IHRvIHNlbGVjdCBhbGwgdGhlIHRleHQgd2hlbiBmb2N1
c2luZyBhIGZpZWxkLiBJbnN0ZWFkLCBtYXRjaCBwbGF0Zm9ybSBiZWhhdmlvciBieSBnb2luZyB0
byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgIGJvb2wgc2hvdWxkTW92ZVNlbGVjdGlvblRvRW5k
V2hlbkZvY3VzaW5nVGV4dElucHV0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAotICAgIC8vIE9uIGlPUywgd2hlbiBzbWFydCBkZWxldGUgaXMg
b24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBkbyBub3QgYWRkaXRpb25hbCBjaGVja3Mg
KGkuZS4gV29yZEdyYW51bGFyaXR5KS4KKyAgICAvLyBPbiBpT1MsIHdoZW4gc21hcnQgZGVsZXRl
IGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91bGQgZG8gbm90IGFkZGl0aW9uYWwgY2hl
Y2tzIChpLmUuIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KS4KICAgICBib29sIHNo
b3VsZEFsd2F5c1NtYXJ0RGVsZXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVkaXRpbmdJ
T1NCZWhhdmlvcjsgfQogICAgIAogICAgIC8vIE9uIGlPUywgd2Ugc2hvdWxkIHR1cm4gb24gc21h
cnQgaW5zZXJ0IGFuZCBkZWxldGUgYW5kIG5ld2xpbmVzIGFyb3VuZCBwYXJhZ3JhcGhzIHRvIG1h
dGNoIFVJS2l0IGJlaGF2aW91ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI4LDcgKzUyOCw3IEBAIGJvb2wgRWRpdG9yOjpzaG91bGRTbWFydERl
bGV0ZSgpCiB7CiAgICAgaWYgKGJlaGF2aW9yKCkuc2hvdWxkQWx3YXlzU21hcnREZWxldGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQu
c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eTsKIH0KIAogYm9vbCBFZGl0b3I6OnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpCkBAIC01
NjgsMTIgKzU2OCwxMiBAQCBib29sIEVkaXRvcjo6ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rp
CiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nKQogICAgICAgICAgICAgb3B0aW9ucyB8
PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgotICAgICAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKKyAg
ICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICAgICAgVHlwaW5n
Q29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3Jh
bnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uQmFj
a3dhcmQ6Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgY2FzZSBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1l
bnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIFN0cmluZyBFZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRD
YXJldE9yUmEKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgIHdvcmRTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgIHdvcmRTZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7
CiAgICAgYXV0byB3b3JkUmFuZ2UgPSB3b3JkU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgaWYgKCF3b3JkUmFuZ2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI0MDIs
NyArMjQwMiw3IEBAIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWwKICAg
ICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX2RvY3VtZW50LnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlv
cigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewog
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICAgICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgd29yZFNlbGVj
dGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5KTsKICAgICAgICAgICAgIHJhbmdlID0gd29yZFNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5n
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCk7CkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01p
c3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJldCBvbmUg
Y2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRv
KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
CkBAIC0yOTE5LDExICsyOTE5LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihj
b25zdCBTcGUKICAgICAgICAgICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFn
cmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNldCB9KTsKICAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBE
T1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhC
b3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRoaXMgZmFpbHMgZm9yIGFueSByZWFzb24s
IHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRpb24gYmV5b25kIHRoZSBsYXN0IHJlcGxh
Y2VtZW50CiAgICAgICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vdmVUbyhtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgbV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9p
ZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleAogICAgIH0gZWxzZQogICAgICAg
ICBpbnNlcnRUZXh0KGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LCBudWxscHRyKTsKIAot
ICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRC
eUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KHNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQubGVuZ3RoKCksIERpcmVjdGlvbkJh
Y2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGluc2VydGVkQ2FuZGlkYXRlUmFuZ2UgPSByYW5n
ZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShzZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50Lmxlbmd0aCgpLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoaW5zZXJ0ZWRDYW5kaWRhdGVS
YW5nZSkKICAgICAgICAgaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZS0+c3RhcnRDb250YWluZXIoKS5k
b2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoKmluc2VydGVkQ2FuZGlkYXRlUmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCwzMiArMzA0LDMyIEBAIHN0YXRpYyBib29sIGV4
ZWN1dGVEZWxldGUoRnJhbWUmIGZyYW1lLCAKIAogc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJh
Y2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0
aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJh
bWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2Fy
ZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBMT0dfRVJST1IoIkRlbGV0
ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRl
ZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIpOwotICAgIGZyYW1lLmVkaXRvcigpLmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdp
dGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNl
LCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRl
V2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxz
ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9C
ZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGly
ZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2Up
OworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYQogewogICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCi0gICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIHRydWUsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXAKIHsKICAgICAvLyBEZXNwaXRlIGl0cyBu
YW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9m
CiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LgotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2Fy
ZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5k
ZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9N
YXJrKEZyYW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2Fy
ZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
ZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0
aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDI0LDcg
KzQyNCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3YXJkRGVsZXRlKEZyYW1lJiAKIHsKICAg
ICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5n
OgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZv
cndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1l
LmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBD
b21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpAQCAtNjA2LDQ3ICs2MDYsNDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0RpcmVjdAogCiBzdGF0aWMgYm9vbCBleGVj
dXRlTW92ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVy
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndh
cmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUxlZnQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJp
Z2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjg4LDIwMyAr
Njg4LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlv
bigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgcmV0dXJuIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVJpZ2h0QW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIENoYXJhY3RlckdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQs
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdy
YW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRC
b3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlv
bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGly
ZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZShGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7Cisg
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92
ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRl
cmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZEb2N1bWVudChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJl
Y3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4
ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGly
ZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29s
IGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFNl
bnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVk
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9m
U2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBT
ZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0Vu
ZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBMaW5lQm91bmRhcnksIFVzZXJUcmln
Z2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwg
UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9F
bmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNl
clRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVN
b3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZy
YW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhH
cmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIHJldHVybiBm
cmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgTGluZUdyYW51bGFy
aXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQs
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4
dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQs
IFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCku
bW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEZv
cndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZExlZnQo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25N
b3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJv
b2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVj
dGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVXb3JkUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmlnaHQsIFdvcmRHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIExpbmVCb3VuZGFy
eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUs
IERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1l
LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVj
dGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9u
UmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJl
Y3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwMzUsMTcgKzEwMzUsMTcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSYgZnJhbQogCiBzdGF0aWMgYm9vbCBleGVjdXRl
U2VsZWN0TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShm
cmFtZSwgTGluZUdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHkpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0UGFyYWdyYXBoKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBleHBhbmRT
ZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBQYXJhZ3JhcGhHcmFudWxhcml0eSk7CisgICAg
cmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0
U2VudGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJh
bWUsIFNlbnRlbmNlR3JhbnVsYXJpdHkpOworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpOwog
fQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQpAQCAtMTA2Miw3ICsxMDYyLDcg
QEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZgogCiBzdGF0aWMgYm9v
bCBleGVjdXRlU2VsZWN0V29yZChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFu
dWxhcml0eShmcmFtZSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRBbHdheXNVc2VEaXJlY3QKIEZy
YW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oKSkKLSAgICAsIG1fZ3JhbnVsYXJp
dHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgLCBtX2dyYW51bGFyaXR5KFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAg
LCBtX2NhcmV0QmxpbmtUaW1lcigqdGhpcywgJkZyYW1lU2VsZWN0aW9uOjpjYXJldEJsaW5rVGlt
ZXJGaXJlZCkKICNlbmRpZgpAQCAtNjc2LDIyICs2NzYsMjIgQEAgdm9pZCBGcmFtZVNlbGVjdGlv
bjo6d2lsbEJlTW9kaWZpZWQoRUFsdAogICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
ICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNl
IERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6
CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJh
c2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFz
ZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoK
ICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtNzY1LDM0ICs3NjUsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlFeAogICAgIC8vIGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhl
IGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4
dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERp
cmVjdGlvbjo6UlRMLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJh
Y3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2
aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBv
c2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlmIChkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
cG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkKGdyYW51bGFyaXR5KTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
TGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2Fz
ZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBhbGwgb2YgdGhlIGFib3Zl
PwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODA2LDM0ICs4MDYsMzQgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogewogICAgIFZpc2libGVQb3Np
dGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxh
dGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3MpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51
bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0TGluZVBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlv
blBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gbmV4dFBhcmFncmFwaFBv
c2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAg
ICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpM
aW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2ljYWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZv
cm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBl
bmRPZlBhcmFncmFwaChlbmRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBpZiAoaXNF
ZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVudCgpKSkKICAgICAgICAgICAgIHBvcyA9
IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC04NTMsNyArODUzLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5
ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFy
aXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpIHsK
ICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtODYyLDcgKzg2Miw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2Vs
ZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUsIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAgICBib29sIHNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1lbnQtPmVkaXRvcigpLmJlaGF2aW9yKCku
c2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24s
IHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwpAQCAtODcwLDE5ICs4NzAsMTkgQEAgVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgKnJlYWNoZWRC
b3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwogICAgIH0K
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRh
cnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9
IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHJpZ2h0Qm91bmRhcnlPZkxpbmUoc3Rh
cnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg5NSwxNSArODk1
LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAg
KnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9z
aXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGN1cnJlbnRQb3Np
dGlvbiA9IGVuZEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBA
IC05MTIsMTkgKzkxMiwxOSBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlm
eU1vCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICAvLyBGSVhNRTogU3RheSBpbiBlZGl0
YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24gZ3JhbnVsYXJpdGllcy4KICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24u
ZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIHJlYWNoZWRCb3Vu
ZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRX
b3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRTZW50ZW5jZVBvc2l0aW9u
KGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewogICAg
ICAgICAvLyBkb3duLWFycm93aW5nIGZyb20gYSByYW5nZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0
IHRoZSBzdGFydCBvZiBhIGxpbmUgbmVlZHMKICAgICAgICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVj
dGlvbiBhdCB0aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQgdG8gY2FsbCBuZXh0TGluZVBvc2l0aW9u
ISkKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9uOwpAQCAtOTMyLDIyICs5MzIsMjIgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgcG9z
ID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0
aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50
UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihT
VEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAg
ICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVuZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgp
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAg
ICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoY3VycmVudFBvc2l0aW9uKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBjdXJyZW50UG9zaXRpb247CiAgICAg
ICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAg
ICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zKTsKQEAgLTk1NiwxMyArOTU2LDEz
IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIFdvcmRHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRl
bmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3Vt
ZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRh
cnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAg
IGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9z
ID09IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgYnJlYWs7CkBAIC05ODIsMzMgKzk4MiwzMyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0
ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGly
ZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYg
dGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBw
b3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVC
b3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2Fy
ZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4
dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQ
YXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9j
dW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTEwMjcsMzggKzEwMjcsMzggQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIEl0IHdhcyBkb25lIGhlcmUgaW5zdGVhZCBv
ZiBpbiBWaXNpYmxlUG9zaXRpb24gYmVjYXVzZSB3ZSB3YW50IFZQcyB0byBpdGVyYXRlCiAgICAg
Ly8gb3ZlciBldmVyeXRoaW5nLgogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcG9z
ID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNMaW5l
UG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRGb3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRp
b24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAg
ICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBv
aW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBs
YXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2Fs
U3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRGb3JQbGF0Zm9y
bSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBzdGFy
dEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRlZXBF
cXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChw
b3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRG9jdW1lbnQocG9z
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA3NCw3ICsxMDc0LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVh
Y2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBzd2l0
Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChp
c1JhbmdlKCkpCiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpAQCAtMTA4Myw3ICsx
MDgzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxlZnQodHJ1ZSwgcmVhY2hlZEJvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OiB7CiAgICAgICAgIGJvb2wgc2tpcHNT
cGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+ZWRpdG9yKCku
YmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92aW5nUmlnaHQoKTsKICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxl
Y3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9IGxlZnRXb3JkUG9zaXRpb24oY3VycmVu
dFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0KTsKQEAgLTEwOTEsMTkgKzEwOTEs
MTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAg
ICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAg
ICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJkKGdyYW51bGFyaXR5LCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsZWZ0Qm91bmRh
cnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCks
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTExMTYsMTUgKzExMTYsMTUgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2Fz
ZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHko
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3Vu
ZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRGb3JQbGF0Zm9ybSgpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgpAQCAtMTEzMiw1MiArMTEzMiw1MiBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgfQogICAgIFZpc2libGVQb3NpdGlvbiBwb3M7CiAg
ICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2Vs
ZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAg
ICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IHByZXZpb3VzU2VudGVu
Y2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExp
bmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgogICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxp
bmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlv
dXNQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZv
ckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNl
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZTZW50ZW5jZShjdXJyZW50UG9zaXRpb24p
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxp
bmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQ
YXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gc3RhcnRPZlBhcmFncmFwaChjdXJyZW50
UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwb3MuZGVl
cEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3MgPSBzdGFydE9mRWRpdGFibGVDb250ZW50
KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChw
b3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFw
aEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICBjYXNlIFBhcmFn
cmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpT
ZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaWYgKHJlYWNoZWRCb3VuZGFyeSkKICAgICAg
ICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0gY3VycmVudFBvc2l0aW9uOwogICAgICAg
ICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KIAogc3RhdGljIGJvb2wgaXNCb3VuZGFyeShUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8
fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBEb2N1
bWVudEJvdW5kYXJ5OworICAgIHJldHVybiBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3Vu
ZGFyeTsKIH0KIAogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OnRleHRT
ZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKQEAgLTEyMDIsNTUgKzEyMDIsNTUg
QEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxlY3Rpb246OgogICAgIH0gZWxzZQog
ICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVu
ZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAg
aW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
V29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51
bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkg
PSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVj
dGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBib29sIGJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAg
Y2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAg
IGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFn
cmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5
OgogICAgICAgICBib3VuZGFyeSA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6Ci0gICAgY2FzZSBE
aXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKKyAg
ICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5
KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5k
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA6IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoK
LSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAg
aWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBm
bGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uQmVnaW5uaW5nOwogICAgICAgICBlbHNlCkBAIC0xMjYyLDU4ICsxMjYyLDU4IEBAIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKIAogc3RhdGljIEFYVGV4dFNlbGVj
dGlvbiB0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFyaXR5KFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICAv
LyBGSVhNRTogQWNjb3VudCBmb3IgQklESSBpbiBEaXJlY3Rpb25SaWdodCAmIERpcmVjdGlvbkxl
ZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQgbWFwIHRvIFByZXZpb3VzL0JlZ2lubmlu
ZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCisgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIEJJREkg
aW4gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCAmIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdC4g
KEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAgdG8gUHJldmlvdXMvQmVnaW5uaW5nIGFu
ZCBMZWZ0IHRvIE5leHQvRW5kLikKICAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24gaW50ZW50
RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5rbm93bjsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgIGlu
dGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25M
ZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgogICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5IGludGVudEdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duOwogICAgIHN3aXRjaCAoZ3Jh
bnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVs
YXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxl
Y3Rpb25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFy
eSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2Vu
dGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3Vu
ZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAg
ICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6IC8v
IEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEJvdW5kYXJ5OiAvLyBGSVhNRTogQm91bmRhcnkgc2hvdWxkIGFmZmVjdCBk
aXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFu
dWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBz
aG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBp
bnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewot
ICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAgaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAg
ICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAg
ICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ6CiAgICAgICAgICAgICBpbnRl
bnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xMzQ0LDI1ICsxMzQ0LDI1IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlm
eShFQWx0ZXJhdGlvbiAKICAgICBQb3NpdGlvbiBvcmlnaW5hbFN0YXJ0UG9zaXRpb24gPSBtX3Nl
bGVjdGlvbi5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbjsKICAgICBzd2l0
Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1v
dmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5
LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zaXRpb24g
PSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVyYXRpb25FeHRlbmQpCiAgICAgICAgICAg
ICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVj
dGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlm
IChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5
TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nTGVmdChncmFudWxhcml0eSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgY2FzZSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJh
dGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCkBAIC0xNDAyLDcgKzE0MDIsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgY2FzZSBBbHRlcmF0aW9u
RXh0ZW5kOgogCiAgICAgICAgIGlmICghbV9zZWxlY3Rpb24uaXNDYXJldCgpCi0gICAgICAgICAg
ICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFBh
cmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IExpbmVHcmFudWxhcml0eSkKKyAg
ICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5KQog
ICAgICAgICAgICAgJiYgbV9kb2N1bWVudCAmJiAhbV9kb2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZp
b3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRPckxpbmVBY3Jvc3NDYXJldCgpKSB7CiAg
ICAgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIHNlbGVjdGlvbiBnbyBhY3Jvc3MgdGhlIGJhc2Ug
cG9zaXRpb24gZGlyZWN0bHkuIE5lZWRlZCB0byBtYXRjaCBtYWMKICAgICAgICAgICAgIC8vIGJl
aGF2aW9yIHdoZW4sIGZvciBpbnN0YW5jZSwgd29yZC1zZWxlY3RpbmcgYmFja3dhcmRzIHN0YXJ0
aW5nIHdpdGggdGhlIGNhcmV0IGluCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICBzZXRFeHRlbnQocG9zaXRp
b24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKTsKLSAgICAg
ICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8
fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERp
cmVjdGlvbkxlZnQpKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSICYm
IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0KSB8fCAodGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlv
bjo6TGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVk
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFydChwb3NpdGlvbiwg
dXNlclRyaWdnZXJlZCk7CkBAIC0xNDI4LDExICsxNDI4LDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAg
IGlmIChncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFy
YWdyYXBoR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0
eTo6TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoR3JhbnVsYXJpdHkpCiAgICAgICAgIG1feFBvc0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0
aW9uID0geDsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCi0gICAg
ICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgbV9ncmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBz
ZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJl
Y3Rpb25VcCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgd2ls
bEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBMYXlvdXRVbml0IHhQb3M7CkBAIC0xNTI0LDcgKzE1
MjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgfQog
CiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCkKLSAgICAgICAgbV9ncmFu
dWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICBtX2dyYW51bGFyaXR5ID0g
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKIAogICAgIG1fc2VsZWN0aW9u
LnNldElzRGlyZWN0aW9uYWwoc2hvdWxkQWx3YXlzVXNlRGlyZWN0aW9uYWxTZWxlY3Rpb24obV9k
b2N1bWVudCkgfHwgYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCk7CiAKQEAgLTE1NzIsMTMgKzE1
NzIsMTMgQEAgTGF5b3V0VW5pdCBGcmFtZVNlbGVjdGlvbjo6bGluZURpcmVjdGlvbgogCiB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpjbGVhcigpCiB7Ci0gICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIG1fZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OwogICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCkpOwog
fQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKCkKIHsKLSAg
ICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgbV9ncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICNpZiBFTkFCTEUo
VEVYVF9DQVJFVCkKICAgICBtX2NhcmV0QmxpbmtUaW1lci5zdG9wKCk7CkBAIC0xNTg3LDcgKzE1
ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyCiAgICAgaWYg
KGF1dG8qIHZpZXcgPSBtX2RvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgIHZpZXctPnNl
bGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAgICBzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24oKSwgZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0
eSk7CisgICAgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShWaXNpYmxlU2Vs
ZWN0aW9uKCksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAg
bV9wcmV2aW91c0NhcmV0Tm9kZSA9IG51bGxwdHI7CiAgICAgbV90eXBpbmdTdHlsZSA9IG51bGxw
dHI7CiAgICAgbV9hcHBlYXJhbmNlVXBkYXRlVGltZXIuc3RvcCgpOwpAQCAtMjE2NSw3ICsyMTY1
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQXBwZWFyYW5jZSgpCiAgICAgLy8gQ29u
c3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2luY2UgbV9zZWxlY3Rpb24gaXMgbm90IG5l
Y2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2luZyBzdGVwcwogICAgIC8vIGFzc3VtZSBh
IHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTAyMzI4NjY+LgogI2lmIEVOQUJMRShU
RVhUX0NBUkVUKQotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWlu
dEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChDaGFyYWN0ZXJHcmFudWxhcml0
eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRW
aXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2Fy
ZChUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ob2xkU2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLCBlbmRWaXNpYmxlUG9zaXRpb24pOwogI2Vsc2UKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVj
dGlvbi52aXNpYmxlRW5kKCkpOwpAQCAtMjc0MywxMCArMjc0MywxMCBAQCBWaXNpYmxlU2VsZWN0
aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsCiAgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBv
ZiBzZWxlY3RpbmcgdGhlIHdvcmQgb24gdGhlIGxpbmUgKHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSB3YW50LCByYXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4K
ICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNpYmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAm
JiAhaXNTdGFydE9mUGFyYWdyYXBoKGVuZFZpc2libGVQb3NCZWZvcmVFeHBhbnNpb24pKQotICAg
ICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
LCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFt
ZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5KTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rp
b24uc2VsZWN0aW9uKCk7Ci0gICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgZnJhbWVTZWxlY3Rpb24u
c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBm
cmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZy
YW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAg
VmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbAogICAgICAgICAgICAgcmV0
dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAgfQogICAgICAgICBmcmFtZVNlbGVjdGlv
bi5tb3ZlVG8oc3RhcnRWaXNpYmxlUG9zKTsKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgV29y
ZEdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgIHN0YXJ0UG9zID0gZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgZW5kUG9zID0gZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAgIHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2li
bGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9BRkZJTklUWSk7CkBAIC0yODcyLDkgKzI4
NzIsOSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhCiAKICAgICBG
cmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxl
Y3Rpb24obV9zZWxlY3Rpb24pOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBh
bW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVjdGlvbkJhY2t3YXJkOworICAgIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gU2VsZWN0aW9uRGlyZWN0
aW9uOjpGb3J3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFicyhhbW91bnQpOyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1v
ZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwgVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9u
LnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwg
Ym9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlv
bjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxl
Y3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5l
ZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRp
b25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCks
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vy
c29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51
bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICBl
bnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqLCBFQWZmaW5pdHksIFNob3Vs
ZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCShyZXZpc2lvbiAyNjE2OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxhcml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFRo
aXMgcmVhbGx5IHNob3VsZCBiZSBicm9rZW4gdXAgaW50byBtb3JlIHRoYW4gb25lIGNvbmNlcHQu
CiAvLyBGcmFtZSBkb2Vzbid0IG5lZWQgdGhlIDMgYm91bmRhcmllcyBpbiB0aGlzIGVudW0uCi1l
bnVtIFRleHRHcmFudWxhcml0eSB7CitlbnVtIGNsYXNzIFRleHRHcmFudWxhcml0eSA6IHVpbnQ4
X3QgewogICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAogICAgIFdvcmRHcmFudWxhcml0eSwKICAg
ICBTZW50ZW5jZUdyYW51bGFyaXR5LApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBp
bmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGlu
Z0NvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1R5cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTYgKzEwMSwxNiBAQCBz
dGF0aWMgaW5saW5lIEVkaXRBY3Rpb24gZWRpdEFjdGlvbkZvclR5CiAgICAgY2FzZSBUeXBpbmdD
b21tYW5kOjpEZWxldGVTZWxlY3Rpb246CiAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBp
bmdEZWxldGVTZWxlY3Rpb247CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVLZXk6IHsK
LSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFdvcmRHcmFudWxhcml0eSkKKyAgICAgICAgaWYg
KGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAg
ICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZVdvcmRCYWNrd2FyZDsKLSAgICAg
ICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAgICAgICAgaWYgKGdyYW51bGFy
aXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJu
IEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVCYWNrd2FyZDsKICAgICAgICAgcmV0dXJuIEVk
aXRBY3Rpb246OlR5cGluZ0RlbGV0ZUJhY2t3YXJkOwogICAgIH0KICAgICBjYXNlIFR5cGluZ0Nv
bW1hbmQ6OkZvcndhcmREZWxldGVLZXk6Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBXb3Jk
R3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSkKICAgICAgICAgICAgIHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdE
ZWxldGVXb3JkRm9yd2FyZDsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFy
eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVGb3J3
YXJkOwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6VHlwaW5nRGVsZXRlRm9yd2FyZDsKICAg
ICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQ6CkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oRG9jdQogCiB2b2lkIFR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBPcHRpb25zIG9wdGlvbnMs
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICBpZiAoUmVmUHRyPFR5cGlu
Z0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFzdFR5cGluZ0NvbW1hbmRJZlN0aWxsT3Bl
bkZvclR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlm
ZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3Vt
ZW50KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21tYW5kLT5zZXRJc0F1dG9jb21wbGV0aW9u
KG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFR5
cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZv
cndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBkb2N1bWVudCwgT3B0aW9ucyBvcHRpb25z
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgLy8gRklYTUU6IEZvcndhcmQg
ZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3BlbiBhbmQgY2xvc2UgYSBuZXcgdHlwaW5n
IGNvbW1hbmQuCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3RlckdyYW51bGFyaXR5KSB7
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxUeXBpbmdDb21tYW5kPiBsYXN0VHlwaW5nQ29t
bWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9wZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7
CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRpZmZlcmVudEZyb21DdXJyZW50U2VsZWN0
aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1bWVudCk7CiAgICAgICAgICAgICBsYXN0
VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlvbihvcHRpb25zICYgSXNBdXRvY29tcGxl
dGlvbik7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0
QW5kTm90aWZ5QQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHRSdW5XaXRob3V0TmV3
bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCkKIHsKLSAg
ICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIENoYXJhY3Rlckdy
YW51bGFyaXR5LCB0ZXh0KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKElu
c2VydFRleHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHRleHQpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNvbW1hbmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6
Y3JlYXRlKGRvY3VtZW50KCksIHRleHQsIHNlbGVjdEluc2VydGVkVGV4dCwKQEAgLTU0NSw3ICs1
NDUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydExpbmVCcmVhaygpCiAgICAgaWYgKCFj
YW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRM
aW5lQnJlYWssIExpbmVHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVu
Q29tbWFuZChJbnNlcnRMaW5lQnJlYWssIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0
TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKQEAgLTU2NSw3ICs1NjUsNyBA
QCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyCiAgICAgaWYgKCFjYW5B
cHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRU
eXBpbmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFwaFNlcGFyYXRvciwgVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0
ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246OlR5cGluZ0luc2VydFBhcmFn
cmFwaCkpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXIKIAogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0
b3JJblF1b3RlZENvbnRlbnQoKQogewotICAgIGlmICghd2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1h
bmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50LCBQYXJhZ3JhcGhHcmFu
dWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRQYXJh
Z3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB0aGUgc2VsZWN0aW9u
IHN0YXJ0cyBpbnNpZGUgYSB0YWJsZSwganVzdCBpbnNlcnQgdGhlIHBhcmFncmFwaCBzZXBhcmF0
b3Igbm9ybWFsbHkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0
ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwogICAg
ICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpKTsKLSAgICAgICAg
c2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKLSAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJp
bmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRl
bmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAg
aWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxh
cml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQorICAgICAgICAg
ICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSk7CiAKICAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQg
PSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKICAgICAgICAgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9uID0gdmlzaWJsZVN0YXJ0LnByZXZpb3VzKENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIFR5cGluZ0Nv
bW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAgICAgICAgICBpZiAoaXNMYXN0UG9zaXRp
b25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJhY2t3YXJkIGludG8gdGhlIGxhc3Qg
Y2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0aGUgbW92ZS4KLSAgICAgICAgICAgIHNl
bGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlv
bkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3
YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIC8vIElmIHRoZSBjYXJldCBpcyBqdXN0IGFmdGVy
IGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRvbid0IGRlbGV0ZSBhbnl0aGluZy4KICAg
ICAgICAgfSBlbHNlIGlmIChOb2RlKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
dmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxlKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3Rh
cnQoKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRl
eAogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpOwog
Ci0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUu
c3RhcnQoKS5jb250YWluZXJOb2RlKCkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgJiYgc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkuY29udGFpbmVy
Tm9kZSgpCiAgICAgICAgICAgICAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA+IDEpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFy
ZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUg
cmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlvbnMuCiAgICAgICAgICAgICBzZWxlY3Rp
b25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFsaWRhdGlvbihzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwg
c2VsZWN0aW9uVG9EZWxldGUuZW5kKCkucHJldmlvdXMoQmFja3dhcmREZWxldGlvbikpOwpAQCAt
NzczLDExICs3NzMsMTEgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJl
cwogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1lbnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEg
ZG9jdW1lbnQuCiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHNlbGVjdGlvbjsKICAgICAgICAgc2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKSk7Ci0gICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndh
cmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBncmFudWxh
cml0eSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCi0gICAgICAgICAgICBz
ZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGlmIChzaG91bGRBZGRU
b0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAg
ICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRv
d25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQgPSBlbmRpbmdT
ZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC03OTUsOCArNzk1LDggQEAgdm9pZCBUeXBpbmdD
b21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAgICAgICB9CiAKICAgICAgICAgLy8gZGVs
ZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMg
dG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBhbnkpCi0gICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxlY3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJl
dCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uLnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAg
ICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5
ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkgJiYgaXNFbmRPZlBhcmFncmFwaChz
ZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpKSkKKyAgICAgICAgICAgIHNlbGVjdGlv
bi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAK
ICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAgICAg
ICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1JhbmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxl
dGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCkuc3RhcnQoKSkKQEAgLTg1Niw3ICs4NTYs
NyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzCiAKIHZvaWQgVHlw
aW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wgc21hcnREZWxldGUpCiB7Ci0gICAgaWYg
KCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxldGVTZWxlY3Rpb24sIENoYXJhY3Rlckdy
YW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKERlbGV0ZVNl
bGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24oc21h
cnREZWxldGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmgJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHVu
c2lnbmVkIE9wdGlvbnM7CiAKICAgICBzdGF0aWMgdm9pZCBkZWxldGVTZWxlY3Rpb24oRG9jdW1l
bnQmLCBPcHRpb25zID0gMCwgVGV4dENvbXBvc2l0aW9uVHlwZSA9IFRleHRDb21wb3NpdGlvbk5v
bmUpOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25z
ID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwotICAgIHN0YXRp
YyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRl
eHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBzdGF0aWMgdm9pZCBk
ZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9
IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHN0YXRpYyB2b2lk
IGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFu
dWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIHN0
YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBPcHRpb25zLCBU
ZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgc3RhdGljIHZv
aWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0aW9uTm9u
ZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0TGluZUJyZWFrKERvY3VtZW50JiwgT3B0aW9ucyk7
CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIFJlZjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFVHlwaW5n
Q29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRleHQgPSBlbXB0eVN0cmluZygpLCBPcHRp
b25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29t
cG9zaXRpb25Ob25lKQorICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3Vt
ZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0
ID0gZW1wdHlTdHJpbmcoKSwgT3B0aW9ucyBvcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgVGV4dENv
bXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25Ob25lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwg
Y29tbWFuZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRp
b25zIG9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUgY29tcG9zaXRpb25UeXBlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29t
bWFuZCwgdGV4dCwgb3B0aW9ucywgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGNvbXBvc2l0aW9uVHlw
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBpbmdDb21tYW5kKGRvY3VtZW50
LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9CiAKICAgICBUeXBpbmdDb21tYW5kKERv
Y3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9ucywgVGV4
dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcxLDEyMCArMjcxLDEyMCBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5k
RW5kRnJvCiAgICAgfQogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgotICAgICAgICAgICAgLy8gRG9uJ3QgZG8gYW55IGV4cGFu
c2lvbi4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdvcmRHcmFudWxhcml0eTog
ewotICAgICAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBTZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0
IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElm
T25Cb3VuZGFyeSkuCi0gICAgICAgICAgICAvLyBFZGdlIGNhc2U6IElmIHRoZSBjYXJldCBpcyBh
ZnRlciB0aGUgbGFzdCB3b3JkIGluIGEgc29mdC13cmFwcGVkIGxpbmUgb3IgdGhlIGxhc3Qgd29y
ZCBpbgotICAgICAgICAgICAgLy8gdGhlIGRvY3VtZW50LCBzZWxlY3QgdGhhdCBsYXN0IHdvcmQg
KExlZnRXb3JkSWZPbkJvdW5kYXJ5KS4KLSAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhl
IGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgsIHNlbGVjdCBmcm9t
IHRoZSBlbmQgb2YgdGhlCi0gICAgICAgICAgICAvLyBsYXN0IHdvcmQgdG8gdGhlIGxpbmUgYnJl
YWsgKGFsc28gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgIFZpc2libGVQb3Np
dGlvbiBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Ci0g
ICAgICAgICAgICBFV29yZFNpZGUgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKLSAgICAg
ICAgICAgIGlmIChpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudChzdGFydCkgfHwg
KGlzRW5kT2ZMaW5lKHN0YXJ0KSAmJiAhaXNTdGFydE9mTGluZShzdGFydCkgJiYgIWlzRW5kT2ZQ
YXJhZ3JhcGgoc3RhcnQpKSkKLSAgICAgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91
bmRhcnk7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZldvcmQoc3RhcnQsIHNpZGUpLmRl
ZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
OwotICAgICAgICAgICAgaWYgKGlzRW5kT2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9y
aWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5l
KG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRPZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQotICAgICAg
ICAgICAgICAgIHNpZGUgPSBMZWZ0V29yZElmT25Cb3VuZGFyeTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChvcmlnaW5hbEVu
ZCwgc2lkZSkpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCh3b3JkRW5kKTsKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgICAgIC8v
IERvbid0IGRvIGFueSBleHBhbnNpb24uCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgLy8gR2VuZXJhbCBjYXNlOiBT
ZWxlY3QgdGhlIHdvcmQgdGhlIGNhcmV0IGlzIHBvc2l0aW9uZWQgaW5zaWRlIG9mLCBvciBhdCB0
aGUgc3RhcnQgb2YgKFJpZ2h0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2UgY2Fz
ZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQg
bGluZSBvciB0aGUgbGFzdCB3b3JkIGluCisgICAgICAgIC8vIHRoZSBkb2N1bWVudCwgc2VsZWN0
IHRoYXQgbGFzdCB3b3JkIChMZWZ0V29yZElmT25Cb3VuZGFyeSkuCisgICAgICAgIC8vIEVkZ2Ug
Y2FzZTogSWYgdGhlIGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBwYXJhZ3JhcGgs
IHNlbGVjdCBmcm9tIHRoZSBlbmQgb2YgdGhlCisgICAgICAgIC8vIGxhc3Qgd29yZCB0byB0aGUg
bGluZSBicmVhayAoYWxzbyBSaWdodFdvcmRJZk9uQm91bmRhcnkpOworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnQgPSBWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBvcmlnaW5hbEVuZChtX2VuZCwgbV9hZmZpbml0eSk7Cisg
ICAgICAgIEVXb3JkU2lkZSBzaWRlID0gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5OworICAgICAgICBp
ZiAoaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQoc3RhcnQpIHx8IChpc0VuZE9m
TGluZShzdGFydCkgJiYgIWlzU3RhcnRPZkxpbmUoc3RhcnQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KHN0YXJ0KSkpCisgICAgICAgICAgICBzaWRlID0gTGVmdFdvcmRJZk9uQm91bmRhcnk7CisgICAg
ICAgIG1fc3RhcnQgPSBzdGFydE9mV29yZChzdGFydCwgc2lkZSkuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgc2lkZSA9IFJpZ2h0V29yZElmT25Cb3VuZGFyeTsKKyAgICAgICAgaWYgKGlzRW5k
T2ZFZGl0YWJsZU9yTm9uRWRpdGFibGVDb250ZW50KG9yaWdpbmFsRW5kKSB8fCAoaXNFbmRPZkxp
bmUob3JpZ2luYWxFbmQpICYmICFpc1N0YXJ0T2ZMaW5lKG9yaWdpbmFsRW5kKSAmJiAhaXNFbmRP
ZlBhcmFncmFwaChvcmlnaW5hbEVuZCkpKQorICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZP
bkJvdW5kYXJ5OworCisgICAgICAgIFZpc2libGVQb3NpdGlvbiB3b3JkRW5kKGVuZE9mV29yZChv
cmlnaW5hbEVuZCwgc2lkZSkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kKHdvcmRFbmQp
OworICAgICAgICAKKyAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2luYWxFbmQpICYm
ICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIC8vIFNlbGVjdCB0aGUgcGFyYWdyYXBoIGJyZWFrICh0aGUgc3BhY2UgZnJvbSB0aGUgZW5k
IG9mIGEgcGFyYWdyYXBoIHRvIHRoZSBzdGFydCBvZiAKKyAgICAgICAgICAgIC8vIHRoZSBuZXh0
IG9uZSkgdG8gbWF0Y2ggVGV4dEVkaXQuCisgICAgICAgICAgICBlbmQgPSB3b3JkRW5kLm5leHQo
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzRW5kT2ZQYXJhZ3JhcGgob3JpZ2lu
YWxFbmQpICYmICFpc0VtcHR5VGFibGVDZWxsKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHBhcmFncmFwaCBicmVhayAodGhlIHNwYWNl
IGZyb20gdGhlIGVuZCBvZiBhIHBhcmFncmFwaCB0byB0aGUgc3RhcnQgb2YgCi0gICAgICAgICAg
ICAgICAgLy8gdGhlIG5leHQgb25lKSB0byBtYXRjaCBUZXh0RWRpdC4KLSAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kLm5leHQoKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIHBhcmFncmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBw
YXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBhIGJsb2NrIHRhYmxlIGVuZHMKLSAgICAgICAg
ICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhlIHRh
YmxlLgotICAgICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IHdvcmRFbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRF
bmQ7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IC8vIEVuZCBtdXN0IG5vdCBiZSBiZWZvcmUgc3RhcnQuCi0gICAgICAgICAgICBpZiAobV9zdGFy
dC5kZXByZWNhdGVkTm9kZSgpID09IG1fZW5kLmRlcHJlY2F0ZWROb2RlKCkgJiYgbV9zdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbV9lbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkgewotICAgICAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGFydCA9IG1fZW5kOyAgICAKLSAgICAgICAgICAgICAgICBtX2VuZCA9IHN3YXA7
ICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OiB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3Rh
cnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVx
dWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6IHsKLSAgICAg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9h
ZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOwotICAg
ICAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlzIGxpbmUgaXMgYXQgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCi0gICAgICAgICAgICAvLyBhZnRlciB0aGUgZW5k
IG9mIHRoZSBsaW5lIGluIHRoZSBzZWxlY3Rpb24uCi0gICAgICAgICAgICBpZiAoaXNFbmRPZlBh
cmFncmFwaChlbmQpKSB7Ci0gICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHQgPSBl
bmQubmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0LmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICBlbmQgPSBuZXh0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9l
bmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0
T2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxl
bnQoKTsKLSAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2Vu
ZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eTogewotICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsKLSAgICAgICAgICAgIGlmIChpc1N0YXJ0
T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQocG9zKSkK
LSAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKLSAgICAgICAgICAgIG1fc3Rh
cnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlz
aWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAotICAgICAgICAgICAgLy8gb2YgdGhl
IG5leHQgb25lKSBpbiB0aGUgc2VsZWN0aW9uLgotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCh2aXNpYmxlUGFyYWdyYXBoRW5kLm5leHQoKSk7Ci0gICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiB0YWJsZSA9IGlzRmlyc3RQb3NpdGlvbkFmdGVyVGFibGUo
ZW5kKSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJhZ3JhcGggYnJlYWsgYWZ0ZXIgdGhl
IGxhc3QgcGFyYWdyYXBoIGluIHRoZSBsYXN0IGNlbGwgb2YgYSBibG9jayB0YWJsZSBlbmRzCi0g
ICAgICAgICAgICAgICAgLy8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggYWZ0ZXIgdGhl
IHRhYmxlLCBub3QgYXQgdGhlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgdGhlIHRhYmxlLgorICAgICAg
ICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGFmdGVyIHRoZSB0YWJs
ZS4KICAgICAgICAgICAgICAgICBpZiAoaXNCbG9jayh0YWJsZSkpCiAgICAgICAgICAgICAgICAg
ICAgIGVuZCA9IGVuZC5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKLSAgICAgICAg
ICAgICAgICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBh
cmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3JhcGhFbmQ7
CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHdvcmRFbmQ7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsKKyAgICAgICAgICAgICAg
ICBlbmQgPSB3b3JkRW5kOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9lbmQgPSBl
bmQuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
RG9jdW1lbnQobV9zdGFydC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAg
ICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5kLmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
LSAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbiht
X3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIG1fZW5k
ID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVl
cEVxdWl2YWxlbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNl
Qm91bmRhcnk6Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQ
b3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAg
ICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5p
dHkpKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICAgICAgLy8gRW5kIG11c3Qgbm90IGJlIGJlZm9yZSBzdGFydC4K
KyAgICAgICAgaWYgKG1fc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSA9PSBtX2VuZC5kZXByZWNhdGVk
Tm9kZSgpICYmIG1fc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IG1fZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHN3YXAobV9zdGFy
dCk7CisgICAgICAgICAgICBtX3N0YXJ0ID0gbV9lbmQ7ICAgIAorICAgICAgICAgICAgbV9lbmQg
PSBzd2FwOyAgICAKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6IHsKKyAgICAgICAgbV9zdGFydCA9
IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRl
ZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG1fZW5kID0gZW5kT2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eTogewor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
ID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpOworICAgICAg
ICAvLyBJZiB0aGUgZW5kIG9mIHRoaXMgbGluZSBpcyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
LCBpbmNsdWRlIHRoZSBzcGFjZSAKKyAgICAgICAgLy8gYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgbGlu
ZSBpbiB0aGUgc2VsZWN0aW9uLgorICAgICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmQpKSB7
CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dCA9IGVuZC5uZXh0KCk7CisgICAgICAg
ICAgICBpZiAobmV4dC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBuZXh0Owor
ICAgICAgICB9CisgICAgICAgIG1fZW5kID0gZW5kLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5Ogor
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1f
YWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKS5kZWVwRXF1aXZhbGVudCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHk6IHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsK
KyAgICAgICAgaWYgKGlzU3RhcnRPZkxpbmUocG9zKSAmJiBpc0VuZE9mRWRpdGFibGVPck5vbkVk
aXRhYmxlQ29udGVudChwb3MpKQorICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKCk7Cisg
ICAgICAgIG1fc3RhcnQgPSBzdGFydE9mUGFyYWdyYXBoKHBvcykuZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFn
cmFwaChWaXNpYmxlUG9zaXRpb24obV9lbmQsIG1fYWZmaW5pdHkpKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEluY2x1ZGUgdGhlICJwYXJhZ3JhcGggYnJlYWsiICh0aGUgc3BhY2UgZnJvbSB0aGUg
ZW5kIG9mIHRoaXMgcGFyYWdyYXBoIHRvIHRoZSBzdGFydAorICAgICAgICAvLyBvZiB0aGUgbmV4
dCBvbmUpIGluIHRoZSBzZWxlY3Rpb24uCisgICAgICAgIFZpc2libGVQb3NpdGlvbiBlbmQodmlz
aWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOworCisgICAgICAgIGlmIChOb2RlKiB0YWJsZSA9IGlz
Rmlyc3RQb3NpdGlvbkFmdGVyVGFibGUoZW5kKSkgeworICAgICAgICAgICAgLy8gVGhlIHBhcmFn
cmFwaCBicmVhayBhZnRlciB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIGxhc3QgY2VsbCBvZiBh
IGJsb2NrIHRhYmxlIGVuZHMKKyAgICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFy
YWdyYXBoIGFmdGVyIHRoZSB0YWJsZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRo
ZSB0YWJsZS4KKyAgICAgICAgICAgIGlmIChpc0Jsb2NrKHRhYmxlKSkKKyAgICAgICAgICAgICAg
ICBlbmQgPSBlbmQubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgICAgICAg
ICAvLyBUaGVyZSBpcyBubyBwYXJhcmdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0IHBhcmFncmFw
aCBpbiB0aGUgbGFzdCBjZWxsIG9mIGFuIGlubGluZSB0YWJsZS4KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbmQgPSB2aXNpYmxlUGFyYWdyYXBoRW5kOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGVuZC5pc051bGwoKSkKKyAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJh
Z3JhcGhFbmQ7CisKKyAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgorICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1lbnQo
KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZkRvY3VtZW50KG1fZW5k
LmRvY3VtZW50KCkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICAgICAgbV9zdGFydCA9IHN0
YXJ0T2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVw
RXF1aXZhbGVudCgpOworICAgICAgICBtX2VuZCA9IGVuZE9mUGFyYWdyYXBoKFZpc2libGVQb3Np
dGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgICAgICBt
X3N0YXJ0ID0gc3RhcnRPZlNlbnRlbmNlKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmlu
aXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgbV9lbmQgPSBlbmRPZlNlbnRlbmNlKFZp
c2libGVQb3NpdGlvbihtX2VuZCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBub3QgaGF2ZSBhIGRhbmdsaW5nIHN0YXJ0IG9y
IGVuZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiVGV4dEdy
YW51bGFyaXR5LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw3ICszNiw3IEBA
IGNsYXNzIFBvc2l0aW9uOwogc3RydWN0IFNpbXBsZVJhbmdlOwogCiBjb25zdCBFQWZmaW5pdHkg
U0VMX0RFRkFVTFRfQUZGSU5JVFkgPSBET1dOU1RSRUFNOwotZW51bSBTZWxlY3Rpb25EaXJlY3Rp
b24gOiB1aW50OF90IHsgRGlyZWN0aW9uRm9yd2FyZCwgRGlyZWN0aW9uQmFja3dhcmQsIERpcmVj
dGlvblJpZ2h0LCBEaXJlY3Rpb25MZWZ0IH07CitlbnVtIGNsYXNzIFNlbGVjdGlvbkRpcmVjdGlv
biA6IHVpbnQ4X3QgeyBGb3J3YXJkLCBCYWNrd2FyZCwgUmlnaHQsIExlZnQgfTsKIAogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbiB7CiBwdWJsaWM6CkBAIC0xMTcsNyArMTE4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2l0aG91dFZhbGlkYXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5ID0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIHZvaWQgdmFsaWRhdGUoVGV4dEdyYW51bGFyaXR5
ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAvLyBTdXBw
b3J0IG1ldGhvZHMgZm9yIHZhbGlkYXRlKCkKICAgICB2b2lkIHNldEJhc2VBbmRFeHRlbnRUb0Rl
ZXBFcXVpdmFsZW50cygpOwpAQCAtMTY0LDMgKzE2NSwxNyBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yCiB2b2lkIHNob3dUcmVlKGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb24mKTsKIHZvaWQgc2hvd1RyZWUoY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiopOwogI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLAorICAgICAgICBXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLAorICAgICAgICBXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0LAorICAgICAgICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rp
b246OkxlZnQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NTgsMjAgKzE1NTgsMjAgQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRhcnlPZkxpbmUoY29u
cwogCiBzdGF0aWMgYm9vbCBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0oU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkKQor
ICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3
YXJkKQorICAgIGlmIChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgZG9lc24ndCB0
YWtlIGludG8gYWNjb3VudCB0aGUgb3JpZ2luYWwgZGlyZWN0aW9uIG9mIHRoZSBlbGVtZW50Lgog
ICAgIC8vIEknbSBub3QgZml4aW5nIHRoaXMgbm93IGJlY2F1c2UgSSdtIGFmcmFpZCB0aGVyZSBp
cyBzb21lIGNvZGUgaW4gVUlLaXQgcmVseWluZyBvbgogICAgIC8vIHRoaXMgd3JvbmcgYmVoYXZp
b3IuCi0gICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodDsKKyAgICByZXR1cm4g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiB9CiAKIGJvb2wgYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIGlm
IChncmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJp
dHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBWaXNpYmxlUG9zaXRpb24gYm91bmRhcnk7CkBAIC0xNTc5LDcgKzE1
NzksNyBAQCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAgICAgYm9v
bCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gdmlzaWJs
ZV91bml0cyBjbGFpbXMgZXJyb25lb3VzbHkgdGhhdCB0aGUgc3RhcnQgYW5kIHRoZSBlbmQKICAg
ICAgICAgLy8gb2YgYSBwYXJhZ3JhcGggYXJlIHRoZSBlbmQgYW5kIHN0YXJ0IG9mIGEgd29yZCwg
cmVzcGVjdGl2ZWx5LgogICAgICAgICBpZiAoKHVzZURvd25zdHJlYW0gJiYgaXNTdGFydE9mUGFy
YWdyYXBoKHZwKSkgfHwgKCF1c2VEb3duc3RyZWFtICYmIGlzRW5kT2ZQYXJhZ3JhcGgodnApKSkK
QEAgLTE1ODksMjIgKzE1ODksMjIgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjb25z
dCBWaXNpYgogICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZldvcmQodnAs
IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSA6IHN0YXJ0T2ZXb3JkKHZwLCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
Ym91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZTZW50ZW5jZShwcmV2aW91c1NlbnRlbmNl
UG9zaXRpb24odnApKSA6IHN0YXJ0T2ZTZW50ZW5jZShuZXh0U2VudGVuY2VQb3NpdGlvbih2cCkp
OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEFmZmluaXR5IGhh
cyB0byBiZSBzZXQgdG8gZ2V0IHJpZ2h0IGJvdW5kYXJ5IG9mIHRoZSBsaW5lLgogICAgICAgICBi
b3VuZGFyeSA9IHZwOwogICAgICAgICBib3VuZGFyeS5zZXRBZmZpbml0eSh1c2VEb3duc3RyZWFt
ID8gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEUgOiBET1dOU1RSRUFNKTsKICAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZMaW5lKGJvdW5kYXJ5KSA6IHN0YXJ0T2ZMaW5lKGJv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgYm91bmRhcnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgodnApIDogc3RhcnRP
ZlBhcmFncmFwaCh2cCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBEb2N1bWVudEdyYW51
bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5Ogog
ICAgICAgICBib3VuZGFyeSA9IHVzZURvd25zdHJlYW0gPyBlbmRPZkRvY3VtZW50KHZwKSA6IHN0
YXJ0T2ZEb2N1bWVudCh2cCk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNjE4LDcgKzE2MTgsNyBA
QCBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2liCiAKIGJvb2wgd2l0aGlu
VGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAg
ICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkgfHwgZ3JhbnVsYXJpdHkg
PT0gRG9jdW1lbnRHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ym9vbCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CkBA
IC0xNjI3LDcgKzE2MjcsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShjb25z
dCBWCiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeTsKICAgICAKICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgLy8gTm90ZSB0aGF0ICJMZWZ0
IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9w
cmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgKHVzZURvd25zdHJlYW0gPyBSaWdodFdvcmRJZk9uQm91bmRhcnkgOiBM
ZWZ0V29yZElmT25Cb3VuZGFyeSkpOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQo
dnAsICh1c2VEb3duc3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9u
Qm91bmRhcnkpKTsKQEAgLTE2MzgsMTIgKzE2MzgsMTIgQEAgYm9vbCB3aXRoaW5UZXh0VW5pdE9m
R3JhbnVsYXJpdHkoY29uc3QgVgogCiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFy
aXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mU2VudGVuY2UodnApOwogICAgICAg
ICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZwKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mTGluZSh2cCk7CiAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7CiAKQEAgLTE2NTUsNyArMTY1NSw3IEBA
IGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwcmV2Qm91bmRh
cnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQ
YXJhZ3JhcGgodnApOwogICAgICAgICBicmVhazsKQEAgLTE2ODUsNyArMTY4NSw3IEBAIHN0YXRp
YyBWaXNpYmxlUG9zaXRpb24gbmV4dENoYXJhY3RlckJvdW4KIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbmV4dFdvcmRCb3VuZGFyeUluRGlyZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgYm9vbCB1c2VEb3duc3RyZWFt
ID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7Ci0gICAgYm9vbCB3aXRoaW5Vbml0
T2ZHcmFudWxhcml0eSA9IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgV29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOworICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAgICAgCiAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKQEAgLTE3NTksNyArMTc1OSw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gbmV4dFdvcmRCb3VuZGFyeUkKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4
dFNlbnRlbmNlQm91bmRhcnlJbkRpcmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9
IGRpcmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwotICAgIGJvb2wgd2l0aGluVW5pdE9m
R3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFNlbnRlbmNlR3Jh
bnVsYXJpdHksIGRpcmVjdGlvbik7CisgICAgYm9vbCB3aXRoaW5Vbml0T2ZHcmFudWxhcml0eSA9
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAK
ICAgICBpZiAod2l0aGluVW5pdE9mR3JhbnVsYXJpdHkpCkBAIC0xODAxLDkgKzE4MDEsOSBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhCb3VuCiB7CiAgICAgYXV0byB1c2VE
b3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAgICAgYXV0byBs
aW5lRGlyZWN0aW9uID0gcG9zaXRpb24ubGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rp
b25OYXZpZ2F0aW9uKCk7Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbikpCiAgICAgICAgIHJldHVybiB1c2VEb3duc3RyZWFtID8gc3RhcnRPZlBh
cmFncmFwaChuZXh0UGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVEaXJlY3Rpb24pKSA6
IGVuZE9mUGFyYWdyYXBoKHByZXZpb3VzUGFyYWdyYXBoUG9zaXRpb24ocG9zaXRpb24sIGxpbmVE
aXJlY3Rpb24pKTsKLSAgICBBU1NFUlQod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CisgICAgQVNTRVJUKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7CiAgICAgcmV0dXJuIHVzZURvd25zdHJlYW0gPyBl
bmRPZlBhcmFncmFwaChwb3NpdGlvbikgOiBzdGFydE9mUGFyYWdyYXBoKHBvc2l0aW9uKTsKIH0K
IApAQCAtMTgxNSwxNyArMTgxNSwxNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHREb2N1
bWVudEJvdW5kCiBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRDaGFy
YWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24sIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICByZXR1cm4gbmV4dFdvcmRCb3VuZGFyeUlu
RGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAg
cmV0dXJuIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHRMaW5lQm91bmRhcnlJbkRpcmVjdGlvbih2
cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5l
eHRQYXJhZ3JhcGhCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgcmV0dXJuIG5leHREb2N1bWVudEJvdW5kYXJ5SW5EaXJlY3Rp
b24odnAsIGRpcmVjdGlvbik7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xODQ0LDUyICsxODQ0LDUyIEBAIFJlZlB0cjxSYW5nZT4gZW5jbG9zaW5nVGV4
dFVuaXRPZkdyYW51bGEKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25z
dHJlYW0oZGlyZWN0aW9uKTsKIAogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICAgICAg
Y2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHZw
OwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgICAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgotICAgICAgICAg
ICAgaWYgKHVzZURvd25zdHJlYW0pIHsKLSAgICAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBz
dGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgICAgICAgICBu
ZXh0Qm91bmRhcnkgPSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZX
b3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHZwOworICAgICAgICBuZXh0Qm91
bmRhcnkgPSBwcmV2Qm91bmRhcnkubmV4dCgpOworICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mU2VudGVuY2UodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZTZW50ZW5j
ZSh2cCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIExpbmVHcmFudWxhcml0
eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKLSAgICAgICAg
ICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mTGluZSh2cCk7Ci0KLSAgICAgICAgICAgIGlmIChwcmV2
Qm91bmRhcnkgPT0gbmV4dEJvdW5kYXJ5KSB7Ci0gICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gbmV4dExpbmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOwotICAgICAgICAgICAgICAgIG5l
eHRCb3VuZGFyeS5zZXRBZmZpbml0eShVUFNUUkVBTSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFp
blNhbWVMaW5lKHByZXZCb3VuZGFyeSwgbmV4dEJvdW5kYXJ5KSkKLSAgICAgICAgICAgICAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gdnAubmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICAg
ICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlzIGNvbnRleHQgYXBwYXJlbnRseSBt
ZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3RyZWFtL25leHQiLgorICAgICAgICBp
ZiAodXNlRG93bnN0cmVhbSkgeworICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldv
cmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgICAgICBuZXh0Qm91bmRhcnkg
PSBlbmRPZldvcmQodnAsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCBMZWZ0
V29yZElmT25Cb3VuZGFyeSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZQYXJhZ3JhcGgodnApOwotICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJh
Z3JhcGgodnApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgotICAgICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkRvY3VtZW50KHZw
KTsKLSAgICAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mRG9jdW1lbnQodnApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0
YXJ0T2ZTZW50ZW5jZSh2cCk7CisgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mU2VudGVuY2Uo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk6CisgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZMaW5lKHZwKTsKKyAgICAg
ICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZMaW5lKHZwKTsKKworICAgICAgICBpZiAocHJldkJvdW5k
YXJ5ID09IG5leHRCb3VuZGFyeSkgeworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gbmV4dExp
bmVQb3NpdGlvbihuZXh0Qm91bmRhcnksIDApOworICAgICAgICAgICAgbmV4dEJvdW5kYXJ5LnNl
dEFmZmluaXR5KFVQU1RSRUFNKTsKKyAgICAgICAgICAgIGlmICghaW5TYW1lTGluZShwcmV2Qm91
bmRhcnksIG5leHRCb3VuZGFyeSkpCisgICAgICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gdnAu
bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFy
dE9mUGFyYWdyYXBoKHZwKTsKKyAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZQYXJhZ3JhcGgo
dnApOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVu
dEdyYW51bGFyaXR5OgorICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mRG9jdW1lbnQodnAp
OworICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZkRvY3VtZW50KHZwKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKHByZXZCb3VuZGFyeS5pc051bGwo
KSB8fCBuZXh0Qm91bmRhcnkuaXNOdWxsKCkpCkBAIC0xOTIxLDE0ICsxOTIxLDE0IEBAIHZvaWQg
Y2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKGNvbnN0IFZpc2kKICAgICBWaXNpYmxlUG9zaXRpb24g
c3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IHBvc2l0aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRD
aGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICBp
ZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQ
b3NpdGlvbjsKIAotICAgIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENo
YXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkLCBD
YW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3Vz
UG9zaXRpb24gPSBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwog
ICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwotICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gbmV4
dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwgRGlyZWN0aW9u
QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICAgICAgcHJldmlvdXNQ
b3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHByZXZpb3VzUG9zaXRp
b24sIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5k
YXJ5KTsKICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAg
ICAgICBzdGFydFBvc2l0aW9uID0gcHJldmlvdXNQb3NpdGlvbjsKICAgICB9CkBAIC0xOTUyLDEx
ICsxOTUyLDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQpOwogCiAgICAgaWYgKCFyYW5nZSkgewogICAgICAgICAvLyBXZSBjb3VsZCBiZSBhdCB0aGUg
c3RhcnQgb2YgYSB3b3JkLCB0cnkgZm9yd2FyZC4KLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
Rm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCkBAIC0xOTY0LDExICsx
OTY0LDExIEBAIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGNvbnMKIAogICAg
IFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBkbyB7Ci0g
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7
Ci0gICAgfSB3aGlsZSAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9u
QmFja3dhcmQpKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CisgICAgfSB3aGlsZSAo
Y3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgpICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShj
dXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAKICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTnVs
bCgpKQotICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51
bGwoKSkgewogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUocG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHBv
c2l0aW9uKTsKQEAgLTE5ODMsMjMgKzE5ODMsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIGNsb3Nlc3RX
b3JkQm91bmRhcnlGb3JQbwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAKICAgICAvLyBt
b3ZlIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSB3b3JkCi0gICAgaWYgKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndh
cmQpKSB7CisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkg
ewogICAgICAgICAvLyBEb24ndCBjcm9zcyBsaW5lIGJvdW5kYXJpZXMuCiAgICAgICAgIHJlc3Vs
dCA9IHBvc2l0aW9uOwotICAgIH0gZWxzZSBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgfSBl
bHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAg
ICAgICAgIC8vIFRoZSBwb3NpdGlvbiBsaWVzIHdpdGhpbiBhIHdvcmQuCi0gICAgICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBSZWZQdHI8
UmFuZ2U+IHdvcmRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlv
biwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCk7CiAKICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7
CiAgICAgICAgIGlmIChkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMocG9zaXRpb24sIHJlc3VsdCkg
PiAxKQogICAgICAgICAgICAgcmVzdWx0ID0gd29yZFJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAg
IH0gZWxzZSBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKSB7CisgICAgfSBlbHNlIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKSB7CiAgICAgICAgIC8vIFRoZSBwb3NpdGlvbiBp
cyBhdCB0aGUgZW5kIG9mIGEgd29yZC4KICAgICAgICAgcmVzdWx0ID0gcG9zaXRpb247CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIG5vdCB3aXRoaW4gYSB3b3JkLgog
ICAgICAgICAvLyBHbyB0byB0aGUgbmV4dCBib3VuZGFyeS4KLSAgICAgICAgcmVzdWx0ID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJlc3VsdCA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBzdWNoIGJvdW5kYXJ5IHdlIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGVsZW1lbnQuCiAg
ICAgICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCkBAIC0yMDEzLDE1ICsyMDEzLDE1IEBAIFJlZlB0
cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0kKICAgICBQb3NpdGlvbiBzdGFydCA9
IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gcG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mQ2hhcmFj
dGVyc1RvRXhwYW5kOyArK2kpIHsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25C
YWNrd2FyZCkKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkKQogICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmQgPSBlbmQubmV4dChDaGFyYWN0ZXIpOwogICAg
IH0KICAgICAKLSAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkICYmICFhdEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNr
d2FyZCkpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJk
ICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzdGFydCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICBzdGFy
dCA9IHN0YXJ0T2ZXb3JkKHN0YXJ0KS5kZWVwRXF1aXZhbGVudCgpOwotICAgIGlmIChkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uRm9yd2FyZCAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kLCBX
b3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChkaXJlY3Rpb24gPT0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
bmQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkZvcndhcmQpKQogICAgICAgICBlbmQgPSBlbmRPZldvcmQoZW5kKS5kZWVwRXF1aXZhbGVudCgp
OwogCiAgICAgcmV0dXJuIG1ha2VSYW5nZShzdGFydCwgZW5kKTsKQEAgLTIwNDEsMTIgKzIwNDEs
MTIgQEAgUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpbwogCiBzdGQ6OnBh
aXI8VmlzaWJsZVBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk+IHdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uV2l0aG91dENyb3NzaW5nTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
KQogewotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgTGluZUdyYW51
bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25E
aXJlY3Rpb246OkZvcndhcmQpKQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29y
ZEJvdW5kYXJ5OjpObyB9OwogCi0gICAgaWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgIGlmICh3
aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgIGF1
dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICBpZiAoYXV0byB3b3JkUmFu
Z2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF1dG8gd29yZFJhbmdlID0g
ZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAg
ICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAg
ICAgICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgYWRqdXN0ZWRQ
b3NpdGlvbikgPiAxKQogICAgICAgICAgICAgICAgIGFkanVzdGVkUG9zaXRpb24gPSB3b3JkUmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CkBAIC0yMDU0LDEwICsyMDU0LDEwIEBAIHN0ZDo6cGFpcjxWaXNp
YmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3UKICAgICAgICAgcmV0dXJuIHsgYWRqdXN0ZWRQb3Np
dGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpZZXMgfTsKICAgICB9CiAKLSAgICBpZiAoYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFj
a3dhcmQpKQorICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQp
KQogICAgICAgICByZXR1cm4geyBwb3NpdGlvbiwgV2l0aGluV29yZEJvdW5kYXJ5OjpObyB9Owog
Ci0gICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgYXV0byBuZXh0V29yZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgIHJldHVybiB7IG5leHRXb3JkQm91bmRhcnkuaXNO
b3ROdWxsKCkgPyBuZXh0V29yZEJvdW5kYXJ5IDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQocG9zaXRp
b24pLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIE9wdGlvbmFsPERldGVjdGVkSXRlbT4gRGF0YURldGVj
dGlvbjo6ZGUKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgICAgICBjb250ZXh0UmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3Jh
bnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7Cisg
ICAgICAgIGNvbnRleHRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZCk7CiAgICAgfQogCiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCShyZXZp
c2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGQ6OnR1cGxlPFJl
ZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIGhpdEluZGV4ID0gY2hhcmFjdGVy
Q291bnQoeyAqbWFrZUJvdW5kYXJ5UG9pbnQocGFyYWdyYXBoU3RhcnQpLCAqbWFrZUJvdW5kYXJ5
UG9pbnQocG9zaXRpb24pIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rp
b24gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcyB7IHBvc2l0aW9uIH07Ci0gICAgICAg
IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVz
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkp
OwogICAgICAgICBwb3NpdGlvbiA9IHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuc3Rh
cnQoKTsKIAogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBj
aGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBz
dGQ6OnR1cGxlPFJlZlB0cjxSYW5nZT4sIE5TRGljdGlvbmFyeSAqCiAgICAgICAgIHJldHVybiBy
YW5nZUZvclNlbGVjdGlvbihzZWxlY3Rpb24pOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKLSAgICBzZWxlY3Rpb25B
Y2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFy
aXR5KTsKKyAgICBzZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIHBvc2l0aW9u
ID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgpOwogCiAgICAgLy8gQXMg
Y29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9y
ZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI2
MTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTIsMTQgKzY1MiwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzCiAgICAgICAgIGJvb2wgZm9yY2luZ1BlbmRp
bmdQb2xpY3kgPSBmcmFtZS0+c2V0dGluZ3MoKS5pc0ZvcmNlUGVuZGluZ1dlYkdMUG9saWN5KCk7
CiAKICAgICAgICAgaWYgKGZvcmNpbmdQZW5kaW5nUG9saWN5IHx8IChwYWdlICYmICF0b3BEb2N1
bWVudC51cmwoKS5pc0xvY2FsRmlsZSgpKSkgewotICAgICAgICAgICAgV2ViR0xMb2FkUG9saWN5
IHBvbGljeSA9IGZvcmNpbmdQZW5kaW5nUG9saWN5ID8gV2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS53ZWJHTFBvbGljeUZvclVSTCh0b3BE
b2N1bWVudC51cmwoKSk7CisgICAgICAgICAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5ID0gZm9y
Y2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9u
IDogcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkud2ViR0xQb2xpY3lGb3JVUkwo
dG9wRG9jdW1lbnQudXJsKCkpOwogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMQmxv
Y2tDcmVhdGlvbikgeworICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQmxvY2tDcmVhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIlRoZSBw
b2xpY3kgZm9yIHRoaXMgVVJMICglcykgaXMgdG8gYmxvY2sgV2ViR0wuIiwgdG9wRG9jdW1lbnQu
dXJsKCkuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMUGVu
ZGluZ0NyZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMTG9hZFBvbGlj
eTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coV2ViR0wsICJX
ZWJHTCBwb2xpY3kgaXMgcGVuZGluZy4gTWF5IG5lZWQgdG8gYmUgcmVzb2x2ZWQgbGF0ZXIuIik7
CiAgICAgICAgICAgICAgICAgaXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbiA9IHRydWU7CiAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw4ICszMzksOCBAQCBwdWJsaWM6CiAgICAg
Ly8gSW5mb3JtcyB0aGUgZW1iZWRkZXIgdGhhdCBhIFdlYkdMIGNhbnZhcyBpbnNpZGUgdGhpcyBm
cmFtZSByZWNlaXZlZCBhIGxvc3QgY29udGV4dAogICAgIC8vIG5vdGlmaWNhdGlvbiB3aXRoIHRo
ZSBnaXZlbiBHTF9BUkJfcm9idXN0bmVzcyBndWlsdC9pbm5vY2VuY2UgY29kZSAoc2VlIEV4dGVu
c2lvbnNHTC5oKS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZVdlYkdMQ29udGV4dChpbnQpIHsg
fQotICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVS
TCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQotICAgIHZpcnR1YWwgV2Vi
R0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7
IHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KKyAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGlj
eSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiBXZWJH
TExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFs
IHZvaWQgY29tcGxldGVQYWdlVHJhbnNpdGlvbklmTmVlZGVkKCkgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3NCw3ICsxNzQsNyBAQCBlbnVtIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
CiAgICAgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwKIH07CiAKLWVudW0gV2Vi
R0xMb2FkUG9saWN5IHsKK2VudW0gY2xhc3MgV2ViR0xMb2FkUG9saWN5IDogdWludDhfdCB7CiAg
ICAgV2ViR0xCbG9ja0NyZWF0aW9uLAogICAgIFdlYkdMQWxsb3dDcmVhdGlvbiwKICAgICBXZWJH
TFBlbmRpbmdDcmVhdGlvbgpAQCAtMjIyLDEyICsyMjIsMTIgQEAgT3B0aW9uYWw8U3lzdGVtUHJl
dmlld0luZm8+IFN5c3RlbVByZXZpZQogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqZWxlbWVudCks
IFdURk1vdmUoKnByZXZpZXdSZWN0KSwgV1RGTW92ZSgqaXNQcmV2aWV3KSB9IH07CiB9CiAKLWVu
dW0gY2xhc3MgTG9hZENvbXBsZXRpb25UeXBlIDogdWludDhfdCB7CitlbnVtIGNsYXNzIExvYWRD
b21wbGV0aW9uVHlwZSA6IGJvb2wgewogICAgIEZpbmlzaCwKICAgICBDYW5jZWwKIH07CiAKLWVu
dW0gY2xhc3MgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiB1aW50OF90IHsKK2VudW0gY2xhc3Mg
QWxsb3dzQ29udGVudEphdmFTY3JpcHQgOiBib29sIHsKICAgICBZZXMsCiAgICAgTm8sCiB9OwpA
QCAtMjcxLDExICsyNzEsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpTaAogICAgID47CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0PiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeT4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8Ci0gICAgICAgIFdlYkNvcmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0LAotICAgICAgICBX
ZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdDo6WWVzLAotICAgICAgICBXZWJDb3JlOjpB
bGxvd3NDb250ZW50SmF2YVNjcmlwdDo6Tm8KKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9s
aWN5LAorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQmxvY2tDcmVhdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24s
CisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24K
ICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDcg
QEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SQogICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0
aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rp
b24uaXNDYXJldE9yUmFuZ2UoKSk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3
b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkpOwotICAgICAgICAgICAgICAgIHdvcmRTZWxl
Y3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOworICAgICAgICAg
ICAgICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigp
LnNldFNlbGVjdGlvbih3b3JkU2VsZWN0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGZyYW1lLT5lZGl0b3IoKS5zZWxlY3RlZFRleHQoKS5sZW5ndGgo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAyNjE2
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0NiwzNSArMjQ2LDM1IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjptb2RpZnkoY29uc3Qg
U3RyaW5nJiAKIAogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImZvcndhcmQiKSkK
LSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgZGlyZWN0aW9u
ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImJhY2t3YXJkIikpCi0gICAgICAg
IGRpcmVjdGlvbiA9IERpcmVjdGlvbkJhY2t3YXJkOworICAgICAgICBkaXJlY3Rpb24gPSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRpcmVjdGlvblN0cmluZywgImxlZnQiKSkKLSAgICAgICAgZGlyZWN0aW9u
ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVj
dGlvblN0cmluZywgInJpZ2h0IikpCi0gICAgICAgIGRpcmVjdGlvbiA9IERpcmVjdGlvblJpZ2h0
OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5Owog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0eVN0cmluZywg
ImNoYXJhY3RlciIpKQotICAgICAgICBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5
OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVs
YXJpdHlTdHJpbmcsICJ3b3JkIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gV29yZEdyYW51bGFy
aXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFy
aXR5U3RyaW5nLCAic2VudGVuY2UiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdy
YW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShncmFudWxhcml0eVN0cmluZywgImxpbmUiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBMaW5l
R3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5l
R3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Z3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGgiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBQ
YXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAibGluZWJvdW5kYXJ5IikpCi0gICAgICAg
IGdyYW51bGFyaXR5ID0gTGluZUJvdW5kYXJ5OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAic2VudGVuY2Vib3VuZGFyeSIpKQot
ICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNlQm91bmRhcnk7CisgICAgICAgIGdyYW51bGFy
aXR5ID0gVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk7CisgICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnkiKSkKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVs
YXJpdHk6OlNlbnRlbmNlQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGhib3VuZGFyeSIpKQotICAg
ICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEJvdW5kYXJ5OworICAgICAgICBncmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJkb2N1bWVudGJv
dW5kYXJ5IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gRG9jdW1lbnRCb3VuZGFyeTsKKyAgICAg
ICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRhcnk7CiAgICAg
ZWxzZQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIC8vIE5TVGV4dFZp
ZXcgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3ZpbmcgYSBzZWxlY3Rp
b24sCiAgICAgICAgICAgICAvLyBidXQgb25seSB0byBzbWFydCBpbnNlcnQgaWYgdGhlIHNlbGVj
dGlvbiBncmFudWxhcml0eSBpcyB3b3JkIGdyYW51bGFyaXR5LgogICAgICAgICAgICAgYm9vbCBz
bWFydERlbGV0ZSA9IGVkaXRvci5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLSAgICAgICAg
ICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAmJiBpbm5lckZyYW1lLT5zZWxlY3Rp
b24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSAmJiBkcmFnRGF0YS5jYW5TbWFy
dFJlcGxhY2UoKTsKKyAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAm
JiBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgICAg
ICAgICAgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudC5yZWxlYXNlTm9uTnVs
bCgpLCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpLT5hcHBseSgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KGlubmVyRnJhbWUuZ2V0KCksIGRyYWdDYXJldCwgcG9pbnQpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Miw3ICs1NDIs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91CiAgICAgaWYgKHNl
bGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgIG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlID0g
RXh0ZW5kZWRTZWxlY3Rpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hh
cmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5
OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0aWF0aW9uU3Rh
dGUgPSBQbGFjZWRDYXJldDsKICAgICB9CiAKQEAgLTU2MCwxMyArNTYwLDEzIEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb20KICAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2Nh
bFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKHBvcy5pc05vdE51bGwoKSkgewogICAg
ICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwotICAgICAgICAg
ICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsK
KyAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhcHBl
bmRUcmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYm
IG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5k
VHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VE
b3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jl
c3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdy
YW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hp
bmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RP
bk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApAQCAtNjAxLDE0ICs2MDEsMTQgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3Vs
dC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmIChwb3MuaXNOb3ROdWxs
KCkpIHsKICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBv
cyk7Ci0gICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHko
V29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNp
bmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhcHBlbmRUcmFpbGluZ1do
aXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYmIG5ld1NlbGVjdGlv
bi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5kVHJhaWxpbmdXaGl0
ZXNwYWNlKCk7CiAgICAgICAgIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25E
aXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVj
dFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBXb3JkR3JhbnVs
YXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1Nl
bGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91
c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSk7CiAgICAgfQogfQogICAgIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHUKICAgICAgICAgaWYgKHBvcy5pc05vdE51
bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5pc0Rlc2NlbmRh
bnRPZigqdXJsRWxlbWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUodXJsRWxlbWVudCk7CiAKLSAgICAg
ICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJn
ZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0
Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2Vs
ZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBh
bmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2Vs
ZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApA
QCAtNjY3LDEwICs2NjcsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NF
dmVudAogICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICBpZiAocG9z
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24o
cG9zKTsKLSAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoUGFyYWdy
YXBoR3JhbnVsYXJpdHkpOworICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxh
cml0eShUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KTsKICAgICB9CiAKLSAg
ICByZXR1cm4gdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFy
dCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigq
dGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdyYXBoR3JhbnVsYXJpdHkpOworICAgIHJl
dHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRh
cmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJn
ZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5KTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC03MTAsNyArNzEwLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIFBvc2l0aW9uIHBvcyA9IHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdT
ZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJp
dHk7CiAKICAgICBpZiAoIW1fZnJhbWUuZWRpdG9yKCkuY2xpZW50KCktPnNob3VsZEFsbG93U2lu
Z2xlQ2xpY2tUb0NoYW5nZVNlbGVjdGlvbigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC03MzgsNyArNzM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5ld1Nl
bGVjdGlvbi5zZXRFeHRlbnQocG9zKTsKIAotICAgICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24o
KS5ncmFudWxhcml0eSgpICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CisgICAgICAgIGlmICht
X2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0gVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBtX2ZyYW1lLnNl
bGVjdGlvbigpLmdyYW51bGFyaXR5KCk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5k
VXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkpOwogICAg
ICAgICB9CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2Vs
ZWN0aW9uRm9yTW91CiAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudCh0YXJnZXRQb3NpdGlvbik7
CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0g
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVs
YXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KQogICAgICAg
ICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigp
LmdyYW51bGFyaXR5KCkpOwogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb25C
eU1vdXNlSWZEaWZmZXJlbnQobmV3U2VsZWN0aW9uLCBtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51
bGFyaXR5KCksCkBAIC0zNTE2LDE1ICszNTE2LDE1IEBAIHN0YXRpYyB2b2lkIHNldEluaXRpYWxL
ZXlib2FyZFNlbGVjdGlvbigKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uOwog
CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgot
ICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAgICAgIGlmIChm
b2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9IFZpc2libGVQb3Np
dGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gZW5kT2ZEb2N1bWVudChkb2N1bWVudCk7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKLSAgICBjYXNlIERpcmVj
dGlvblJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgorICAgIGNh
c2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGZvY3VzZWRFbGVtZW50
KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9u
QWZ0ZXJOb2RlKGZvY3VzZWRFbGVtZW50KSk7CiAgICAgICAgIGVsc2UKQEAgLTM1NDUsOCArMzU0
NSw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW0KICAgICBib29s
IGlzU2VsZWN0aW9uID0gIXNlbGVjdGlvbi5pc05vbmUoKTsKIAogICAgIEZyYW1lU2VsZWN0aW9u
OjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3RhdGUoIlNoaWZ0
IikgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uTW92ZTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gRGlyZWN0
aW9uRm9yd2FyZDsKLSAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJH
cmFudWxhcml0eTsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkOworICAgIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBzd2l0Y2ggKGZvY3Vz
RGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50aWZpZXIoKSkpIHsKICAgICBjYXNlIEZvY3Vz
RGlyZWN0aW9uTm9uZToKQEAgLTM1NTYsMjAgKzM1NTYsMjAgQEAgc3RhdGljIHZvaWQgaGFuZGxl
S2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKLSAgICAgICAgZGlyZWN0
aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0gaXNDb21tYW5k
ZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5OworICAgICAgICBkaXJlY3Rp
b24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgICAgICBncmFudWxhcml0eSA9
IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdy
YW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25Eb3duOgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOwot
ICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gRG9jdW1lbnRCb3VuZGFyeSA6IExp
bmVHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFy
aXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgotICAgICAgICBk
aXJlY3Rpb24gPSBEaXJlY3Rpb25MZWZ0OwotICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1h
bmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGlyZWN0
aW9uOjpMZWZ0OworICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1hbmRlZCkgPyBUZXh0R3Jh
bnVsYXJpdHk6OkxpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5IDogVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgotICAgICAgICBk
aXJlY3Rpb24gPSBEaXJlY3Rpb25SaWdodDsKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSAoaXNDb21t
YW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51bGFyaXR5IDog
Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVj
dGlvbjo6UmlnaHQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVkKSA/IFRleHRH
cmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
OwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3
OSw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm0KICAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxS
YW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIFJlZlB0cjxSYW5nZT4g
d29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
KTsKICAgICBpZiAoIXdvcmRSYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wNS0xNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNlcmlhbGl6YXRp
b24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBTaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJHTExvYWRQb2xpY3kpOgorICAgICAg
ICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExv
YWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHNlbGVjdEZvcldlYlZpZXc6XSk6CisgICAgICAgICh0b1VJV0tTZWxl
Y3Rpb25GbGFncyk6CisgICAgICAgICh0b1NlbGVjdGlvbkZsYWdzKToKKyAgICAgICAgKHRvV0tU
ZXh0R3JhbnVsYXJpdHkpOgorICAgICAgICAodG9XS1NlbGVjdGlvbkRpcmVjdGlvbik6CisgICAg
ICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUpOgorICAgICAgICAoc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaCk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9u
V2l0aEdlc3R1cmVBdDp3aXRoR2VzdHVyZTp3aXRoU3RhdGU6d2l0aEZsYWdzOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OndpdGhTZWxlY3Rp
b25Ub3VjaDpiYXNlSXNTdGFydDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOnRvOndpdGhHZXN0dXJlOndpdGhTdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RXaXRo
VHdvVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RPTVJhbmdlIHJh
bmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczppbkRpcmVjdGlvbjpdKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5
Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJl
c29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZv
clVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpnZXRTZWxlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0
V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpyYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9p
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5
QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RE
aWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbHlBdXRvY29y
cmVjdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXV0b2NvcnJlY3Rp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6ZGF0YURldGVjdG9yTGlua1Bvc2l0aW9uSW5m
b3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdX
b3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisKIDIw
MjAtMDUtMTQgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlZCwgbWlkIE1heSAyMDIwIGVkaXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VSZWNlaXZlci5jcHAJKHJl
dmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZVJlY2Vp
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAogI2lmIEVOQUJMRShERVBS
RUNBVEVEX0ZFQVRVUkUpIHx8IEVOQUJMRShFWFBFUklNRU5UQUxfRkVBVFVSRSkKICNpbmNsdWRl
ICJEdW1teVR5cGUuaCIKICNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJHZXN0
dXJlVHlwZXMuaCIKKyNlbmRpZgogI2luY2x1ZGUgIkhhbmRsZU1lc3NhZ2UuaCIKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKQEAgLTUyLDYgKzU1LDkgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy90ZXN0TWVzc2FnZXMuaAko
cmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiTWVzc2FnZU5h
bWVzLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzUmVw
bGllcy5oIgpAQCAtMzcsNiArNDAsNyBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00
NTIsMTMgKzQ1NiwxMyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKIGNsYXNzIERpZENy
ZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uIHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpNYWNoUG9ydCY+IEFyZ3VtZW50czsKKyAgICB0eXBlZGVmIHN0ZDo6dHVw
bGU8Y29uc3QgSVBDOjpNYWNoUG9ydCYsIGNvbnN0IE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlv
bkZsYWdzPiY+IEFyZ3VtZW50czsKIAogICAgIHN0YXRpYyBJUEM6Ok1lc3NhZ2VOYW1lIG5hbWUo
KSB7IHJldHVybiBJUEM6Ok1lc3NhZ2VOYW1lOjpXZWJQYWdlX0RpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uOyB9CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNTeW5jID0gZmFsc2U7CiAKLSAg
ICBleHBsaWNpdCBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6Ok1hY2hQ
b3J0JiBjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0
aW9uSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJ
UEM6Ok1hY2hQb3J0JiBjb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+JiBmbGFncykKKyAgICAgICAgOiBtX2FyZ3VtZW50cyhjb25uZWN0
aW9uSWRlbnRpZmllciwgZmxhZ3MpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNjUs
NiArMjY1LDcgQEAgZGVmIGNvbmRpdGlvbnNfZm9yX2hlYWRlcihoZWFkZXIpOgogICAgIGNvbmRp
dGlvbnMgPSB7CiAgICAgICAgICciSW5wdXRNZXRob2RTdGF0ZS5oIic6IFsiUExBVEZPUk0oR1RL
KSIsICJQTEFURk9STShXUEUpIl0sCiAgICAgICAgICciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIic6
IFsiUExBVEZPUk0oQ09DT0EpIiwgXSwKKyAgICAgICAgJyJHZXN0dXJlVHlwZXMuaCInOiBbIlBM
QVRGT1JNKElPU19GQU1JTFkpIl0sCiAgICAgfQogICAgIGlmIG5vdCBoZWFkZXIgaW4gY29uZGl0
aW9uczoKICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTYxNSw2ICs2MTYsNyBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlJlY2VudFNlYXJjaCc6IFsnPFdl
YkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpSb3V0ZVNoYXJp
bmdQb2xpY3knOiBbJzxXZWJDb3JlL0F1ZGlvU2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtl
clR5cGVzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24nOiBbJzxX
ZWJDb3JlL1Zpc2libGVTZWxlY3Rpb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEnOiBbJzxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oPicsICc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oPicsICc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRGF0YS5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdv
cmtlclR5cGVzLmg+JywgJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+
J10sCkBAIC02MzksMTcgKzY0MSwyMiBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1dlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlJzogWyc8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlVzZWRM
ZWdhY3lUTFMnOiBbJzxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMnOiBbJzxXZWJDb3JlL1ZpZXdwb3J0QXJndW1l
bnRzLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3knOiBbJzxXZWJDb3Jl
L0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OldpbGxDb250aW51ZUxv
YWRpbmcnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNv
cmU6OlNlbGVjdGlvblJlY3QnOiBbJyJFZGl0b3JTdGF0ZS5oIiddLAogICAgICAgICAnV2ViS2l0
OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgi
J10sCi0gICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInIDogWyciQ29udGVu
dFdvcmxkU2hhcmVkLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZp
ZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0
OjpHZXN0dXJlVHlwZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpM
YXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0LmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBDb25maWd1cmF0aW9uJzogWyciUGF5bWVudFNldHVw
Q29uZmlndXJhdGlvbldlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYXltZW50U2V0dXBG
ZWF0dXJlcyc6IFsnIkFwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXNXZWJLaXQuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6UmVzcGVjdFNlbGVjdGlvbkFuY2hvcic6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAorICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25GbGFncyc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAorICAgICAgICAnV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCc6IFsnIkdlc3R1cmVUeXBlcy5o
IiddLAogICAgICAgICAnV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQnOiBbJyJXZWJFdmVudC5oIidd
LAogICAgICAgICAnV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6V2ViTW91c2VFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3QubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSB7CiAgICAgU2V0VmlkZW9MYXllcklEKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCB2aWRlb0xheWVySUQpCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgRGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpNYWNoUG9ydCBjb25uZWN0aW9uSWRlbnRpZmllcikK
KyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1hY2hQb3J0IGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MpCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Rv
Y3VtZW50RWRpdGluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNyBAQCBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgewogCiAg
ICAgT3B0aW9uU2V0PE9wdGlvbnM+IG9wdGlvbnM7CiAKLSAgICBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHkgc3Vycm91bmRpbmdHcmFudWxhcml0eSB7IFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFy
aXR5IH07CisgICAgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IHN1cnJvdW5kaW5nR3JhbnVsYXJp
dHkgeyBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IH07CiAg
ICAgaW50NjRfdCBncmFudWxhcml0eUNvdW50IHsgMCB9OwogCiAgICAgV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvR2VzdHVyZVR5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEyICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgR2VzdHVyZVR5cGVzX2gKLSNkZWZpbmUg
R2VzdHVyZVR5cGVzX2gKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgR2VzdHVyZVR5cGUgeworZW51
bSBjbGFzcyBHZXN0dXJlVHlwZSA6IHVpbnQ4X3QgewogICAgIExvdXBlLAogICAgIE9uZUZpbmdl
clRhcCwKICAgICBUYXBBbmRBSGFsZiwKQEAgLTQ1LDcgKzQ2LDcgQEAgZW51bSBjbGFzcyBHZXN0
dXJlVHlwZSB7CiAgICAgUGhyYXNlQm91bmRhcnkKIH07CiAKLWVudW0gY2xhc3MgU2VsZWN0aW9u
VG91Y2ggeworZW51bSBjbGFzcyBTZWxlY3Rpb25Ub3VjaCA6IHVpbnQ4X3QgewogICAgIFN0YXJ0
ZWQsCiAgICAgTW92ZWQsCiAgICAgRW5kZWQsCkBAIC01NCwyMyArNTUsMjEgQEAgZW51bSBjbGFz
cyBTZWxlY3Rpb25Ub3VjaCB7CiAgICAgRW5kZWROb3RNb3ZpbmcKIH07CiAKLWVudW0gY2xhc3Mg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUgOiB1aW50OF90IHsKICAgICBQb3NzaWJsZSwKICAgICBCZWdhbiwKICAgICBDaGFuZ2VkLAog
ICAgIEVuZGVkLAogICAgIENhbmNlbGxlZCwKLSAgICBGYWlsZWQsCi0gICAgUmVjb2duaXplZCA9
IEVuZGVkCisgICAgRmFpbGVkCiB9OwogCi1lbnVtIGNsYXNzIFNoZWV0QWN0aW9uIHsKK2VudW0g
Y2xhc3MgU2hlZXRBY3Rpb24gOiBib29sIHsKICAgICBDb3B5LAogICAgIFNhdmVJbWFnZQogfTsK
IAotZW51bSBTZWxlY3Rpb25GbGFncyB7Ci0gICAgTm9uZSA9IDAsCitlbnVtIFNlbGVjdGlvbkZs
YWdzIDogdWludDhfdCB7CiAgICAgV29yZElzTmVhclRhcCA9IDEgPDwgMCwKICAgICBQaHJhc2VC
b3VuZGFyeUNoYW5nZWQgPSAxIDw8IDEsCiB9OwpAQCAtODIsNCArODEsNTEgQEAgZW51bSBjbGFz
cyBSZXNwZWN0U2VsZWN0aW9uQW5jaG9yIDogYm9vbAogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vIEdlc3R1cmVUeXBlc19oCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okdlc3R1cmVUeXBlPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZSwKKyAgICAgICAg
V2ViS2l0OjpHZXN0dXJlVHlwZTo6TG91cGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6
Ok9uZUZpbmdlclRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6VGFwQW5kQUhhbGYs
CisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OkRvdWJsZVRhcCwKKyAgICAgICAgV2ViS2l0
OjpHZXN0dXJlVHlwZTo6VGFwQW5kSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6
RG91YmxlVGFwSW5VbmVkaXRhYmxlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpPbmVG
aW5nZXJUYXBJblVuZWRpdGFibGUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZp
bmdlclRhcFNlbGVjdHNBbGwsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdl
ckRvdWJsZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxl
VGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVUYXAsCisg
ICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmUs
CisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlRhcE9uTGlua1dpdGhHZXN0dXJlLAorICAg
ICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpQaHJhc2VCb3VuZGFyeQorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6U2VsZWN0aW9uVG91Y2g+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRv
dWNoLAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpTdGFydGVkLAorICAgICAgICBX
ZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpNb3ZlZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25U
b3VjaDo6RW5kZWQsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5n
Rm9yd2FyZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdCYWNr
d2FyZCwKKyAgICAgICAgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWROb3RNb3ZpbmcKKyAg
ICA+OworfTsKKworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0
dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVj
b2duaXplclN0YXRlOjpCZWdhbiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0
YXRlOjpDaGFuZ2VkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkVu
ZGVkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNhbmNlbGxlZCwK
KyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQKKyAgICA+Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3MzYsMTYgKzU3MzYsMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2lmIEVOQUJMRShX
RUJHTCkKIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKLSAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywg
dXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGljeSBwb2xpY3kpIG11
dGFibGUgewotICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Ci0g
ICAgfSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVy
bCwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBtX25hdmlnYXRp
b25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RG
TW92ZShyZXBseSldIChXZWJHTExvYWRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAg
cmVwbHkoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkpOwotICAgIH0pOworICAgIG1fbmF2
aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBXVEZNb3Zl
KHJlcGx5KSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw4ICsy
MjMsNiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3Mg
VmFsaWRhdGlvbkJ1YmJsZTsKIAotZW51bSBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50OF90Owot
CiBlbnVtIGNsYXNzIEF1dG9wbGF5RXZlbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0
ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgTG9ja0JhY2tGb3J3YXJkTGlz
dCA6IGJvb2w7CkBAIC0yMzIsNiArMjMwLDcgQEAgZW51bSBjbGFzcyBIYXNJbnNlY3VyZUNvbnRl
bnQgOiBib29sOwogZW51bSBjbGFzcyBNb3VzZUV2ZW50UG9saWN5IDogdWludDhfdDsKIGVudW0g
Y2xhc3MgTm90aWZpY2F0aW9uRGlyZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgUm91dGVT
aGFyaW5nUG9saWN5IDogdWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0aW9uRGlyZWN0aW9uIDog
dWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKIGVudW0gY2xhc3MgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgV3JpdGluZ0RpcmVj
dGlvbiA6IHVpbnQ4X3Q7CkBAIC0yNDQsNiArMjQzLDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlz
dFJlc3VsdHM7CiBzdHJ1Y3QgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb247CiBzdHJ1Y3Qg
RGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVjdCBEcmFnSXRlbTsKK3N0cnVjdCBFbGVtZW50Q29u
dGV4dDsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGlu
Z3M7CiBzdHJ1Y3QgR2xvYmFsV2luZG93SWRlbnRpZmllcjsKQEAgLTI3OSwxMCArMjc5LDYgQEAg
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbAogdHlwZWRlZiBIV05EIFBs
YXRmb3JtVmlld1dpZGdldDsKICNlbmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3Qg
RWxlbWVudENvbnRleHQ7Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0b3JQcm94eTsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CkBAIC00
MDUsOCArNDAxLDggQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9udEluZm8mLAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotdHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90
PiBHZXN0dXJlQ2FsbGJhY2s7Ci10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdD4gVG91Y2hlc0NhbGxiYWNrOwordHlwZWRl
ZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4gR2VzdHVy
ZUNhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPj4gVG91Y2hlc0Nh
bGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNl
bGVjdGlvblJlY3Q+Jj4gU2VsZWN0aW9uUmVjdHNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mPiBGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uQ2FsbGJhY2s7CiAjZW5kaWYKQEAgLTc1Niw5ICs3NTIsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzPiYpOwogICAgIHZvaWQgd2lsbENvbW1pdExheWVyVHJlZShU
cmFuc2FjdGlvbklEKTsKIAotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5
cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRF
bGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50
MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAg
dm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwg
dWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwotICAgIHZvaWQgc2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdl
c3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsK
KyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50LCBTZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9pZChjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9u
RmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdv
VG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOwogICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSk7
CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxlY3Rpb25C
eU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTIwOTUsOCArMjA5MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBGb250SW5mbyYsIGRvdWJsZSwgYm9vbCwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgdG91Y2hlc0Nh
bGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgdWludDMy
X3QgZmxhZ3MsIENhbGxiYWNrSUQpOworICAgIHZvaWQgZ2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOworICAgIHZvaWQgdG91Y2hlc0Nh
bGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9wdGlvblNl
dDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc2VsZWN0aW9uQ29udGV4
dENhbGxiYWNrKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRUZXh0LCBjb25zdCBTdHJpbmcmIGJlZm9y
ZVRleHQsIGNvbnN0IFN0cmluZyYgYWZ0ZXJUZXh0LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiwgYm9vbCBpc0NoYXJFdmVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJn
ZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJl
Y3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMy
X3QgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIHBs
dWdpblVSTFN0cmluZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBTdHJp
bmcgZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8vIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJHTFBvbGlj
eUZvclVSTChVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgU3luY2hyb25vdXMKLSAg
ICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIFN5bmNocm9ub3VzCisgICAgV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKGVudW06
dWludDhfdCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hyb25vdXMK
KyAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMIHVybCkgLT4gKGVudW06dWludDhfdCBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSkgU3luY2hyb25vdXMKICNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wpCiAgICAgRGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKHN0cnVjdCBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICBEaWRSZWNlaXZlRXZl
bnQodWludDMyX3QgdHlwZSwgYm9vbCBoYW5kbGVkKQpAQCAtMTc3LDggKzE3Nyw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKICAgICBGb250QXR0cmlidXRlc0NhbGxiYWNr
KHN0cnVjdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEdlc3R1cmVD
YWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQotICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
dWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorICAgIEdlc3R1cmVDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51
bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIGVudW06dWludDhfdCBX
ZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2Vi
S2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQorICAgIFRvdWNoZXNDYWxsYmFjayhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50
OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFdlYktpdDo6U2Vs
ZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBT
ZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soU3RyaW5nIHNlbGVjdGVkVGV4dCwgU3RyaW5nIGJlZm9y
ZVRleHQsIFN0cmluZyBhZnRlclRleHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEludGVycHJldEtleUV2ZW50KHN0cnVjdCBXZWJLaXQ6OkVkaXRvclN0YXRlIHN0YXRlLCBi
b29sIGlzQ2hhckV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIERpZFJl
Y2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3Jt
YXRpb25BdFBvc2l0aW9uIGluZm9ybWF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTYsMjUgKzQ5
NiwyNSBAQCBpbmxpbmUgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHRvV2ViR0xMCiB7CiAgICAg
c3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKICAgICBjYXNlIGtXS1dlYkdMTG9hZFBvbGljeUxv
YWROb3JtYWxseToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uOwogICAgIGNhc2Uga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2Uga1dLV2ViR0xMb2Fk
UG9saWN5UGVuZGluZzoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMUGVuZGluZ0NyZWF0
aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRp
bmdDcmVhdGlvbjsKICAgICB9CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIGlubGluZSBXS1dlYkdM
TG9hZFBvbGljeSB0b0FQSShXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2FkUG9saWN5
KQogewogICAgIHN3aXRjaCAod2ViR0xMb2FkUG9saWN5KSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpX
ZWJHTEFsbG93Q3JlYXRpb246CisgICAgY2FzZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6Oldl
YkdMQWxsb3dDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGljeUxvYWRO
b3JtYWxseTsKLSAgICBjYXNlIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjoKKyAgICBjYXNl
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOgogICAgICAgICBy
ZXR1cm4ga1dLV2ViR0xMb2FkUG9saWN5QmxvY2tlZDsKLSAgICBjYXNlIFdlYkNvcmU6OldlYkdM
UGVuZGluZ0NyZWF0aW9uOgorICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJH
TFBlbmRpbmdDcmVhdGlvbjoKICAgICAgICAgcmV0dXJuIGtXS1dlYkdMTG9hZFBvbGljeVBlbmRp
bmc7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwOSwy
MSArNDA5LDIxIEBAIGlubGluZSBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgdG9XZWJDb3IKIHsK
ICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5QWxsb3dD
cmVhdGlvbjoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OwogICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbjoKLSAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uOwogICAgIGNhc2UgX1dLV2ViR0xM
b2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xQ
ZW5kaW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6
OldlYkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVy
biBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeShXZWJQ
YWdlUHJveHkmLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGlm
ICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdX
ZWJHTExvYWRQb2xpY3lGb3JVUkwpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xB
bGxvd0NyZWF0aW9uKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xMb2FkUG9saWN5
OjpXZWJHTEFsbG93Q3JlYXRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDAs
NyArNDQwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Ogogdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xp
Y3koV2ViUGFnZVByb3h5JiwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsK
ICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM1MTUsNyArMzUxNSw3IEBAIC0gKHZvaWQpc2VsZWN0Rm9yV2ViVmlldzoo
aWQpc2VuZGVyCiB7CiAgICAgW190ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgc2VsZWN0V29yZF07
CiAgICAgLy8gV2UgY2Fubm90IHVzZSBzZWxlY3RXb3JkIGNvbW1hbmQsIGJlY2F1c2Ugd2Ugd2Fu
dCB0byBiZSBhYmxlIHRvIHNlbGVjdCB0aGUgd29yZCBldmVuIHdoZW4gaXQgaXMgdGhlIGxhc3Qg
aW4gdGhlIHBhcmFncmFwaC4KLSAgICBfcGFnZS0+ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6Oldv
cmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAKIC0gKHZvaWQpc2VsZWN0QWxsRm9y
V2ViVmlldzooaWQpc2VuZGVyCkBAIC0zODIzLDMyICszODIzLDQyIEBAIHN0YXRpYyBpbmxpbmUg
VUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHQKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgVUlX
S1NlbGVjdGlvbkZsYWdzIHRvVUlXS1NlbGVjdGlvbkZsYWdzKFdlYktpdDo6U2VsZWN0aW9uRmxh
Z3MgZmxhZ3MpCitzdGF0aWMgaW5saW5lIFVJV0tTZWxlY3Rpb25GbGFncyB0b1VJV0tTZWxlY3Rp
b25GbGFncyhPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MpCiB7CiAgICAg
TlNJbnRlZ2VyIHVpRmxhZ3MgPSBVSVdLTm9uZTsKLSAgICBpZiAoZmxhZ3MgJiBXZWJLaXQ6Oldv
cmRJc05lYXJUYXApCisgICAgaWYgKGZsYWdzLmNvbnRhaW5zKFdlYktpdDo6V29yZElzTmVhclRh
cCkpCiAgICAgICAgIHVpRmxhZ3MgfD0gVUlXS1dvcmRJc05lYXJUYXA7Ci0gICAgaWYgKGZsYWdz
ICYgV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpCisgICAgaWYgKGZsYWdzLmNvbnRhaW5z
KFdlYktpdDo6UGhyYXNlQm91bmRhcnlDaGFuZ2VkKSkKICAgICAgICAgdWlGbGFncyB8PSBVSVdL
UGhyYXNlQm91bmRhcnlDaGFuZ2VkOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVJV0tTZWxl
Y3Rpb25GbGFncz4odWlGbGFncyk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6U2VsZWN0aW9uRmxhZ3M+IHRvU2VsZWN0aW9uRmxhZ3MoVUlXS1NlbGVjdGlvbkZsYWdzIHVp
RmxhZ3MpCit7CisgICAgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGZsYWdzOwor
ICAgIGlmICh1aUZsYWdzICYgVUlXS1dvcmRJc05lYXJUYXApCisgICAgICAgIGZsYWdzLmFkZChX
ZWJLaXQ6OldvcmRJc05lYXJUYXApOworICAgIGlmICh1aUZsYWdzICYgVUlXS1BocmFzZUJvdW5k
YXJ5Q2hhbmdlZCkKKyAgICAgICAgZmxhZ3MuYWRkKFdlYktpdDo6UGhyYXNlQm91bmRhcnlDaGFu
Z2VkKTsKKyAgICByZXR1cm4gZmxhZ3M7Cit9CisKIHN0YXRpYyBpbmxpbmUgV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5IHRvV0tUZXh0R3JhbnVsYXJpdHkoVUlUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCiB7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewogICAgIGNhc2UgVUlUZXh0R3Jh
bnVsYXJpdHlDaGFyYWN0ZXI6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eVdvcmQ6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51
bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpTZW50ZW5jZUdyYW51bGFy
aXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlQYXJhZ3JhcGg6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OlRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBV
SVRleHRHcmFudWxhcml0eUxpbmU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpMaW5lR3JhbnVs
YXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFu
dWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5RG9jdW1lbnQ6Ci0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OwogICAgIH0KIH0KIApAQCAt
Mzg1NywyOSArMzg2NywyOSBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVj
dGlvCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVj
dGlvbkRvd246CiAgICAgY2FzZSBVSVRleHRMYXlvdXREaXJlY3Rpb25SaWdodDoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkRpcmVjdGlvblJpZ2h0OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAgICBjYXNlIFVJVGV4dExheW91dERpcmVjdGlv
blVwOgogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uTGVmdDoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkRpcmVjdGlvbkxlZnQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgLy8gVUlUZXh0RGlyZWN0
aW9uIGlzIG5vdCBhbiBlbnVtLCBidXQgd2Ugb25seSB3YW50IHRvIGFjY2VwdCB2YWx1ZXMgZnJv
bSBVSVRleHRMYXlvdXREaXJlY3Rpb24uCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmlnaHQ7CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OwogICAgIH0KIH0KIAotc3RhdGljIHZv
aWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikKK3N0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZShXS0NvbnRl
bnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2Vz
dHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0
dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBbKFVJV0tU
ZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6dG9V
SVdLR2VzdHVyZVR5cGUoKFdlYktpdDo6R2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUpIHdpdGhTdGF0
ZTp0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6Okdlc3R1cmVS
ZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkpIHdpdGhGbGFnczoodG9VSVdLU2VsZWN0aW9u
RmxhZ3MoKFdlYktpdDo6U2VsZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CisgICAgWyhVSVdLVGV4dElu
dGVyYWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlv
bkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRvVUlXS0dl
c3R1cmVUeXBlKGdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUoZ2VzdHVyZVN0YXRlKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpXTsK
IH0KIAotc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3
ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoLCB1
aW50MzJfdCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorc3RhdGlj
IHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gs
IE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2ViS2l0OjpDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKQogewogICAgIGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKLSAgICBbKFVJV0tUZXh0SW50ZXJh
Y3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0b1VJV0tT
ZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZsYWdzOnN0
YXRpY19jYXN0PFVJV0tTZWxlY3Rpb25GbGFncz4oZmxhZ3MpXTsKKyAgICBbKFVJV0tUZXh0SW50
ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBpbnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9u
Q2hhbmdlZFdpdGhUb3VjaEF0OihDR1BvaW50KXBvaW50IHdpdGhTZWxlY3Rpb25Ub3VjaDp0b1VJ
V0tTZWxlY3Rpb25Ub3VjaCgoV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCl0b3VjaCkgd2l0aEZsYWdz
OnRvVUlXS1NlbGVjdGlvbkZsYWdzKGZsYWdzKV07CiB9CiAKIC0gKEJPT0wpX2hhc0ZvY3VzZWRF
bGVtZW50CkBAIC0zODk1LDggKzM5MDUsOCBAQCAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhH
ZXN0dXJlQXQ6KENHCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHUG9p
bnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3Rh
dGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZSB3aXRoRmxhZ3M6KFVJV0tTZWxlY3Rp
b25GbGFncylmbGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0g
ICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgV2Vi
Q29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1
cmVUeXBlKGdlc3R1cmVUeXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNv
Z25pemVyU3RhdGUoc3RhdGUpKSwgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQsIFtzZWxmLCBzdGF0
ZSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVy
ZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgaW5uZXJGbGFncywgV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNoYW5nZWRX
aXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3Mg
fCBpbm5lckZsYWdzLCBlcnJvcik7CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNv
cmU6OkludFBvaW50KHBvaW50KSwgdG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRvR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBbc2VsZiwg
c3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc3RhdGUsIGZsYWdzXShjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktp
dDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6
OlNlbGVjdGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ig
ZXJyb3IpIHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB0b1NlbGVjdGlvbkZsYWdzKGZsYWdzKSB8IGlu
bmVyRmxhZ3MsIGVycm9yKTsKICAgICAgICAgaWYgKHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUVuZGVkIHx8IHN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxl
ZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAgICB9KTsK
QEAgLTM5MDUsOSArMzkxNSw5IEBAIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVB
dDooQ0cKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQg
d2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6
KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3MKIHsK
ICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gWUVTOwotICAgIF9wYWdlLT51cGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXRpY19jYXN0
PHVpbnQzMl90Pih0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSksIGJhc2VJc1N0YXJ0LCBbc2VsZiwg
ZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVp
bnQzMl90IGlubmVyRmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewot
ICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKHNlbGYsIHBvaW50LCB0b3VjaCwgZmxh
Z3MgfCBpbm5lckZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlmICh0b3VjaCAhPSBVSVdLU2VsZWN0
aW9uVG91Y2hTdGFydGVkICYmIHRvdWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaE1vdmVkKQorICAg
IF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2lu
dCksIHRvU2VsZWN0aW9uVG91Y2godG91Y2gpLCBiYXNlSXNTdGFydCwgW3NlbGYsIHN0cm9uZ1Nl
bGYgPSByZXRhaW5QdHIoc2VsZiksIGZsYWdzXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2gsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVj
dGlvbkZsYWdzPiBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChzZWxmLCBwb2ludCwgdG91Y2gs
IHRvU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOworICAgICAgICBp
ZiAodG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25Ub3VjaFN0YXJ0
ZWQgJiYgdG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpICE9IFVJV0tTZWxlY3Rpb25Ub3VjaE1v
dmVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POwogICAgIH0p
OwogfQpAQCAtMzkxNSw5ICszOTI1LDkgQEAgLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91
Y2hBdDooQ0dQbwogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206KENHUG9p
bnQpZnJvbSB0bzooQ0dQb2ludCl0byB3aXRoR2VzdHVyZTooVUlXS0dlc3R1cmVUeXBlKWdlc3R1
cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRlKWdlc3R1cmVTdGF0ZQog
ewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBZRVM7Ci0gICAgX3BhZ2UtPnNlbGVj
dFdpdGhUd29Ub3VjaGVzKFdlYkNvcmU6OkludFBvaW50KGZyb20pLCBXZWJDb3JlOjpJbnRQb2lu
dCh0byksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSks
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0
YXRlKSksIFtzZWxmXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdl
c3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBfcGFnZS0+c2VsZWN0V2l0aFR3b1Rv
dWNoZXMoV2ViQ29yZTo6SW50UG9pbnQoZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRvKSwgdG9H
ZXN0dXJlVHlwZShnZXN0dXJlVHlwZSksIHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJl
U3RhdGUpLCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKV0oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBXZWJL
aXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBPcHRpb25TZXQ8V2ViS2l0
OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJv
cikgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9pbnQsIGdl
c3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGZsYWdzLCBlcnJvcik7Ci0gICAgICAgIGlmIChnZXN0
dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQgfHwgZ2VzdHVyZVN0YXRl
ID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCkKKyAgICAgICAgaWYgKHRvVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkgPT0gVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlRW5kZWQgfHwgdG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVyZVN0YXRlKSA9
PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWQpCiAgICAgICAgICAgICBfdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87CiAgICAgfSk7CiB9CkBAIC02NTIxLDcgKzY1MzEsNyBA
QCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAKIC0gKHZvaWQpc2VsZWN0V29yZEZvclJlcGxh
Y2VtZW50CiB7Ci0gICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpXb3JkR3JhbnVs
YXJpdHkpOworICAgIF9wYWdlLT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogfQogCiAjaWYgRU5BQkxFKFBMQVRGT1JNX0RSSVZFTl9U
RVhUX0NIRUNLSU5HKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0
LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2VQcm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2Vz
dHVyZVN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiB7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8R2VzdHVy
ZUNhbGxiYWNrPihjYWxsYmFja0lEKTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdlc3R1cmVDYWxsYmFjayhjb25zdAogICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocG9pbnQsIGdlc3R1cmVUeXBl
LCBnZXN0dXJlU3RhdGUsIGZsYWdzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoZXND
YWxsYmFjayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMs
IHVpbnQzMl90IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgU2VsZWN0
aW9uVG91Y2ggdG91Y2hlcywgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiBmbGFncywgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PFRvdWNoZXNDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CiAgICAgaWYgKCFjYWxsYmFjaykgewpAQCAt
NDI4LDIxICs0MjgsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVyVHJlZUNvbW1pdENvbXBs
ZQogICAgIHBhZ2VDbGllbnQoKS5sYXllclRyZWVDb21taXRDb21wbGV0ZSgpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgdWludDMyX3QgZ2Vz
dHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6
OlNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9y
OjpVbmtub3duKTsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgp
LCBHZXN0dXJlVHlwZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLCB7
IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJX
ZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJlIl9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RXaXRoR2VzdHVyZShwb2ludCwgKHVpbnQzMl90KWdy
YW51bGFyaXR5LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBpc0ludGVyYWN0aW5nV2l0aEZv
Y3VzZWRFbGVtZW50LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0V2l0aEdlc3R1cmUocG9pbnQsIGdlc3R1cmVU
eXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxi
YWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3Qg
dG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25X
aXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgU2VsZWN0aW9uVG91Y2gg
dG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBv
aW50KCksIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIFNlbGVjdGlvblRvdWNoOjpTdGFydGVk
LCB7IH0sIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRX
aXRoR3JhbnVsYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9p
bnQocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgZ3Jh
bnVsYXJpdHksIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBbY2FsbGJhY2tGdW5j
dGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnNl
bGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50Il9zKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25B
dEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbihwb2ludCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbiwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbiJfcyldICgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAg
ICAgfSk7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxl
Y3Rpb25BdEJvdW5kYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRo
RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0
PHVpbnQzMl90PihkaXJlY3Rpb24pKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihn
cmFudWxhcml0eSwgZGlyZWN0aW9uKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojptb3ZlU2VsZWN0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24iX3MpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlv
bigpOwogICAgIH0pOwogfQpAQCAtNjMwLDEwICs2MzAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVN0eWx1c1NpbmdsZVRhcAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRs
ZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQocG9pbnQsIHJlcXVlc3RJRCkpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQg
ZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1
aW50MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50IHRvLCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSBnZXN0dXJlU3RhdGUsIEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBH
ZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZs
YWdzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJD
b3JlOjpJbnRQb2ludCgpLCAwLCAwLCAwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
KyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXZWJDb3JlOjpJbnRQb2ludCgpLCBHZXN0dXJlVHlw
ZTo6TG91cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlLCB7IH0sIENhbGxiYWNr
QmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03NTQs
NyArNzU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkV4dGVuZFNlbGVjdGlvbihzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpKSwgbV93
ZWJQYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5k
U2VsZWN0aW9uKGdyYW51bGFyaXR5KSwgbV93ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0V29yZEJhY2t3YXJkKCkKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFJlY3RzRm9yR3JhbnVsCiAgICAgfQogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpyZXF1
ZXN0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQiX3MpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRo
U2VsZWN0aW9uT2Zmc2V0KHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIG9mZnNl
dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGdy
YW51bGFyaXR5LCBvZmZzZXQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMy
X3Qgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01SYW5nZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tCShyZXZpc2lv
biAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS0RPTVJhbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgLSAo
TlNBcnJheSAqKXRleHRSZWN0cwogCiAtIChXS0RPTVJhbmdlICopcmFuZ2VCeUV4cGFuZGluZ1Rv
V29yZEJvdW5kYXJ5QnlDaGFyYWN0ZXJzOihOU1VJbnRlZ2VyKWNoYXJhY3RlcnMgaW5EaXJlY3Rp
b246KFdLRE9NUmFuZ2VEaXJlY3Rpb24pZGlyZWN0aW9uCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0
V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/ICBf
aW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCksIGNoYXJhY3RlcnMs
IGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdlYkNvcmU6OkRpcmVj
dGlvbkZvcndhcmQgOiBXZWJDb3JlOjpEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBuZXdSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVj
dGlvbkF0V29yZEJvdW5kYXJ5KGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2Fy
ZCA/ICBfaW1wbC0+ZW5kUG9zaXRpb24oKSA6IF9pbXBsLT5zdGFydFBvc2l0aW9uKCksIGNoYXJh
Y3RlcnMsIGRpcmVjdGlvbiA9PSBXS0RPTVJhbmdlRGlyZWN0aW9uRm9yd2FyZCA/IFdlYkNvcmU6
OlNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCA6IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlv
bjo6QmFja3dhcmQpOwogCiAgICAgcmV0dXJuIFtbW1dLRE9NUmFuZ2UgYWxsb2NdIF9pbml0V2l0
aEltcGw6bmV3UmFuZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdl
YkZyYW1lTG9hZGVyQwogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKQog
ICAgICAgICByZXR1cm4gd2ViUGFnZS0+d2ViR0xQb2xpY3lGb3JVUkwobV9mcmFtZS5wdHIoKSwg
dXJsKTsKIAotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdM
TG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25z
dCBVUkwmIHVybCkgY29uc3QKQEAgLTE2MjcsNyArMTYyNyw3IEBAIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSBXZWJGcmFtZUxvYWRlckMKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIHdlYlBhZ2UtPnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TChtX2ZyYW1lLnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsK
KyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ5LDEyICsxMDQ5LDEyIEBAIFJlZlB0
cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWIKICNpZiBFTkFCTEUoV0VCR0wpICYm
ICFQTEFURk9STShNQUMpCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewotICAgIHJldHVybiBXZWJHTEFs
bG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0
aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKLSAgICByZXR1cm4gV2ViR0xB
bGxvd0NyZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVh
dGlvbjsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMCArMTk1LDEyIEBA
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90
OwogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIGVudW0gY2xh
c3MgRHJhZ0hhbmRsaW5nTWV0aG9kIDogdWludDhfdDsKK2VudW0gY2xhc3MgU2VsZWN0aW9uRGly
ZWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIDogYm9vbDsK
IGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgOiBib29sOwogZW51bSBjbGFzcyBU
ZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbiA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNz
IFRleHRHcmFudWxhcml0eSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdyaXRpbmdEaXJlY3Rpb24g
OiB1aW50OF90OwogCiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKQEAgLTY4NSwxOSArNjg3LDE5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmx1ckZvY3VzZWRFbGVtZW50KCk7CiAgICAgdm9pZCBy
ZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihDYWxsYmFja0lEKTsKLSAgICB2b2lkIHNl
bGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVs
YXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIGJvb2wg
aXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCB1
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQz
Ml90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2Vs
ZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBleHRlbmRTZWxlY3Rpb24odWludDMyX3Qg
Z3JhbnVsYXJpdHkpOworICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9u
VG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgc2VsZWN0V2l0
aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUsIENhbGxi
YWNrSUQpOworICAgIHZvaWQgZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSk7CiAgICAgdm9pZCBzZWxlY3RXb3JkQmFja3dhcmQoKTsKICAgICB2b2lkIG1vdmVTZWxlY3Rp
b25CeU9mZnNldChpbnQzMl90IG9mZnNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
LSAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
bGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50
ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBtb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24odWludDMyX3Qg
Z3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIHNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rp
b25EaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5
V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlbGVj
dFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxs
YmFja0lEKTsKKyAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Vs
ZWN0aW9uRGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJh
Y3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2Vs
ZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCwgQ2FsbGJhY2tJRCk7CiAKICAgICB2b2lkIHJlcXVlc3REaWN0YXRpb25Db250ZXh0
KENhbGxiYWNrSUQpOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcm
IG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CkBAIC03MjIsNyArNzI0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQ29udGV4dChDYWxsYmFja0lEKTsKICAgICB2b2lk
IGhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+LCB1aW50NjRfdCByZXF1ZXN0SUQpOwog
ICAgIHZvaWQgaGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0gICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFy
aXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCwgaW50MzJfdCwgQ2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCBnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldChXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHksIGludDMyX3QsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVj
dHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrSUQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwog
ICAgIHZvaWQgc3RhcnRBdXRvc2Nyb2xsQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50Jik7CkBAIC0xMzY1LDcgKzEzNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGxldGVT
eW50aGV0aWNDbGljayhXZWJDb3JlOjpOb2RlJiBub2RlUmVzcG9uZGluZ1RvQ2xpY2ssIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGxvY2F0aW9uLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVu
dDo6TW9kaWZpZXI+LCBXZWJDb3JlOjpTeW50aGV0aWNDbGlja1R5cGUsIFdlYkNvcmU6OlBvaW50
ZXJJRCA9IFdlYkNvcmU6Om1vdXNlUG9pbnRlcklEKTsKICAgICB2b2lkIHNlbmRUYXBIaWdobGln
aHRGb3JOb2RlSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpOb2RlKik7
CiAgICAgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5v
ZGVGb3JQb2ludChjb25zdCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6UmFuZ2U+IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0lu
dGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+
IHJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCk7CiAgICAgdm9pZCBzZXRGb2N1c2VkRnJhbWVCZWZvcmVTZWxl
Y3RpbmdUZXh0QXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQg
ZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1cmUoU2VsZWN0aW9u
VG91Y2gsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjMsMTkgKzYzLDE5IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRv
UG9zaXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKICAgICBJbnNwZWN0b3JOb2RlU2Vh
cmNoRW5kZWRBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCiAgICAgQmx1ckZv
Y3VzZWRFbGVtZW50KCkKLSAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludCBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJf
dCBnZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlz
U3RhcnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFNlbGVjdFdpdGhUd29U
b3VjaGVzKFdlYkNvcmU6OkludFBvaW50IGZyb20sIFdlYkNvcmU6OkludFBvaW50IHRvLCB1aW50
MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLSAgICBFeHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkp
CisgICAgU2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWlu
dDhfdCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5n
V2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBV
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1
aW50OF90IFdlYktpdDo6U2VsZWN0aW9uVG91Y2ggdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMo
V2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIGVudW06dWludDhf
dCBXZWJLaXQ6Okdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpH
ZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgRXh0ZW5kU2VsZWN0aW9uKGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiAgICAgU2VsZWN0V29yZEJhY2t3YXJkKCkKICAgICBN
b3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQpIC0+ICgpIEFzeW5jCi0gICAgU2Vs
ZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQp
IC0+ICgpIEFzeW5jCi0gICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRp
cmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBBc3lu
YwotICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFu
dWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uKSAtPiAoKSBBc3luYworICAgIFNlbGVjdFRleHRX
aXRoR3JhbnVsYXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5jCisgICAgU2VsZWN0UG9zaXRpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgZW51bTp1aW50OF90IFdlYkNv
cmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKKyAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24p
IC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5j
Ci0gICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
ZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50LCBlbnVtOmJvb2wgV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yIHJlc3Bl
Y3RTZWxlY3Rpb25BbmNob3IsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFVw
ZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBVcGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
ZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBSZXF1ZXN0RGljdGF0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBSZXBsYWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcg
bmV3VGV4dCkKICAgICBSZXBsYWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcg
bmV3VGV4dCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBIYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50
IHBvaW50LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycywg
dWludDY0X3QgcmVxdWVzdElEKQogICAgIEhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoV2Vi
Q29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKICAgICBTZXRGb3JjZUFs
d2F5c1VzZXJTY2FsYWJsZShib29sIHVzZXJTY2FsYWJsZSkKLSAgICBHZXRSZWN0c0ZvckdyYW51
bGFyaXR5V2l0aFNlbGVjdGlvbk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBv
ZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIEdldFJlY3RzRm9yR3Jh
bnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJf
dCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAg
ICBTdG9yZVNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHkoYm9vbCBzaG91bGRTdG9yZSkKICAgICBT
dGFydEF1dG9zY3JvbGxBdFBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9zaXRpb25Jbldp
bmRvdykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcg
KzI4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmEKICAgICAg
ICAgZW5kTm9kZUlzSW5zaWRlRml4ZWRQb3NpdGlvbiA9IHN0YXJ0Tm9kZUlzSW5zaWRlRml4ZWRQ
b3NpdGlvbjsKICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRSZWN0QXRFbmQgPSBwb3N0TGF5
b3V0RGF0YS5jYXJldFJlY3RBdFN0YXJ0OwogICAgICAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2lu
ZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgd3JpdGluZyBkaXJlY3Rpb24uCi0gICAg
ICAgIHBvc3RMYXlvdXREYXRhLmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRp
dGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRH
cmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLmlz
UmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBwb3N0TGF5b3V0
RGF0YS53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRGb3JDb250ZXh0KHdvcmRSYW5nZUZyb21Q
b3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkuZ2V0KCkpOwogICAgICAgICBpZiAoc2VsZWN0aW9u
LmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRp
b24oc2VsZWN0aW9uLnN0YXJ0KCksIHBvc3RMYXlvdXREYXRhLmNoYXJhY3RlckFmdGVyU2VsZWN0
aW9uLCBwb3N0TGF5b3V0RGF0YS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24sIHBvc3RMYXlvdXRE
YXRhLnR3b0NoYXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CkBAIC0zMjMsOCArMzIzLDggQEAgdm9p
ZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGNvbXB1dGVFZGl0YWJsZVJvb3RIYXNDb250ZW50QW5kUGxhaW5UZXh0
KHNlbGVjdGlvbiwgcG9zdExheW91dERhdGEpOwotICAgICAgICBwb3N0TGF5b3V0RGF0YS5zZWxl
Y3Rpb25TdGFydElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFu
dWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpEaXJlY3Rpb25CYWNrd2FyZCk7Ci0gICAgICAg
IHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvbkVuZElzQXRQYXJhZ3JhcGhCb3VuZGFyeSA9IGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlvbi52aXNpYmxlRW5kKCksIFRleHRHcmFudWxhcml0
eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6RGlyZWN0aW9uRm9y
d2FyZCk7CisgICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFw
aEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVTdGFy
dCgpLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJl
Y3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uRW5kSXNB
dFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZp
c2libGVFbmQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9CiB9CiAKQEAgLTU0OSw4ICs1NDksOCBAQCB2
b2lkIFdlYlBhZ2U6OmdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhCiAgICAgY29uc3QgaW50IHNl
bGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCA9IDM1MDsKICAgICAKICAgICBTdHJpbmcgc2Vs
ZWN0ZWRUZXh0ID0gcGxhaW5UZXh0Rm9yQ29udGV4dChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKTsKLSAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWlu
VGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3Jk
Qm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9u
RXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25CYWNrd2FyZCkuZ2V0KCkpOwotICAgIFN0
cmluZyB0ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JEaXNwbGF5KHJhbmdlRXhwYW5kZWRCeUNoYXJh
Y3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5kYXJ5KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmVuZCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkZvcndh
cmQpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXko
cmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0
TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKS5nZXQoKSk7CisgICAgU3RyaW5n
IHRleHRBZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVy
c0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
ZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkKS5nZXQoKSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNl
bGVjdGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIHRleHRCZWZvcmUsIHRleHRBZnRl
ciwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTM0Myw3ICsxMzQzLDcgQEAgc3RhdGljIEludFBvaW50
IGNvbnN0cmFpblBvaW50KGNvbnN0IEludAogICAgIHJldHVybiBjb25zdHJhaW5lZFBvaW50Owog
fQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJ
bnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXpl
clN0YXRlIGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKHN0YXRpY19jYXN0PEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSkgPT0gR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6
QmVnYW4pCiAgICAgICAgIHNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0
aW9uKHBvaW50KTsKQEAgLTEzNTIsMTEgKzEzNTIsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RX
aXRoR2VzdHVyZShjb25zdCBJbgogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQpOwogCiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCAwLCBjYWxsYmFja0lEKSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50LCBnZXN0dXJl
VHlwZSwgZ2VzdHVyZVN0YXRlLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwotICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdz
ID0gTm9uZTsKKyAgICBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzOwogICAgIEdlc3R1
cmVSZWNvZ25pemVyU3RhdGUgd2tHZXN0dXJlU3RhdGUgPSBzdGF0aWNfY2FzdDxHZXN0dXJlUmVj
b2duaXplclN0YXRlPihnZXN0dXJlU3RhdGUpOwogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8R2Vz
dHVyZVR5cGU+KGdlc3R1cmVUeXBlKSkgewogICAgIGNhc2UgR2VzdHVyZVR5cGU6OlBocmFzZUJv
dW5kYXJ5OgpAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBJbgogICAgICAgICBpZiAocG9zaXRpb24gPiBtYXJrZWRSYW5nZS0+ZW5kUG9z
aXRpb24oKSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gbWFya2VkUmFuZ2UtPmVuZFBvc2l0aW9u
KCk7CiAgICAgICAgIGlmICh3a0dlc3R1cmVTdGF0ZSAhPSBHZXN0dXJlUmVjb2duaXplclN0YXRl
OjpCZWdhbikKLSAgICAgICAgICAgIGZsYWdzID0gZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1h
cmtlZFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnN0YXJ0KCkpICE9IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5nZS0+c3RhcnRQ
b3NpdGlvbigpLCBwb3NpdGlvbikgPyBQaHJhc2VCb3VuZGFyeUNoYW5nZWQgOiBOb25lOworICAg
ICAgICAgICAgZmxhZ3MgPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkgIT0g
ZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBv
c2l0aW9uKSA/IFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA6IE9wdGlvblNldDxTZWxlY3Rpb25GbGFn
cz4geyB9OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmbGFncyA9IFBocmFzZUJvdW5kYXJ5
Q2hhbmdlZDsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgp
LCBwb3NpdGlvbiwgcG9zaXRpb24pOwpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgdm9pZCBXZWJQYWdl
OjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
R2VzdHVyZVR5cGU6Ok9uZUZpbmdlckRvdWJsZVRhcDoKLSAgICAgICAgaWYgKGF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQp
KSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkp
IHsKICAgICAgICAgICAgIC8vIERvdWJsZS10YXAgYXQgZW5kIG9mIGxpbmUgb25seSBwbGFjZXMg
aW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB0byBnZXQg
dGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAgICAgICAgICAgIC8v
IHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCkBAIC0xNDU0LDE3ICsxNDU0LDE3IEBAIHZvaWQg
V2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW4KIAogICAgIGNhc2UgR2VzdHVyZVR5
cGU6OlR3b0ZpbmdlclNpbmdsZVRhcDoKICAgICAgICAgLy8gU2luZ2xlIHRhcCB3aXRoIHR3byBm
aW5nZXJzIHNlbGVjdHMgdGhlIGVudGlyZSBwYXJhZ3JhcGguCi0gICAgICAgIHJhbmdlID0gZW5j
bG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgR2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRyaXBsZVRhcDoKLSAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZv
cndhcmQpKSB7CisgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpIHsKICAgICAgICAgICAgIC8vIFRyaXBsZS10YXAgYXQgZW5kIG9mIGxpbmUgb25seSBw
bGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB0
byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKICAgICAgICAg
ICAgIC8vIHBhcmFncmFwaHMsIGFuZCBkb2N1bWVudHMuCiAgICAgICAgICAgICByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsK
KyAgICAgICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CkBAIC0xNDcz
LDcgKzE0NzMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAg
ICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVyZVR5cGUs
IGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSwgY2FsbGJhY2tJRCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncywgY2FsbGJhY2tJRCkpOwogfQogCiBz
dGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKEZy
YW1lJiBmcmFtZSwgY29uc3QgSW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzLCBi
b29sIGJhc2VJc1N0YXJ0KQpAQCAtMTUyNywyNyArMTUyNywyNyBAQCBzdGF0aWMgUmVmUHRyPFJh
bmdlPiByYW5nZUZvclBvaW50SW5Sb290CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRX
b3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNlSXNTdGFy
dCA/IERpcmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKLSAgICBTZWxlY3Rpb25E
aXJlY3Rpb24gb3Bwb3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlvbkJhY2t3
YXJkIDogRGlyZWN0aW9uRm9yd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gc2FtZURpcmVj
dGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDogU2VsZWN0
aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gb3Bwb3NpdGVE
aXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgOiBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJhc2UgPSBi
YXNlSXNTdGFydCA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAgICAgVmlz
aWJsZVBvc2l0aW9uIGV4dGVudCA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnZpc2libGVFbmQoKSA6IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52
aXNpYmxlU3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gaW5pdGlhbEV4dGVudCA9IHBvc2l0
aW9uOwogCi0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51
bGFyaXR5LCBzYW1lRGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0
eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9u
KSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeS4gTGVhdmUgc2VsZWN0aW9u
IHdoZXJlIGl0IGlzLgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAo
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRl
RGlyZWN0aW9uKSkgeworICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHdvcmQgYm91bmRhcnkgaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4g
TnVkZ2UgdGhlIHNlbGVjdGlvbiB0byBhIGNoYXJhY3RlciBiZWZvcmUgcHJvY2VlZGluZy4KICAg
ICAgICAgZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBleHRlbnQucHJldmlvdXMoKSA6IGV4dGVudC5u
ZXh0KCk7CiAgICAgfQogCiAgICAgLy8gRXh0ZW5kIHRvIHRoZSBib3VuZGFyeSBvZiB0aGUgd29y
ZC4KIAotICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQm91bmRhcnkgPSBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlv
bik7CisgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHksIHNhbWVEaXJlY3Rpb24pOwogICAgIGlmICh3b3JkQm91bmRhcnkuaXNOb3ROdWxsKCkKLSAg
ICAgICAgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkod29yZEJvdW5kYXJ5LCBXb3JkR3JhbnVs
YXJpdHksIHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHdvcmRCb3VuZGFyeSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJl
Y3Rpb24pCiAgICAgICAgICYmIGluaXRpYWxFeHRlbnQgIT0gd29yZEJvdW5kYXJ5KSB7CiAgICAg
ICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICAgICAgcmV0dXJuIChiYXNlIDwgZXh0ZW50
KSA/IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDogUmFu
Z2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CkBAIC0xNTU4LDEw
ICsxNTU4LDEwIEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRhcnkKIAog
ICAgIC8vIElmIHRoaXMgaXMgd2hlcmUgdGhlIGV4dGVudCB3YXMgaW5pdGlhbGx5LCB0aGVuIGl0
ZXJhdGUgaW4gdGhlIG90aGVyIGRpcmVjdGlvbiBpbiB0aGUgZG9jdW1lbnQgdW50aWwgd2UgaGl0
IHRoZSBuZXh0IHdvcmQuCiAgICAgd2hpbGUgKGV4dGVudC5pc05vdE51bGwoKQotICAgICAgICAm
JiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIHNhbWVE
aXJlY3Rpb24pCisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQogICAgICAgICAm
JiBleHRlbnQgIT0gYmFzZQotICAgICAgICAmJiAhYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0
ZW50LCBMaW5lR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pCi0gICAgICAgICYmICFhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rp
b24pKSB7CisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFRleHRH
cmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKQorICAgICAgICAmJiAh
YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFu
dWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CiAgICAgICAgIGV4dGVudCA9IGJhc2VJc1N0
YXJ0ID8gZXh0ZW50Lm5leHQoKSA6IGV4dGVudC5wcmV2aW91cygpOwogICAgIH0KIApAQCAtMTY3
NywyMSArMTY3NywyMCBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoU3ludGhldGljTW91c2VFdmVu
CiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNv
bnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRo
VG91Y2hlcyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIFNlbGVjdGlvblRvdWNoIHNlbGVjdGlvblRv
dWNoLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBJbnRQb2ludCBwb2ludEluRG9jdW1lbnQgPSBmcmFtZS52aWV3KCktPnJvb3RWaWV3
VG9Db250ZW50cyhwb2ludCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gZnJhbWUu
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkRvY3VtZW50KTsKICAgICBpZiAocG9zaXRp
b24uaXNOdWxsKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3Vj
aGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHNlbGVjdGlv
blRvdWNoLCB7IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKLSAgICBT
ZWxlY3Rpb25GbGFncyBmbGFncyA9IE5vbmU7CisgICAgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdz
PiBmbGFnczsKIAotICAgIGF1dG8gc2VsZWN0aW9uVG91Y2ggPSBzdGF0aWNfY2FzdDxTZWxlY3Rp
b25Ub3VjaD4odG91Y2hlcyk7CiAgICAgaWYgKHNob3VsZERpc3BhdGNoU3ludGhldGljTW91c2VF
dmVudHNXaGVuTW9kaWZ5aW5nU2VsZWN0aW9uKCkpCiAgICAgICAgIGRpc3BhdGNoU3ludGhldGlj
TW91c2VFdmVudHNGb3JTZWxlY3Rpb25HZXN0dXJlKHNlbGVjdGlvblRvdWNoLCBwb2ludCk7CiAK
QEAgLTE3MTAsMTEgKzE3MDksMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRo
VG91Y2hlcwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVk
TW92aW5nRm9yd2FyZDoKLSAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9z
aXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIERpcmVjdGlvbkZvcndhcmQpOwor
ICAgICAgICByYW5nZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJhbWUsIHBv
c2l0aW9uLCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5n
QmFja3dhcmQ6Ci0gICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9u
KCZmcmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAg
ICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKCZmcmFtZSwgcG9zaXRp
b24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpNb3ZlZDoKQEAgLTE3MjQsMTAgKzE3
MjMsMTAgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcwogICAgIGlm
IChyYW5nZSkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5n
ZS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNo
b3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogCi0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2FsbGJhY2socG9pbnQsIHRvdWNoZXMsIGZsYWdzLCBj
YWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpUb3VjaGVzQ2Fs
bGJhY2socG9pbnQsIHNlbGVjdGlvblRvdWNoLCBmbGFncywgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBl
LCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2Vi
UGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0bywgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIEdl
c3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZnJvbVBvc2l0aW9uID0gZnJhbWUu
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWUudmlldygpLT5yb290Vmlld1RvQ29udGVudHMo
ZnJvbSkpOwpAQCAtMTc0MiwxNCArMTc0MSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhU
d29Ub3VjaGVzKGNvbnN0CiAgICAgfQogCiAgICAgLy8gV2UgY2FuIHVzZSB0aGUgc2FtZSBjYWxs
YmFjayBmb3IgdGhlIGdlc3R1cmVzIHdpdGggb25lIHBvaW50LgotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1cmVUeXBlLCBnZXN0dXJl
U3RhdGUsIDAsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Okdlc3R1cmVDYWxsYmFjayhmcm9tLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCB7IH0sIGNh
bGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24odWludDMyX3Qg
Z3JhbnVsYXJpdHkpCit2b2lkIFdlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbihXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICAvLyBGb3IgdGhlIG1v
bWVudCB3ZSBoYW5kbGUgb25seSBXb3JkR3JhbnVsYXJpdHkuCi0gICAgaWYgKGdyYW51bGFyaXR5
ICE9IFdvcmRHcmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKQorICAg
IC8vIEZvciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5LgorICAgIGlmIChncmFudWxhcml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSB8fCAhZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJldCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpOwpAQCAtMTc5Miw3ICsxNzkxLDcgQEAgdm9pZCBXZWJQYWdlOjpz
ZWxlY3RXb3JkQmFja3dhcmQoKQogICAgICAgICByZXR1cm47CiAKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwotICAg
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQp
OworICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAgICBpZiAoc3RhcnRQb3NpdGlv
bi5pc05vdE51bGwoKSAmJiBzdGFydFBvc2l0aW9uICE9IHBvc2l0aW9uKQogICAgICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCksIHN0YXJ0UG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5pdHko
KSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJU
cmlnZ2VyZWQpOwogfQpAQCAtMTgwNCwxMCArMTgwMywxMCBAQCB2b2lkIFdlYlBhZ2U6Om1vdmVT
ZWxlY3Rpb25CeU9mZnNldChpbnQzCiAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24g
PSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKTsKICAgICBpZiAoc3RhcnRQb3Np
dGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3
YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYWJzKG9mZnNldCk7ICsraSkgewotICAgICAgICBwb3NpdGlvbiA9IHBv
c2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZGlyZWN0aW9uKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJH
cmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTk0Myw3ICsxOTQyLDcgQEAgdm9pZCBXZWJQ
YWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZQogICAgIHJlcGx5KFdURk1vdmUocmVjdHNU
b0F2b2lkSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Z2V0UmVj
dHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHks
IGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6Omdl
dFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9zdG9y
ZWRTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5LmlzTm9uZSgpID8gZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkgOiBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHk7CkBAIC0xOTU1
LDkgKzE5NTQsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoCiAg
ICAgfQogCiAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0
aE9mZnNldChzZWxlY3Rpb25TdGFydCwgb2Zmc2V0KTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uID0gb2Zmc2V0IDwgMCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0aW9uRm9y
d2FyZDsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0gb2Zmc2V0IDwgMCA/IFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7
CiAKLSAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwg
ZGlyZWN0aW9uKTsKKyAgICBhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFy
aXR5KHBvc2l0aW9uLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAgICBpZiAoIXJhbmdlIHx8
IHJhbmdlLT5jb2xsYXBzZWQoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNlbGVjdGlvblJlY3RzQ2FsbGJhY2soeyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTIwNDgsNTIgKzIwNDcsNTIgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlv
bkF0UG9pbnQoY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24s
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1
c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxl
bWVudCk7CiAKICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgcG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0
PFNlbGVjdGlvbkRpcmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9uID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBk
aXJlY3Rpb24pOwogICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgICAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIFVQU1RSRUFNLCBXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7
CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bW92
ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1
aW50MzJfdCBkaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0
aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCiAgICAgaWYgKCFmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5pc05vbmUoKSkgewotICAgICAgICBib29sIGlzRm9yd2FyZCA9IChk
aXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uUmln
aHQpOworICAgICAgICBib29sIGlzRm9yd2FyZCA9IChkaXJlY3Rpb24gPT0gU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkIHx8IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0
KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gKGlzRm9yd2FyZCkgPyBmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkgOiBmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKTsKLSAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSksIHN0YXRpY19jYXN0PFNlbGVjdGlvbkRp
cmVjdGlvbj4oZGlyZWN0aW9uKSk7CisgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwog
ICAgICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCks
IHBvc2l0aW9uLCBwb3NpdGlvbikucHRyKCksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBET1dOU1RS
RUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNl
clRyaWdnZXJlZCk7CiAgICAgfQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLVJlZlB0
cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1l
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpCitSZWZQdHI8UmFuZ2U+IFdlYlBh
Z2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KEZyYW1lJiBmcmFtZSwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkKIHsKICAgICBWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJh
bWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKIAogICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2U7Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHk+KGdyYW51bGFyaXR5KSkgewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6
CisgICAgc3dpdGNoIChncmFudWxhcml0eSkgeworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpD
aGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcmFuZ2UgPSBtYWtlUmFuZ2UocG9zaXRpb24s
IHBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgcmFuZ2Ug
PSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgICAgIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVu
aXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBTZW50ZW5jZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25G
b3J3YXJkKTsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToK
KyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24s
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0
eToKLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRp
b24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgICAgIHJhbmdlID0gZW5j
bG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIEZJWE1FOiBJdCdzIG5v
dCBjbGVhciB3aHkgdGhpcyBtdXRhdGVzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBhbmQgcmV0dXJu
cyBudWxsLgogICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3RBbGwoKTsKICAgICAgICAg
YnJlYWs7CkBAIC0yMTE4LDcgKzIxMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEZvY3VzZWRGcmFt
ZUJlZm9yZVNlbGVjCiAgICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNl
ZEZyYW1lKHJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxl
Y3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNldEZvY3VzZWRGcmFtZUJlZm9y
ZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKHBvaW50KTsKIApAQCAtMjEzMCwxMyArMjEyOSwxMyBA
QCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9u
KHVpbnQzMl90IGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdl
OjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24sIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBtX3NlbGVjdGlvbkFuY2hv
ciA9IChzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikgPT0gRGlyZWN0
aW9uTGVmdCkgPyBTdGFydCA6IEVuZDsKKyAgICBtX3NlbGVjdGlvbkFuY2hvciA9IGRpcmVjdGlv
biA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQgPyBTdGFydCA6IEVuZDsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobV9zZWxlY3Rpb25BbmNob3Ig
PT0gU3RhcnQsIGNhbGxiYWNrSUQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVs
ZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIGF1
dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3Vz
ZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50KTsKQEAgLTIyMzIsNyArMjIzMSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlv
bkNvbnRleHQoQ2EKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IHN0
YXJ0UG9zaXRpb247CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBsYXN0UG9zaXRpb24gPSBzdGFy
dFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGljdGF0aW9uQ29u
dGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBzdGFy
dE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9zaXRpb24s
IFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKTsKKyAgICAgICAgICAgIGN1cnJl
bnRQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGxhc3RQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRp
b24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBsYXN0UG9z
aXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yMjQ2LDcgKzIyNDUsNyBAQCB2b2lkIFdlYlBh
Z2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KENhCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBj
dXJyZW50UG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGxh
c3RQb3NpdGlvbiA9IGVuZFBvc2l0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZGljdGF0aW9uQ29udGV4dFdvcmRDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBjdXJyZW50
UG9zaXRpb24gPSBlbmRPZldvcmQocG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
bGFzdFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKTsKKyAgICAg
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShsYXN0UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFy
aXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKTsKICAgICAgICAgICAgIGlmIChjdXJy
ZW50UG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBsYXN0UG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247CkBAIC0yNDMyLDcgKzI0MzEsNyBAQCBi
b29sIFdlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hCiAgICAgaWYgKGNvcnJlY3Rp
b24ubGVuZ3RoKCkpCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQoY29ycmVjdGlv
biwgMCwgb3JpZ2luYWxUZXh0LmlzRW1wdHkoKSA/IFRleHRFdmVudElucHV0S2V5Ym9hcmQgOiBU
ZXh0RXZlbnRJbnB1dEF1dG9jb21wbGV0aW9uKTsKICAgICBlbHNlIGlmIChvcmlnaW5hbFRleHQu
bGVuZ3RoKCkpCi0gICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGly
ZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAg
ICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDc3LDcgKzI0NzYsNyBAQCBXZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQgV2ViUGFnZTo6YXV0b2NvCiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbWluQ29udGV4dFdvcmRDb3VudDsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHRCZWZvcmUubGVuZ3RoKCkgPj0gbWluQ29udGV4dExlbmdodCkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNQb3NpdGlv
biA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJl
bnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpOworICAgICAg
ICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4dEJv
dW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dEZv
ckNvbnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQb3NpdGlv
biwgY3VycmVudFBvc2l0aW9uKS5wdHIoKSk7CkBAIC0yNDg4LDE1ICsyNDg3LDE1IEBAIFdlYkF1
dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdlOjphdXRvY28KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgY3VycmVudFBvc2l0aW9u
ICE9IHN0YXJ0UG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gcGxh
aW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBjdXJyZW50
UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLnB0cigpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXRC
b3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0
eSwgRGlyZWN0aW9uQmFja3dhcmQpKQorICAgICAgICAgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3Jh
bnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0QmVmb3JlID0gbWFrZVN0cmluZygiXG4gIl9zLCBjb250ZXh0QmVmb3JlKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmRQb3NpdGlvbiAhPSBl
bmRPZkVkaXRhYmxlQ29udGVudChlbmRQb3NpdGlvbikpIHsKICAgICAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0UG9zaXRpb247Ci0gICAgICAgICAgICBpZiAoIWF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpICYm
IHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5
LCBEaXJlY3Rpb25Gb3J3YXJkKSkKLSAgICAgICAgICAgICAgICBuZXh0UG9zaXRpb24gPSBwb3Np
dGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFy
aXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgICAgIGlmICghYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0
eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCkpCisgICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9uID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAg
ICAgICAgICAgaWYgKG5leHRQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAgICAgICBj
b250ZXh0QWZ0ZXIgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLnB0cigpKTsKICAgICAgICAgfQpA
QCAtMjYzMCw5ICsyNjI5LDkgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlua1Bvc2l0aW9u
SW5mbwogICAgIGF1dG8gbGlua1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShlbGVtZW50LmRvY3VtZW50
KCkpOwogICAgIGxpbmtSYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpOwogICAgIGlu
Zm8udGV4dEJlZm9yZSA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFj
dGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5zdGFydFBvc2l0aW9uKCks
Ci0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVjdGlvbkJh
Y2t3YXJkKS5nZXQoKSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5n
dGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpLmdldCgpKTsKICAgICBpbmZvLnRleHRB
ZnRlciA9IHBsYWluVGV4dEZvckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGly
ZWN0aW9uQXRXb3JkQm91bmRhcnkobGlua1JhbmdlLT5lbmRQb3NpdGlvbigpLAotICAgICAgICBk
YXRhRGV0ZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3RoLCBEaXJlY3Rpb25Gb3J3YXJkKS5nZXQo
KSk7CisgICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCkuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTQwNjksNyArNDA2
OCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkKIHsKICAgICBB
U1NFUlQoZ3JhbnVsYXJpdHlDb3VudCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTm90TnVsbCgp
KTsKLSAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25CYWNrd2FyZDsK
KyAgICBib29sIGJhY2t3YXJkcyA9IGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkJh
Y2t3YXJkOwogICAgIGF1dG8gZmFydGhlc3RQb3NpdGlvbkluRGlyZWN0aW9uID0gYmFja3dhcmRz
ID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudChwb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVu
dChwb3NpdGlvbik7CiAgICAgaWYgKHBvc2l0aW9uID09IGZhcnRoZXN0UG9zaXRpb25JbkRpcmVj
dGlvbikKICAgICAgICAgcmV0dXJuIGJhY2t3YXJkcyA/IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uKSA6
IGVuZE9mV29yZChwb3NpdGlvbik7CkBAIC00MDgzLDggKzQwODIsOCBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIG1vdmVCeUdyYW51bGFyaXR5CiAgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShjdXJyZW50UG9zaXRpb24sIGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQogICAgICAg
ICAgICAgLS1ncmFudWxhcml0eUNvdW50OwogICAgIH0gd2hpbGUgKGdyYW51bGFyaXR5Q291bnQp
OwotICAgIGlmIChncmFudWxhcml0eSA9PSBTZW50ZW5jZUdyYW51bGFyaXR5KSB7Ci0gICAgICAg
IEFTU0VSVChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFNlbnRlbmNl
R3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOworICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHkpIHsKKyAgICAgICAgQVNTRVJUKGF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlv
bjsKICAgICB9CiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgcm91bmRzIHRvIHRoZSBuZWFyZXN0IHdv
cmQsIHdoaWNoIG1heSBjcm9zcyBhIGxpbmUgYm91bmRhcnkgd2hlbiB1c2luZyBsaW5lIGdyYW51
bGFyaXR5LgpAQCAtNDE5Nyw4ICs0MTk2LDggQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RG9jdW1l
bnRFZGl0aW5nQ29udAogICAgIFZpc2libGVQb3NpdGlvbiBjb250ZXh0QWZ0ZXJFbmQ7CiAgICAg
YXV0byBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2Uo
KTsKICAgICBpZiAocmVxdWVzdC5ncmFudWxhcml0eUNvdW50KSB7Ci0gICAgICAgIGNvbnRleHRC
ZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeShyYW5n
ZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0
LmdyYW51bGFyaXR5Q291bnQsIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICAgICAgY29udGV4dEFm
dGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJhbmdlT2ZJ
bnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0LmdyYW51
bGFyaXR5Q291bnQsIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICBjb250ZXh0QmVmb3JlU3Rh
cnQgPSBtb3ZlQnlHcmFudWxhcml0eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVy
ZXN0U3RhcnQsIHJlcXVlc3Quc3Vycm91bmRpbmdHcmFudWxhcml0eSwgcmVxdWVzdC5ncmFudWxh
cml0eUNvdW50LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICAgICAgY29udGV4
dEFmdGVyRW5kID0gbW92ZUJ5R3JhbnVsYXJpdHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJhbmdl
T2ZJbnRlcmVzdEVuZCwgcmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5LCByZXF1ZXN0Lmdy
YW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgY29udGV4dEJlZm9yZVN0YXJ0ID0gcmFuZ2VPZkludGVyZXN0U3RhcnQ7CiAg
ICAgICAgIGNvbnRleHRBZnRlckVuZCA9IHJhbmdlT2ZJbnRlcmVzdEVuZDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShy
ZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJUeXBlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg+CkBAIC03NzMsMjQgKzc3NCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1Rv
UERGRnJvbVBERkRvY3VtCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wpCi1XZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHVybCkKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGlj
eUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVpbnQzMl90IHBvbGlj
eVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQb2xp
Y3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViR0xMb2FkUG9saWN5Pihwb2xpY3lSZXN1bHQpOwotCi0gICAgcmV0dXJuIFdlYkdMQWxs
b3dDcmVhdGlvbjsKKyAgICBXZWJHTExvYWRQb2xpY3kgcG9saWN5UmVzdWx0ID0gV2ViR0xMb2Fk
UG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V2ViR0xQb2xpY3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
V2ViR0xQb2xpY3lGb3JVUkw6OlJlcGx5KHBvbGljeVJlc3VsdCkpOworICAgIHJldHVybiBXZWJH
TExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewotICAgIHVp
bnQzMl90IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKHVybCksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0KSkp
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGljeVJlc3Vs
dCk7Ci0KLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9hZFBvbGlj
eSBwb2xpY3lSZXN1bHQgPSBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JV
UkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
OjpSZXBseShwb2xpY3lSZXN1bHQpKTsKKyAgICByZXR1cm4gcG9saWN5UmVzdWx0OwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwko
cmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgZW51bSBzZXJpYWxp
emF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBhZ2dyZXNzaXZlbHlFeHBhbmRTZWxlY3Rp
b25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViRnJhbWUg
c2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
VmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAodG9UZXh0R3JhbnVsYXJpdHkpOgorICAgICAg
ICAodG9TZWxlY3Rpb25EaXJlY3Rpb24pOgorCiAyMDIwLTA1LTEwICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWNraW5nIGEgdGVsOi8vIGxpbmsg
b24gaVBhZCB3aXRoIGEgdHJhY2twYWQgcHJlc2VudHMgZGlmZmVyZW50IFVJIHRoYW4gdGFwcGlu
ZyBvbiBpdApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00ODQsNyArNDg0LDcgQEAgLSAodm9pZClhZ2dyZXNzaXZlbHlFeHBhbmRTZWxlY3Rpb25U
b1dvcgogCiAgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGdldCB0aGUg
aW1wcm92ZW1lbnRzCiAgICAgLy8gSSdtIHdvcmtpbmcgb24gZm9yIFJUTCBzZWxlY3Rpb24uCi0g
ICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5KQor
ICAgIGlmIChmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5KQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oZnJhbWVTZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSwgZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuZW5k
KCkpOwogICAgIAogICAgIGlmIChmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0KCkp
IHsKQEAgLTYwNCwyMyArNjA0LDIzIEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvblRvUG9pbnQ6KENH
UG9pbnQpcG8KIAogLSAodm9pZClzZXRTZWxlY3Rpb25HcmFudWxhcml0eTooV2ViVGV4dEdyYW51
bGFyaXR5KWdyYW51bGFyaXR5CiB7Ci0gICAgVGV4dEdyYW51bGFyaXR5IHdjR3JhbnVsYXJpdHkg
PSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFudWxhcml0
eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxhcml0eUNoYXJhY3RlcjoK
LSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAg
ICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5
V29yZDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7CisgICAg
ICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlTZW50
ZW5jZToKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdyYW51bGFyaXR5Owor
ICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFu
dWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxh
cml0eVBhcmFncmFwaDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBQYXJhZ3JhcGhHcmFu
dWxhcml0eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2Vi
VGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBEb2N1bWVudEdy
YW51bGFyaXR5LgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFncmFwaEdyYW51bGFy
aXR5OworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50
R3JhbnVsYXJpdHkuCisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJs
ZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIwNSwyNyArMjA1LDI3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dEdyYW51bGFyaXR5IHRvVGV4dEdy
YW4KICAgICAKICAgICBzd2l0Y2ggKHdlYkdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNhc2UgV2Vi
VGV4dEdyYW51bGFyaXR5Q2hhcmFjdGVyOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBDaGFy
YWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0g
V29yZEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
V2ViVGV4dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgICAgICBncmFudWxhcml0eSA9IFNl
bnRlbmNlR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxh
cml0eTo6U2VudGVuY2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgICAgIGdyYW51bGFyaXR5ID0g
TGluZUdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJp
dHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
V2ViVGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBQ
YXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkg
PSBEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3Jh
bnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBkZWZhdWx0OgpAQCAtMjQyLDI3ICsyNDIsMjcgQEAgc3RhdGljIGlubGluZSBTZWxlY3Rp
b25EaXJlY3Rpb24gdG9TZWxlYwogICAgIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAg
ICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRGb3J3YXJkOgotICAgICAgICAgICAgcmVzdWx0ID0g
RGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlv
bjo6Rm9yd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVj
dGlvbkJhY2t3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
V2ViVGV4dEFkanVzdG1lbnRSaWdodDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVjdGlvblJp
Z2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgV2ViVGV4dEFkanVz
dG1lbnRMZWZ0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFVwOgotICAgICAgICAg
ICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlv
bkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAgICAg
Y2FzZSBXZWJUZXh0QWRqdXN0bWVudERvd246Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJlY3Rp
b25SaWdodDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVudW0g
c2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01SYW5nZSBtb3ZlOmluRGlyZWN0aW9uOl0pOgor
ICAgICAgICAoLVtET01SYW5nZSBleHRlbmQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhblNtYXJ0
Q29weU9yRGVsZXRlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBkb0NvbXBs
ZXRpb25dKToKKwogMjAyMC0wNS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXSzJdIE5ldXRlciBXS0ZyYW1lSXNGcmFtZVNldCgpIC8gV0tQYWdlR2V0RnJh
bWVTZXRMYXJnZXN0RnJhbWUoKSBDIEFQSQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC04MiwxNSArODIsMTUgQEAgLSAodm9pZCltb3ZlOihVSW50MzIpYW1vdW50IGlu
RGlyZWN0aW9uOgogICAgIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uIGZyYW1lU2VsZWN0aW9uOwog
ICAgIGZyYW1lU2VsZWN0aW9uLm1vdmVUbyhyYW5nZSk7CiAgICAgCi0gICAgV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7
CisgICAgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAvLyBVbnRpbCBXZWJLaXQg
c3VwcG9ydHMgdmVydGljYWwgbGF5b3V0LCAiZG93biIgaXMgZXF1aXZhbGVudCB0byAiZm9yd2Fy
ZCBieSBhIGxpbmUiIGFuZAogICAgIC8vICJ1cCIgaXMgZXF1aXZhbGVudCB0byAiYmFja3dhcmQg
YnkgYSBsaW5lIi4KICAgICBpZiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50RG93bikg
ewogICAgICAgICBkaXJlY3Rpb24gPSBXZWJUZXh0QWRqdXN0bWVudEZvcndhcmQ7Ci0gICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6TGluZUdyYW51bGFyaXR5OworICAgICAgICBncmFudWxh
cml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgIH0g
ZWxzZSBpZiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50VXApIHsKICAgICAgICAgZGly
ZWN0aW9uID0gV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDsKLSAgICAgICAgZ3JhbnVsYXJpdHkg
PSBXZWJDb3JlOjpMaW5lR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgfQogICAgIAogICAgIGZv
ciAoVUludDMyIGkgPSAwOyBpIDwgYW1vdW50OyBpKyspCkBAIC0xMTEsNyArMTExLDcgQEAgLSAo
dm9pZClleHRlbmQ6KFVJbnQzMilhbW91bnQgaW5EaXJlY3RpbwogICAgIGZyYW1lU2VsZWN0aW9u
Lm1vdmVUbyhyYW5nZSk7CiAgICAgCiAgICAgZm9yIChVSW50MzIgaSA9IDA7IGkgPCBhbW91bnQ7
IGkrKykKLSAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCAoV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uKWRpcmVj
dGlvbiwgV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICBmcmFtZVNlbGVj
dGlvbi5tb2RpZnkoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24pZGlyZWN0aW9uLCBXZWJDb3JlOjpUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAKICAgICBQb3NpdGlvbiBzdGFydCA9
IGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkucGFyZW50QW5jaG9yZWRFcXVpdmFs
ZW50KCk7CiAgICAgUG9zaXRpb24gZW5kID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuZW5k
KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkocmV2aXNpb24gMjYxNjk0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIx
MTIsMTIgKzIxMTIsMTIgQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tXZWJHTCgpCiAKIFdlYkNv
cmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JV
UkwoY29uc3QgVVJMJikgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8g
V2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9u
OworICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3k6OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOwogfQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdAogewot
ICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTEJsb2NrQ3JlYXRp
b24gOiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIHNob3VsZEJsb2Nr
V2ViR0woKSA/IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uIDog
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDI2MTY5NCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MzIs
NyArNTczMiw3IEBAIC0gKEJPT0wpX2NhblNtYXJ0Q29weU9yRGVsZXRlCiAgICAgaWYgKCFbW3Nl
bGYgX3dlYlZpZXddIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZF0pCiAgICAgICAgIHJldHVybiBO
TzsKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIHJldHVy
biBjb3JlRnJhbWUgJiYgY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdl
YkNvcmU6OldvcmRHcmFudWxhcml0eTsKKyAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFt
ZS0+c2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6
OldvcmRHcmFudWxhcml0eTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBs
ZXRpb25Db250cm9sbGVyLm1tCShyZXZpc2lvbiAyNjE2OTQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIC0gKHZvaWQpZG9Db21wbGV0aW9uCiAgICAgICAgIFdl
YkZyYW1lICpmcmFtZSA9IFtfaHRtbFZpZXcgX2ZyYW1lXTsKICAgICAgICAgRE9NUmFuZ2UgKnNl
bGVjdGlvbiA9IGtpdChjcmVhdGVMaXZlUmFuZ2UoY29yZShmcmFtZSktPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpLmdldCgpKTsKICAgICAgICAgRE9NUmFuZ2Ug
Kndob2xlV29yZCA9IFtmcmFtZSBfcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjpGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZAotICAgICAgICAgICAgZGlyZWN0aW9uOkRpcmVj
dGlvbkJhY2t3YXJkIGdyYW51bGFyaXR5OldvcmRHcmFudWxhcml0eV07CisgICAgICAgICAgICBk
aXJlY3Rpb246U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCBncmFudWxhcml0eTpUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eV07CiAgICAgICAgIERPTVJhbmdlICpwcmVmaXggPSBb
d2hvbGVXb3JkIGNsb25lUmFuZ2VdOwogICAgICAgICBbcHJlZml4IHNldEVuZDpbc2VsZWN0aW9u
IHN0YXJ0Q29udGFpbmVyXSBvZmZzZXQ6W3NlbGVjdGlvbiBzdGFydE9mZnNldF1dOwogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjE2OTYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NyBAQAorMjAyMC0wNS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5n
IHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rp
b24pOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0U2VsZWN0
aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24pOgorCiAyMDIwLTA1LTE0ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIHN0cmVzcy9h
cnJheS1idWZmZXItdmlldy13YXRjaHBvaW50LWNhbi1iZS1maXJlZC1pbi1yZWFsbHktYWRkLWlu
LWRmZy5qcyBmYWlsaW5nIG9uIHBwYzY0bGUgYW5kIHMzOTB4CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2
aXNpb24gMjYxNjk0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0NSwxMiArMzQ1LDEyIEBAIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWwKIAogdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSBp
bmNyZWFzZTpZRVNdOworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlv
bjpXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNl
OllFU107CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0U2Vs
ZWN0aW9uKCkKIHsKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246
V2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9dOyAgICAKKyAgICBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246V2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpOT107ICAgIAogfQogCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCkluZGV4
OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHJldmlzaW9uIDI2
MTY5NCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzNiwxMiArOTM2LDEy
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsUGFnZVIKIAogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSBpbmNyZWFzZTpZRVNdOworICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlm
eVNlbGVjdGlvbjpXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
IGluY3JlYXNlOllFU107CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVh
c2VUZXh0U2VsZWN0aW9uKCkKIHsKLSAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlNb2RpZnlT
ZWxlY3Rpb246V2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6Tk9dOworICAg
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOk5PXTsKIH0KIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclNlbGVj
dGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399540</attachid>
            <date>2020-05-15 20:09:59 -0700</date>
            <delta_ts>2020-05-15 20:46:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211885-20200515200956.patch</filename>
            <type>text/plain</type>
            <size>230208</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MyBAQAorMjAyMC0wNS0xNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVt
IHNlcmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjAxMDY2Mjk+IGFuZCA8cmRhcjovL3Byb2JsZW0vNjAxMDc2NjM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGhpcyBk
b2Vzbid0IGNoYW5nZSBhbnl0aGluZyBleGNlcHQgbWFrZSBzdHJpY3RlciBjaGVja3MgYXQgSVBD
IGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVj
dGlvbjppbmNyZWFzZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdCZWhhdmlvci5oOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
c2hvdWxkU21hcnREZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkZWxldGVXaXRo
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENh
cmV0T3JSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JN
aXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVs
ZXRlVG9FbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlV29y
ZEJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVXb3JkRm9yd2FyZCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlTW92ZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZUZvcndhcmQpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZU1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVS
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1
dGVNb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9FbmRPZkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhl
Y3V0ZU1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZU1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eGVjdXRlTW92ZVdvcmRCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRl
TW92ZVdvcmRGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZEZvcndh
cmRBbmRNb2RpZnlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1vdmVXb3Jk
TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVNb3ZlVG9MZWZ0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlVG9SaWdodEVuZE9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVRvUmlnaHRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0
U2VudGVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFdvcmQpOgorICAgICAg
ICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVT
ZWxlY3Rpb246OkZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0
aW9uOjp3aWxsQmVNb2RpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXh0ZW5kaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4dGVuZGluZ0ZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246Om1vZGlmeU1vdmluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNb3ZpbmdGb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW92aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW92aW5nQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6aXNCb3VuZGFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6dGV4dFNlbGVjdGlvbkludGVudCk6
CisgICAgICAgIChXZWJDb3JlOjp0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFuZEdyYW51bGFy
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3aWxsQmVSZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjp1cGRhdGVBcHBlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2Vs
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAg
ICAgICogZWRpdGluZy9UZXh0R3JhbnVsYXJpdHkuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisg
ICAgICAgICogZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVk
aXRBY3Rpb25Gb3JUeXBpbmdDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1h
bmQ6OmRlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFuZDo6
Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29tbWFu
ZDo6aW5zZXJ0VGV4dFJ1bldpdGhvdXROZXdsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpUeXBp
bmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWspOgorICAgICAgICAoV2ViQ29yZTo6VHlwaW5nQ29t
bWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGlu
Z0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24pOgorICAgICAgICAq
IGVkaXRpbmcvVHlwaW5nQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uOjpzZXRTdGFydEFu
ZEVuZEZyb21CYXNlQW5kRXh0ZW50UmVzcGVjdGluZ0dyYW51bGFyaXR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25Jc0Rvd25zdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6YXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
d2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3Jk
Qm91bmRhcnlJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRQYXJhZ3JhcGhCb3VuZGFy
eUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ1RleHRVbml0T2ZHcmFu
dWxhcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6d29yZFJhbmdlRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjp3b3JkQm91bmRhcnlGb3JQb3NpdGlvbldpdGhvdXRDcm9zc2luZ0xpbmUp
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW06CisgICAgICAgICogZWRp
dGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQ
b2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250
cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjptb2RpZnkpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9y
TW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHVhbFdvcmRGcm9tTW91
c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RD
b250ZXh0dWFsV29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbml0aWFsS2V5Ym9hcmRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm1Db250cm9sRWxlbWVudCBjb25zdCk6CisK
IDIwMjAtMDUtMTUgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbY3NzLWdyaWRdIFRyZWF0IHBlcmNlbnRhZ2VzIGFzIGF1dG8gZm9yIHRoZSBtaW5pbXVtIGNv
bnRyaWJ1dGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyNjE3NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb25S
YW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyCiAgICAgLy8gd2lsbCBiZSBhIGNhcmV0IGF0IHZpc2li
bGVQb3MuCiAgICAgRnJhbWVTZWxlY3Rpb24gc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbih2aXNpYmxlUG9zKSk7Ci0gICAgc2VsZWN0aW9uLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExp
bmVCb3VuZGFyeSk7CisgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpM
aW5lQm91bmRhcnkpOwogICAgIAogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZShzZWxl
Y3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCksIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS52
aXNpYmxlRW5kKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDEwLDcgKzIwMTAsNyBAQCAtICh2b2lkKWFjY2Vzc2liaWxpdHlNb2RpZnlTZWxlY3Rpb246
KFRlCiAgICAgaWYgKGZyYW1lU2VsZWN0aW9uLmlzTm9uZSgpICYmIChzZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCkgPCByYW5nZS5zdGFydCB8fCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpID4gcmFuZ2Uu
ZW5kKSkKICAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW92ZVRvKHJhbmdlLnN0YXJ0LCBVc2VyVHJp
Z2dlcmVkKTsKICAgICAKLSAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBEaXJlY3Rpb25SaWdodCA6IERpcmVjdGlv
bkxlZnQsIGdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZVNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIChpbmNyZWFzZSkgPyBTZWxl
Y3Rpb25EaXJlY3Rpb246OlJpZ2h0IDogU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBncmFudWxh
cml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eUluY3JlYXNl
U2VsZWN0aW9uOihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ0JlaGF2aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nQmVoYXZpb3IuaAkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gT24gaU9TLCB3ZSBkb24ndCB3YW50IHRvIHNlbGVj
dCBhbGwgdGhlIHRleHQgd2hlbiBmb2N1c2luZyBhIGZpZWxkLiBJbnN0ZWFkLCBtYXRjaCBwbGF0
Zm9ybSBiZWhhdmlvciBieSBnb2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgIGJvb2wg
c2hvdWxkTW92ZVNlbGVjdGlvblRvRW5kV2hlbkZvY3VzaW5nVGV4dElucHV0KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEVkaXRpbmdJT1NCZWhhdmlvcjsgfQogICAgIAotICAgIC8vIE9uIGlP
Uywgd2hlbiBzbWFydCBkZWxldGUgaXMgb24sIGl0IGlzIGFsd2F5cyBvbiwgYW5kIHNob3VsZCBk
byBub3QgYWRkaXRpb25hbCBjaGVja3MgKGkuZS4gV29yZEdyYW51bGFyaXR5KS4KKyAgICAvLyBP
biBpT1MsIHdoZW4gc21hcnQgZGVsZXRlIGlzIG9uLCBpdCBpcyBhbHdheXMgb24sIGFuZCBzaG91
bGQgZG8gbm90IGFkZGl0aW9uYWwgY2hlY2tzIChpLmUuIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5KS4KICAgICBib29sIHNob3VsZEFsd2F5c1NtYXJ0RGVsZXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IEVkaXRpbmdJT1NCZWhhdmlvcjsgfQogICAgIAogICAgIC8vIE9uIGlP
Uywgd2Ugc2hvdWxkIHR1cm4gb24gc21hcnQgaW5zZXJ0IGFuZCBkZWxldGUgYW5kIG5ld2xpbmVz
IGFyb3VuZCBwYXJhZ3JhcGhzIHRvIG1hdGNoIFVJS2l0IGJlaGF2aW91ci4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI4LDcgKzUyOCw3IEBAIGJv
b2wgRWRpdG9yOjpzaG91bGRTbWFydERlbGV0ZSgpCiB7CiAgICAgaWYgKGJlaGF2aW9yKCkuc2hv
dWxkQWx3YXlzU21hcnREZWxldGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHk7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHkoKSA9PSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTsKIH0KIAogYm9vbCBFZGl0b3I6OnNtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCgpCkBAIC01NjgsMTIgKzU2OCwxMiBAQCBib29sIEVkaXRvcjo6ZGVs
ZXRlV2l0aERpcmVjdGlvbihTZWxlY3RpCiAgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5n
KQogICAgICAgICAgICAgb3B0aW9ucyB8PSBUeXBpbmdDb21tYW5kOjpBZGRzVG9LaWxsUmluZzsK
ICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3
YXJkOgotICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJp
Z2h0OgogICAgICAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQo
ZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uTGVm
dDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgorICAgICAgICBj
YXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAgICAgIFR5cGluZ0NvbW1hbmQ6
OmRlbGV0ZUtleVByZXNzZWQoZG9jdW1lbnQoKSwgb3B0aW9ucywgZ3JhbnVsYXJpdHkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIzMzEsNyArMjMzMSw3IEBAIFN0cmluZyBF
ZGl0b3I6Om1pc3NwZWxsZWRXb3JkQXRDYXJldE9yUmEKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3JkU2VsZWN0aW9uKHNlbGVjdGlvbi5iYXNlKCkp
OwotICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJp
dHkpOworICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgYXV0byB3b3JkUmFuZ2UgPSB3b3JkU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCF3b3JkUmFuZ2UpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKQEAgLTI0MDIsNyArMjQwMiw3IEBAIFZlY3RvcjxTdHJpbmc+IEVkaXRv
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWwKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgICAgICBpZiAoc2VsZWN0
aW9uLmlzQ2FyZXQoKSAmJiBiZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0aW9u
c1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiB3b3Jk
U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb24uYmFzZSgpKTsKLSAgICAgICAg
ICAgIHdvcmRTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkp
OworICAgICAgICAgICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgIHJhbmdlID0gd29yZFNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IHJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CkBAIC0yNTkzLDcgKzI1OTMs
NyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAgICAg
Ly8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCiAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuZW5kKCkpOwotICAgICAgICBtX2RvY3VtZW50LnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5KTsKKyAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgIH0KIAogICAgIGlmICghaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCkBAIC0yOTE5LDExICsyOTE5LDExIEBAIHZvaWQgRWRp
dG9yOjptYXJrQW5kUmVwbGFjZUZvcihjb25zdCBTcGUKICAgICAgICAgICAgIGF1dG8gc2VsZWN0
aW9uUmFuZ2UgPSBleHRlbmRlZFBhcmFncmFwaC5zdWJyYW5nZSh7IDAsIHNlbGVjdGlvbk9mZnNl
dCB9KTsKICAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW92ZVRvKHNlbGVjdGlv
blJhbmdlLT5lbmRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKICAgICAgICAgICAgIGlmIChhZGp1
c3RTZWxlY3Rpb25Gb3JQYXJhZ3JhcGhCb3VuZGFyaWVzKQotICAgICAgICAgICAgICAgIG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwg
RGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgICAgICAgICAgICAg
IG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIHRo
aXMgZmFpbHMgZm9yIGFueSByZWFzb24sIHRoZSBmYWxsYmFjayBpcyB0byBnbyBvbmUgcG9zaXRp
b24gYmV5b25kIHRoZSBsYXN0IHJlcGxhY2VtZW50CiAgICAgICAgICAgICBtX2RvY3VtZW50LnNl
bGVjdGlvbigpLm1vdmVUbyhtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgp
KTsKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRH
cmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9pZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRl
KFRleAogICAgIH0gZWxzZQogICAgICAgICBpbnNlcnRUZXh0KGFjY2VwdGVkQ2FuZGlkYXRlLnJl
cGxhY2VtZW50LCBudWxscHRyKTsKIAotICAgIFJlZlB0cjxSYW5nZT4gaW5zZXJ0ZWRDYW5kaWRh
dGVSYW5nZSA9IHJhbmdlRXhwYW5kZWRCeUNoYXJhY3RlcnNJbkRpcmVjdGlvbkF0V29yZEJvdW5k
YXJ5KHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1l
bnQubGVuZ3RoKCksIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+IGluc2Vy
dGVkQ2FuZGlkYXRlUmFuZ2UgPSByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25B
dFdvcmRCb3VuZGFyeShzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIGFjY2VwdGVkQ2FuZGlkYXRl
LnJlcGxhY2VtZW50Lmxlbmd0aCgpLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKICAg
ICBpZiAoaW5zZXJ0ZWRDYW5kaWRhdGVSYW5nZSkKICAgICAgICAgaW5zZXJ0ZWRDYW5kaWRhdGVS
YW5nZS0+c3RhcnRDb250YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoKmlu
c2VydGVkQ2FuZGlkYXRlUmFuZ2UsIERvY3VtZW50TWFya2VyOjpBY2NlcHRlZENhbmRpZGF0ZSwg
YWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCwzMiAr
MzA0LDMyIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUmIGZyYW1lLCAKIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZURlbGV0ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLmVkaXRvcigpLmRl
bGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5
LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBMT0dfRVJST1IoIkRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hh
cmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRlZCwgZG9pbmcgRGVsZXRlQmFja3dhcmQgaW5zdGVhZCIp
OwotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uQmFja3dh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgZnJhbWUuZWRpdG9y
KCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAg
IGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwogICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwg
TGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJkLCBQYXJhZ3Jh
cGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhE
aXJlY3Rpb24oU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQ
YXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZy
YQogewogICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRl
IHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YKICAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJl
IGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCku
Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25Gb3J3YXJk
LCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXAK
IHsKICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0
aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9mCiAgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBh
dCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLgotICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhE
aXJlY3Rpb24oRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNl
KTsKKyAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNjYsMTMgKzM2NiwxMyBAQCBzdGF0
aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9NYXJrKEZyYW1lJiBmCiAKIHN0YXRpYyBib29sIGV4ZWN1
dGVEZWxldGVXb3JkQmFja3dhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERp
cmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5LCB0cnVlLCBmYWxzZSk7
CisgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rp
b246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgdHJ1ZSwgZmFs
c2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlV29y
ZEZvcndhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJl
Y3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKKyAgICBmcmFtZS5l
ZGl0b3IoKS5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwg
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIHRydWUsIGZhbHNlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVGb3J3
YXJkRGVsZXRlKEZyYW1lJiAKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewogICAgIGNhc2UgQ29t
bWFuZEZyb21NZW51T3JLZXlCaW5kaW5nOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5kZWxldGVX
aXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxz
ZSwgdHJ1ZSk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ29t
bWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJmYWNlOgpA
QCAtNjA2LDQ3ICs2MDYsNDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZU1ha2VUZXh0V3JpdGluZ0Rp
cmVjdAogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUJhY2t3YXJkKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkJhY2t3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJl
Y3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2Fy
ZCwgTGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9u
RGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIExpbmVHcmFudWxhcml0eSwgVXNl
clRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9u
OjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFu
dWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVGb3J3YXJkKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZUxlZnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkxlZnQsIENoYXJh
Y3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICByZXR1cm4gZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2Vy
VHJpZ2dlcmVkKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uTGVmdCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIFVz
ZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0LCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtNjg4LDIwMyArNjg4LDIwMyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUmlnaHQoRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CisgICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogfQogCiBzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNl
bGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0
aW9uUmlnaHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNl
bGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rp
b24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNr
d2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5LCBVc2Vy
VHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUu
c2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJl
Y3Rpb25CYWNrd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91
bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9v
bCBleGVjdXRlTW92ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0
b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigp
Lm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJk
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmlu
Z09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2Rp
ZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBM
aW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpC
YWNrd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVnaW5uaW5n
T2ZQYXJhZ3JhcGgoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFncmFwaEJvdW5kYXJ5
LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mUGFyYWdy
YXBoQW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIFBhcmFn
cmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2Rp
ZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvQmVn
aW5uaW5nT2ZTZW50ZW5jZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2VudGVuY2VCb3Vu
ZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1l
U2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwg
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb0JlZ2lubmluZ09mU2Vu
dGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgU2Vu
dGVuY2VCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9k
aWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246
OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5k
T2ZEb2N1bWVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBEb2N1bWVudEJvdW5kYXJ5LCBV
c2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rp
b246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRHcmFu
dWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25z
dCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgRG9jdW1lbnRCb3VuZGFyeSwg
VXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0
aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQsIFRleHRH
cmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRlbmNlKEZyYW1l
JiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewot
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1v
dmUsIERpcmVjdGlvbkZvcndhcmQsIFNlbnRlbmNlQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUm
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0
ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBTZW50ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsK
KyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVUb0VuZE9mTGluZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJk
LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1v
ZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZMaW5l
QW5kTW9kaWZ5U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uRm9yd2FyZCwgTGluZUJvdW5k
YXJ5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwg
VGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvRW5kT2ZQYXJhZ3JhcGgoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgUGFyYWdyYXBoQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQp
OworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9FbmRPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbihG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFwaEJvdW5kYXJ5LCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25CYWNrd2FyZCwgUGFyYWdyYXBoR3JhbnVsYXJpdHks
IFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4
dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIFBhcmFncmFw
aEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2Rp
ZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgVXNlclRyaWdn
ZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVXAo
RnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgcmV0dXJuIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkJhY2t3YXJkLCBMaW5lR3JhbnVsYXJpdHksIFVzZXJU
cmlnZ2VyZWQpOworICAgIHJldHVybiBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxl
Y3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rp
b25CYWNrd2FyZCwgTGluZUdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVj
dGlvbkRpcmVjdGlvbjo6QmFja3dhcmQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVXb3JkQmFja3dhcmQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRT
b3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uQmFja3dhcmQsIFdvcmRHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZy
YW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBXb3JkR3JhbnVs
YXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2Fy
ZCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRGb3J3YXJkKEZy
YW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQog
ewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlv
bk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7
CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9u
TW92ZSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24oRnJhbWUmIGZy
YW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25Gb3J3YXJkLCBXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAg
IGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVu
ZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBi
b29sIGV4ZWN1dGVNb3ZlV29yZExlZnQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1h
bmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uTGVmdCwgV29yZEdyYW51
bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJh
bWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRl
eHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkTGVmdEFuZE1vZGlmeVNl
bGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkxlZnQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRy
aWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVXb3JkUmlnaHQoRnJhbWUmIGZyYW1lLCBFdmVudCos
IEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZnJhbWUuc2VsZWN0
aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uUmln
aHQsIFdvcmRHcmFudWxhcml0eSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9u
KCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uTW92ZSwgU2VsZWN0aW9uRGlyZWN0
aW9uOjpSaWdodCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRS
aWdodEFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnko
RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvblJpZ2h0LCBXb3JkR3Jh
bnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShG
cmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdo
dCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFVzZXJUcmlnZ2VyZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVRvTGVmdEVuZE9mTGlu
ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVy
YXRpb25Nb3ZlLCBEaXJlY3Rpb25MZWZ0LCBMaW5lQm91bmRhcnksIFVzZXJUcmlnZ2VyZWQpOwor
ICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1v
dmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRh
cnksIFVzZXJUcmlnZ2VyZWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVRvTGVmdEVuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERp
cmVjdGlvbkxlZnQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkxlZnQsIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJp
Z2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVU
b1JpZ2h0RW5kT2ZMaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvblJpZ2h0LCBMaW5lQm91bmRhcnksIFVz
ZXJUcmlnZ2VyZWQpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbk1vdmUsIFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQsIFRleHRHcmFudWxh
cml0eTo6TGluZUJvdW5kYXJ5LCBVc2VyVHJpZ2dlcmVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVUb1JpZ2h0RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewotICAgIGZyYW1lLnNlbGVjdGlvbigpLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0
ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uUmlnaHQsIExpbmVCb3VuZGFyeSwgVXNlclRyaWdnZXJl
ZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0LCBUZXh0R3JhbnVsYXJpdHk6Okxp
bmVCb3VuZGFyeSwgVXNlclRyaWdnZXJlZCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEw
MzUsMTcgKzEwMzUsMTcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSYgZnJh
bQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0TGluZShGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gZXhwYW5k
U2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgTGluZUdyYW51bGFyaXR5KTsKKyAgICByZXR1
cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51bGFyaXR5OjpM
aW5lR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0UGFyYWdyYXBo
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBQYXJh
Z3JhcGhHcmFudWxhcml0eSk7CisgICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJp
dHkoZnJhbWUsIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpOwogfQogCiBz
dGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIGV4cGFuZFNl
bGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFNlbnRlbmNlR3JhbnVsYXJpdHkpOworICAgIHJl
dHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9N
YXJrKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFy
ayhGcmFtZSYgZgogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0V29yZChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1
cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgV29yZEdyYW51bGFyaXR5KTsK
KyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFy
ayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5n
JikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZp
c2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBz
aG91bGRBbHdheXNVc2VEaXJlY3QKIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV94UG9z
Rm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24oTm9YUG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRp
b24oKSkKLSAgICAsIG1fZ3JhbnVsYXJpdHkoQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgLCBt
X2dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAjaWYg
RU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAgLCBtX2NhcmV0QmxpbmtUaW1lcigqdGhpcywgJkZyYW1l
U2VsZWN0aW9uOjpjYXJldEJsaW5rVGltZXJGaXJlZCkKICNlbmRpZgpAQCAtNjc2LDIyICs2NzYs
MjIgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6d2lsbEJlTW9kaWZpZWQoRUFsdAogICAgICAgICAg
ICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgewotICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxl
Y3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAgYmFzZUlzU3Rh
cnQgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0
ID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rpb25Gb3J3
YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAg
ICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IERpcmVjdGlvbkxlZnQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0Ogog
ICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIGNhc2UgU2VsZWN0
aW9uRGlyZWN0aW9uOjpCYWNrd2FyZDoKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzY1LDM0ICs3NjUsMzQgQEAgVmlz
aWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIGl0IGV4dGVuZHMg
Zm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9u
OjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBl
bmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6UlRMLgogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3Mg
PSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVu
Y2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0g
bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRh
cnk6CiAgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChncmFu
dWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGlu
Z0JhY2t3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5j
ZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdy
YXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFy
YWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFy
aXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgLy8gRklYTUU6IGlt
cGxlbWVudCBhbGwgb2YgdGhlIGFib3ZlPwogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdG
b3J3YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtODA2LDM0ICs4MDYsMzQgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeAogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3MobV9zZWxlY3Rpb24uZXh0ZW50KCksIG1f
c2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBj
YXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9zLm5leHQoQ2Fubm90Q3Jvc3NFZGl0
aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3Mg
PSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50
ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0U2VudGVuY2VQb3NpdGlvbihwb3Mp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBuZXh0TGluZVBv
c2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9u
KEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKICAgICAg
ICAgcG9zID0gbmV4dFBhcmFncmFwaFBvc2l0aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9y
QmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVYVEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3Vt
ZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoZW5kRm9y
UGxhdGZvcm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGxvZ2lj
YWxFbmRPZkxpbmUoZW5kRm9yUGxhdGZvcm0oKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRPZlBhcmFncmFwaChlbmRGb3JQbGF0Zm9ybSgpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3MgPSBlbmRGb3JQbGF0
Zm9ybSgpOwogICAgICAgICBpZiAoaXNFZGl0YWJsZVBvc2l0aW9uKHBvcy5kZWVwRXF1aXZhbGVu
dCgpKSkKICAgICAgICAgICAgIHBvcyA9IGVuZE9mRWRpdGFibGVDb250ZW50KHBvcyk7CkBAIC04
NTMsNyArODUzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwog
ICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
czsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGlmIChpc1JhbmdlKCkpIHsKICAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNp
YmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwpA
QCAtODYyLDcgKzg2Miw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnJpZ2h0KHRydWUsIHJl
YWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5
OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eTogewogICAgICAg
ICBib29sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQgPSBtX2RvY3VtZW50ICYmIG1fZG9jdW1l
bnQtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkU2tpcFNwYWNlV2hlbk1vdmluZ1JpZ2h0KCk7
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0
ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICBwb3MgPSByaWdodFdvcmRQ
b3NpdGlvbihjdXJyZW50UG9zaXRpb24sIHNraXBzU3BhY2VXaGVuTW92aW5nUmlnaHQpOwpAQCAt
ODcwLDE5ICs4NzAsMTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlN
bwogICAgICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJyZW50UG9zaXRpb247
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0g
ICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToK
LSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToK
LSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNl
bnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFsbCBvZiB0
aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHks
IHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5kYXJ5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIHBvcyA9
IHJpZ2h0Qm91bmRhcnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRH
cmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTg5NSwxNSArODk1LDE1IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5TW8KICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IGZhbHNlOwogICAgIFZp
c2libGVQb3NpdGlvbiBjdXJyZW50UG9zaXRpb247CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBjdXJyZW50UG9z
aXRpb24gPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9u
LmFmZmluaXR5KCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToK
LSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFy
eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRCb3VuZGFy
eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFy
YWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRh
cnk6CiAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGVuZEZvclBsYXRmb3JtKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC05MTIsMTkgKzkxMiwxOSBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAg
ICAvLyBGSVhNRTogU3RheSBpbiBlZGl0YWJsZSBjb250ZW50IGZvciB0aGUgbGVzcyBjb21tb24g
Z3JhbnVsYXJpdGllcy4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFy
YWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpCiAgICAgICAgICAgICBwb3MgPSBWaXNp
YmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rp
b24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0
aW5nQm91bmRhcnksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
V29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHk6CiAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShjdXJyZW50UG9z
aXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHBv
cyA9IG5leHRTZW50ZW5jZVBvc2l0aW9uKGN1cnJlbnRQb3NpdGlvbik7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OiB7CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVHcmFudWxhcml0eTogewogICAgICAgICAvLyBkb3duLWFycm93aW5nIGZyb20gYSByYW5n
ZSBzZWxlY3Rpb24gdGhhdCBlbmRzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgbmVlZHMKICAgICAg
ICAgLy8gdG8gbGVhdmUgdGhlIHNlbGVjdGlvbiBhdCB0aGF0IGxpbmUgc3RhcnQgKG5vIG5lZWQg
dG8gY2FsbCBuZXh0TGluZVBvc2l0aW9uISkKICAgICAgICAgcG9zID0gY3VycmVudFBvc2l0aW9u
OwpAQCAtOTMyLDIyICs5MzIsMjIgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNbwogICAgICAgICAgICAgcG9zID0gbmV4dExpbmVQb3NpdGlvbihwb3MsIGxpbmVEaXJl
Y3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIHBvcyA9IG5leHRQ
YXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJs
b2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50
R3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlNlbnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGVuZE9mU2VudGVuY2UoY3VycmVudFBv
c2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgcG9zID0gbG9naWNhbEVu
ZE9mTGluZShlbmRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0gZW5kT2ZQYXJhZ3JhcGgoY3VycmVu
dFBvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEJvdW5kYXJ5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBwb3Mg
PSBjdXJyZW50UG9zaXRpb247CiAgICAgICAgIGlmIChpc0VkaXRhYmxlUG9zaXRpb24ocG9zLmRl
ZXBFcXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0gZW5kT2ZFZGl0YWJsZUNvbnRlbnQo
cG9zKTsKQEAgLTk1NiwxMyArOTU2LDEzIEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5TW8KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHN3aXRjaCAoZ3JhbnVsYXJp
dHkpIHsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVs
YXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFu
dWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhC
b3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVu
Y2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRv
Y3VtZW50Qm91bmRhcnk6CiAgICAgICAgIGlmIChyZWFjaGVkQm91bmRhcnkpCiAgICAgICAgICAg
ICAqcmVhY2hlZEJvdW5kYXJ5ID0gcG9zID09IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgYnJl
YWs7CkBAIC05ODIsMzMgKzk4MiwzMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246
Om1vZGlmeUV4CiAgICAgLy8gaXQgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVu
Y2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpMVFIsCiAgICAgLy8gYnV0IGl0IGV4dGVu
ZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0
aW9uOjpSVEwuCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hhcmFjdGVy
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5OgogICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJl
Y3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0
KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBX
b3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihwb3MpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZv
cm0ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3Mg
PSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5l
R3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFNl
bnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERv
Y3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVs
YXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0
eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEwMjcsMzggKzEwMjcs
MzggQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgIC8vIEl0
IHdhcyBkb25lIGhlcmUgaW5zdGVhZCBvZiBpbiBWaXNpYmxlUG9zaXRpb24gYmVjYXVzZSB3ZSB3
YW50IFZQcyB0byBpdGVyYXRlCiAgICAgLy8gb3ZlciBldmVyeXRoaW5nLgogICAgIHN3aXRjaCAo
Z3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgorICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToKICAgICAgICAgcG9zID0gcG9z
LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRH
cmFudWxhcml0eToKICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91
c1NlbnRlbmNlUG9zaXRpb24ocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaW5lR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAg
ICAgICAgcG9zID0gcHJldmlvdXNMaW5lUG9zaXRpb24ocG9zLCBsaW5lRGlyZWN0aW9uUG9pbnRG
b3JCbG9ja0RpcmVjdGlvbk5hdmlnYXRpb24oRVhURU5UKSk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1BhcmFncmFwaFBvc2l0
aW9uKHBvcywgbGluZURpcmVjdGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKEVY
VEVOVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAg
Y2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0
YXJ0T2ZTZW50ZW5jZShzdGFydEZvclBsYXRmb3JtKCkpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5
OgogICAgICAgICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpKTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZQ
YXJhZ3JhcGgoc3RhcnRGb3JQbGF0Zm9ybSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5k
YXJ5OgogICAgICAgICBwb3MgPSBzdGFydEZvclBsYXRmb3JtKCk7CiAgICAgICAgIGlmIChpc0Vk
aXRhYmxlUG9zaXRpb24ocG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAgICAgICAgcG9zID0g
c3RhcnRPZkVkaXRhYmxlQ29udGVudChwb3MpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBw
b3MgPSBzdGFydE9mRG9jdW1lbnQocG9zKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1
bWVudEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51
bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0gZmFsc2U7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHBvczsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFy
YWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHk6CiAgICAgICAgIGlmIChpc1JhbmdlKCkpCiAgICAgICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAgICAg
cG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFm
ZmluaXR5KCkpOwpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2Vs
ZWN0aW9uOjptb2RpZnlNbwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLmxl
ZnQodHJ1ZSwgcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3Jk
R3JhbnVsYXJpdHk6IHsKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5
OiB7CiAgICAgICAgIGJvb2wgc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCA9IG1fZG9jdW1lbnQg
JiYgbV9kb2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRTa2lwU3BhY2VXaGVuTW92
aW5nUmlnaHQoKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbihtX3Nl
bGVjdGlvbi5leHRlbnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIHBvcyA9
IGxlZnRXb3JkUG9zaXRpb24oY3VycmVudFBvc2l0aW9uLCBza2lwc1NwYWNlV2hlbk1vdmluZ1Jp
Z2h0KTsKQEAgLTEwOTEsMTkgKzEwOTEsMTkgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0
aW9uOjptb2RpZnlNbwogICAgICAgICAgICAgKnJlYWNoZWRCb3VuZGFyeSA9IHBvcyA9PSBjdXJy
ZW50UG9zaXRpb247CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFNlbnRlbmNlR3Jh
bnVsYXJpdHk6Ci0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhH
cmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3Jh
cGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3Jh
bnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3Jh
bnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGFsbCBvZiB0aGUgYWJvdmUuCiAgICAgICAgIHBvcyA9IG1vZGlmeU1vdmluZ0JhY2t3YXJk
KGdyYW51bGFyaXR5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IExpbmVCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5Ogog
ICAgICAgICBwb3MgPSBsZWZ0Qm91bmRhcnlPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCBkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCksIHJlYWNoZWRCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0
eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExMTYsMTUgKzExMTYsMTUgQEAgVmlzaWJsZVBvc2l0
aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgICAgICAqcmVhY2hlZEJvdW5kYXJ5ID0g
ZmFsc2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbjsKICAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBTZW50
ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAg
ICAgIGN1cnJlbnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5leHRlbnQo
KSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGlu
ZUdyYW51bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBT
ZW50ZW5jZUJvdW5kYXJ5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgY2FzZSBE
b2N1bWVudEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRGb3JQbGF0
Zm9ybSgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTEzMiw1MiArMTEzMiw1
MiBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgfQogICAg
IFZpc2libGVQb3NpdGlvbiBwb3M7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNh
c2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJh
Y3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgpKQogICAgICAgICAgICAgcG9z
ID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCksIG1fc2VsZWN0aW9uLmFmZmlu
aXR5KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZXh0ZW50KCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpLnByZXZpb3VzKENh
bm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCByZWFjaGVkQm91bmRhcnkpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c1dvcmRQb3NpdGlvbihjdXJy
ZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJp
dHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAg
ICAgIHBvcyA9IHByZXZpb3VzU2VudGVuY2VQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICBwb3MgPSBwcmV2aW91c0xpbmVQb3Np
dGlvbihjdXJyZW50UG9zaXRpb24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9u
TmF2aWdhdGlvbihTVEFSVCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0
eToKICAgICAgICAgcG9zID0gcHJldmlvdXNQYXJhZ3JhcGhQb3NpdGlvbihjdXJyZW50UG9zaXRp
b24sIGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbihTVEFSVCkp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgY2FzZSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk6CiAgICAgICAgIHBvcyA9IHN0YXJ0T2ZT
ZW50ZW5jZShjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIExpbmVC
b3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAg
ICBwb3MgPSBsb2dpY2FsU3RhcnRPZkxpbmUoc3RhcnRGb3JQbGF0Zm9ybSgpLCByZWFjaGVkQm91
bmRhcnkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgcG9zID0g
c3RhcnRPZlBhcmFncmFwaChjdXJyZW50UG9zaXRpb24pOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIERvY3VtZW50Qm91bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50
Qm91bmRhcnk6CiAgICAgICAgIHBvcyA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgaWYgKGlz
RWRpdGFibGVQb3NpdGlvbihwb3MuZGVlcEVxdWl2YWxlbnQoKSkpCiAgICAgICAgICAgICBwb3Mg
PSBzdGFydE9mRWRpdGFibGVDb250ZW50KHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHBvcyA9IHN0YXJ0T2ZEb2N1bWVudChwb3MpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIERv
Y3VtZW50R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3Jh
bnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgV29yZEdyYW51bGFy
aXR5OgotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICBjYXNlIExpbmVHcmFudWxh
cml0eToKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VC
b3VuZGFyeToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5kYXJ5OgotICAgIGNhc2UgRG9jdW1lbnRC
b3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5OgorICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToK
KyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgaWYg
KHJlYWNoZWRCb3VuZGFyeSkKICAgICAgICAgICAgICpyZWFjaGVkQm91bmRhcnkgPSBwb3MgPT0g
Y3VycmVudFBvc2l0aW9uOwogICAgICAgICBicmVhazsKQEAgLTExODksNyArMTE4OSw3IEBAIFZp
c2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KIAogc3RhdGljIGJvb2wgaXNC
b3VuZGFyeShUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgcmV0dXJuIGdyYW51
bGFyaXR5ID09IExpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFy
eSB8fCBncmFudWxhcml0eSA9PSBEb2N1bWVudEJvdW5kYXJ5OworICAgIHJldHVybiBncmFudWxh
cml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSB8fCBncmFudWxhcml0eSA9PSBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5IHx8IGdyYW51bGFyaXR5ID09IFRleHRH
cmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeTsKIH0KIAogQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQgRnJhbWVTZWxlY3Rpb246OnRleHRTZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIs
IFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKQEAgLTEyMDIsNTUgKzEyMDIsNTUgQEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVT
ZWxlY3Rpb246OgogICAgIH0gZWxzZQogICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0g
ICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJp
dHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6Oldv
cmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFY
VGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5V29yZDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFu
dWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFu
dWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZTsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKLSAgICBjYXNlIFBhcmFncmFwaEJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIGludGVu
dC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFn
cmFwaDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAg
IGNhc2UgRG9jdW1lbnRCb3VuZGFyeToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1l
bnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFy
eToKICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBib29sIGJv
dW5kYXJ5ID0gZmFsc2U7CiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNhc2UgQ2hh
cmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBT
ZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2Ug
UGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0gICAgY2FzZSBMaW5lQm91
bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBjYXNlIERvY3VtZW50Qm91
bmRhcnk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5Ogor
ICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0
R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OkxpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBo
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJp
dHk6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUJv
dW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CisgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OgorICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBib3VuZGFyeSA9IHRydWU7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGly
ZWN0aW9uUmlnaHQ6Ci0gICAgY2FzZSBEaXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgU2VsZWN0
aW9uRGlyZWN0aW9uOjpSaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2Fy
ZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5k
aXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIDogQVhU
ZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRl
bnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IGZsaXAgPyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25Q
cmV2aW91cyA6IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKLSAgICBjYXNlIERpcmVjdGlvbkJhY2t3YXJkOgorICAg
IGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0
aW9uOjpCYWNrd2FyZDoKICAgICAgICAgaWYgKGJvdW5kYXJ5KQogICAgICAgICAgICAgaW50ZW50
LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5k
IDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nOwogICAgICAgICBlbHNlCkBAIC0x
MjYyLDU4ICsxMjYyLDU4IEBAIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9u
OjoKIAogc3RhdGljIEFYVGV4dFNlbGVjdGlvbiB0ZXh0U2VsZWN0aW9uV2l0aERpcmVjdGlvbkFu
ZEdyYW51bGFyaXR5KFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSkKIHsKLSAgICAvLyBGSVhNRTogQWNjb3VudCBmb3IgQklESSBpbiBEaXJl
Y3Rpb25SaWdodCAmIERpcmVjdGlvbkxlZnQuIChJbiBhIFJUTCBibG9jaywgUmlnaHQgd291bGQg
bWFwIHRvIFByZXZpb3VzL0JlZ2lubmluZyBhbmQgTGVmdCB0byBOZXh0L0VuZC4pCisgICAgLy8g
RklYTUU6IEFjY291bnQgZm9yIEJJREkgaW4gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCAmIFNl
bGVjdGlvbkRpcmVjdGlvbjo6TGVmdC4gKEluIGEgUlRMIGJsb2NrLCBSaWdodCB3b3VsZCBtYXAg
dG8gUHJldmlvdXMvQmVnaW5uaW5nIGFuZCBMZWZ0IHRvIE5leHQvRW5kLikKICAgICBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb24gaW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uVW5rbm93bjsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0aW9u
Rm9yd2FyZDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAg
aW50ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVj
dGlvbjo6UmlnaHQ6CiAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbk5leHQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uQmFja3dhcmQ6
CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAgICAgICBpbnRlbnRE
aXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9u
OjpMZWZ0OgogICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rp
b25QcmV2aW91czsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFYVGV4dFNlbGVjdGlvbkdy
YW51bGFyaXR5IGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlV
bmtub3duOwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKLSAgICBjYXNlIENoYXJhY3Rlckdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eToKICAgICAgICAgaW50ZW50R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0
eUNoYXJhY3RlcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToKICAgICAgICAgaW50ZW50
R3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVdvcmQ7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAgICBjYXNlIFNlbnRlbmNlQm91
bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBh
ZmZlY3QgZGlyZWN0aW9uLgogICAgICAgICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVj
dGlvbkdyYW51bGFyaXR5U2VudGVuY2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUdy
YW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGludGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5l
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgIGNh
c2UgUGFyYWdyYXBoQm91bmRhcnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRp
cmVjdGlvbi4KKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5OiAvLyBGSVhNRTog
Qm91bmRhcnkgc2hvdWxkIGFmZmVjdCBkaXJlY3Rpb24uCiAgICAgICAgIGludGVudEdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGg7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKLSAgICBjYXNlIERvY3VtZW50Qm91bmRh
cnk6IC8vIEZJWE1FOiBCb3VuZGFyeSBzaG91bGQgYWZmZWN0IGRpcmVjdGlvbi4KKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFu
dWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeTogLy8gRklYTUU6IEJvdW5kYXJ5IHNob3VsZCBhZmZl
Y3QgZGlyZWN0aW9uLgogICAgICAgICBpbnRlbnRHcmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5RG9jdW1lbnQ7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGluZUJvdW5k
YXJ5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIGlu
dGVudEdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lOwogICAgICAg
ICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgICAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6Cisg
ICAgICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOgogICAgICAgICAgICAgaW50
ZW50RGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRGlyZWN0aW9uUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0
aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvbkVuZDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IERpcmVjdGlvbkJhY2t3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQ6CiAgICAgICAgICAgICBpbnRlbnREaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25CZWdpbm5pbmc7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEaXJlY3Rp
b25MZWZ0OgorICAgICAgICBjYXNlIFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDoKICAgICAgICAg
ICAgIGludGVudERpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZzsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzQ0LDI1ICsxMzQ0LDI1IEBAIGJv
b2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICBQb3NpdGlvbiBvcmln
aW5hbFN0YXJ0UG9zaXRpb24gPSBtX3NlbGVjdGlvbi5zdGFydCgpOwogICAgIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbjsKICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgRGlyZWN0
aW9uUmlnaHQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0OgogICAgICAgICBp
ZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbk1vdmUpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlm
eU1vdmluZ1JpZ2h0KGdyYW51bGFyaXR5LCAmcmVhY2hlZEJvdW5kYXJ5KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcG9zaXRpb24gPSBtb2RpZnlFeHRlbmRpbmdSaWdodChncmFudWxhcml0
eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNl
IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDoKICAgICAgICAgaWYgKGFsdGVyID09IEFsdGVy
YXRpb25FeHRlbmQpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3NpdGlvbiA9IG1v
ZGlmeU1vdmluZ0ZvcndhcmQoZ3JhbnVsYXJpdHksICZyZWFjaGVkQm91bmRhcnkpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIERpcmVjdGlvbkxlZnQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJl
Y3Rpb246OkxlZnQ6CiAgICAgICAgIGlmIChhbHRlciA9PSBBbHRlcmF0aW9uTW92ZSkKICAgICAg
ICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5TW92aW5nTGVmdChncmFudWxhcml0eSwgJnJlYWNoZWRC
b3VuZGFyeSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvc2l0aW9uID0gbW9kaWZ5RXh0
ZW5kaW5nTGVmdChncmFudWxhcml0eSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0
aW9uQmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOgogICAg
ICAgICBpZiAoYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4dGVuZCkKICAgICAgICAgICAgIHBvc2l0aW9u
ID0gbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCkBA
IC0xNDAyLDcgKzE0MDIsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRp
b24gCiAgICAgY2FzZSBBbHRlcmF0aW9uRXh0ZW5kOgogCiAgICAgICAgIGlmICghbV9zZWxlY3Rp
b24uaXNDYXJldCgpCi0gICAgICAgICAgICAmJiAoZ3JhbnVsYXJpdHkgPT0gV29yZEdyYW51bGFy
aXR5IHx8IGdyYW51bGFyaXR5ID09IFBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5
ID09IExpbmVHcmFudWxhcml0eSkKKyAgICAgICAgICAgICYmIChncmFudWxhcml0eSA9PSBUZXh0
R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSB8fCBncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5KQogICAgICAgICAgICAgJiYgbV9kb2N1bWVudCAmJiAhbV9k
b2N1bWVudC0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRFeHRlbmRTZWxlY3Rpb25CeVdvcmRP
ckxpbmVBY3Jvc3NDYXJldCgpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCBsZXQgdGhlIHNlbGVj
dGlvbiBnbyBhY3Jvc3MgdGhlIGJhc2UgcG9zaXRpb24gZGlyZWN0bHkuIE5lZWRlZCB0byBtYXRj
aCBtYWMKICAgICAgICAgICAgIC8vIGJlaGF2aW9yIHdoZW4sIGZvciBpbnN0YW5jZSwgd29yZC1z
ZWxlY3RpbmcgYmFja3dhcmRzIHN0YXJ0aW5nIHdpdGggdGhlIGNhcmV0IGluCkBAIC0xNDIwLDcg
KzE0MjAsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAg
ICAgICAgICBzZXRFeHRlbnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9u
Rm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgZGlyZWN0
aW9uID09IERpcmVjdGlvblJpZ2h0KSB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQpKQorICAgICAgICAgICAgaWYgKGRp
cmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246
OlJpZ2h0KSB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0
aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5k
KHBvc2l0aW9uLCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBzZXRTdGFydChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CkBAIC0xNDI4LDExICsxNDI4
LDExIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246Om1vZGlmeShFQWx0ZXJhdGlvbiAKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAotICAgIGlmIChncmFudWxhcml0eSA9PSBMaW5lR3JhbnVsYXJp
dHkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51
bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5
ID09IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpCiAgICAgICAgIG1feFBv
c0ZvclZlcnRpY2FsQXJyb3dOYXZpZ2F0aW9uID0geDsKIAogICAgIGlmICh1c2VyVHJpZ2dlcmVk
ID09IFVzZXJUcmlnZ2VyZWQpCi0gICAgICAgIG1fZ3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKKyAgICAgICAgbV9ncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHk7CiAKICAgICBzZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogCkBAIC0x
NDY0LDcgKzE0NjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24g
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgd2lsbEJlTW9kaWZpZWQo
YWx0ZXIsIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25VcCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGly
ZWN0aW9uRm9yd2FyZCk7CisgICAgd2lsbEJlTW9kaWZpZWQoYWx0ZXIsIGRpcmVjdGlvbiA9PSBE
aXJlY3Rpb25VcCA/IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgOiBTZWxlY3Rpb25EaXJl
Y3Rpb246OkZvcndhcmQpOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvczsKICAgICBMYXlvdXRV
bml0IHhQb3M7CkBAIC0xNTI0LDcgKzE1MjQsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkoRUFsdGVyYXRpb24gCiAgICAgfQogCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRy
aWdnZXJlZCkKLSAgICAgICAgbV9ncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5Owor
ICAgICAgICBtX2dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxh
cml0eTsKIAogICAgIG1fc2VsZWN0aW9uLnNldElzRGlyZWN0aW9uYWwoc2hvdWxkQWx3YXlzVXNl
RGlyZWN0aW9uYWxTZWxlY3Rpb24obV9kb2N1bWVudCkgfHwgYWx0ZXIgPT0gQWx0ZXJhdGlvbkV4
dGVuZCk7CiAKQEAgLTE1NzIsMTMgKzE1NzIsMTMgQEAgTGF5b3V0VW5pdCBGcmFtZVNlbGVjdGlv
bjo6bGluZURpcmVjdGlvbgogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpjbGVhcigpCiB7Ci0gICAg
bV9ncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAgIG1fZ3JhbnVsYXJpdHkg
PSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OwogICAgIHNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKCkpOwogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVS
ZW1vdmVkRnJvbUZyYW1lKCkKIHsKLSAgICBtX2dyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVs
YXJpdHk7CisgICAgbV9ncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHk7CiAKICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBtX2NhcmV0QmxpbmtUaW1l
ci5zdG9wKCk7CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxs
QmVSZW1vdmVkRnJvbUZyCiAgICAgaWYgKGF1dG8qIHZpZXcgPSBtX2RvY3VtZW50LT5yZW5kZXJW
aWV3KCkpCiAgICAgICAgIHZpZXctPnNlbGVjdGlvbigpLmNsZWFyU2VsZWN0aW9uKCk7CiAKLSAg
ICBzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24o
KSwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVl
ZGVkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0
aW5nQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uKCksIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRp
b25zKCksIEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAgICAgbV9wcmV2aW91c0NhcmV0Tm9kZSA9IG51bGxwdHI7CiAg
ICAgbV90eXBpbmdTdHlsZSA9IG51bGxwdHI7CiAgICAgbV9hcHBlYXJhbmNlVXBkYXRlVGltZXIu
c3RvcCgpOwpAQCAtMjE2NSw3ICsyMTY1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRl
QXBwZWFyYW5jZSgpCiAgICAgLy8gQ29uc3RydWN0IGEgbmV3IFZpc2libGVTb2x1dGlvbiwgc2lu
Y2UgbV9zZWxlY3Rpb24gaXMgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLCBhbmQgdGhlIGZvbGxvd2lu
ZyBzdGVwcwogICAgIC8vIGFzc3VtZSBhIHZhbGlkIHNlbGVjdGlvbi4gU2VlIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk1NjM+IGFuZCA8cmRhcjovL3Byb2JsZW0v
MTAyMzI4NjY+LgogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIFZpc2libGVQb3NpdGlvbiBl
bmRWaXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29yID8gbW9kaWZ5RXh0ZW5kaW5nRm9y
d2FyZChDaGFyYWN0ZXJHcmFudWxhcml0eSkgOiBvbGRTZWxlY3Rpb24udmlzaWJsZUVuZCgpOwor
ICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSBwYWludEJsb2NrQ3Vyc29y
ID8gbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZChUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5KSA6IG9sZFNlbGVjdGlvbi52aXNpYmxlRW5kKCk7CiAgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24ob2xkU2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBlbmRWaXNpYmxlUG9zaXRp
b24pOwogI2Vsc2UKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihvbGRTZWxlY3Rpb24u
dmlzaWJsZVN0YXJ0KCksIG9sZFNlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwpAQCAtMjc0MywxMCAr
Mjc0MywxMCBAQCBWaXNpYmxlU2VsZWN0aW9uIEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsCiAgICAg
Ly8gVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBzZWxlY3RpbmcgdGhlIHdvcmQgb24gdGhlIGxpbmUg
KHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3ZSB3YW50LCByYXRoZXIgdGhhbiBzZWxlY3RpbmcgcGFz
dCB0aGUgZW5kIG9mIHRoZSBsaW5lKS4KICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaChlbmRWaXNp
YmxlUG9zQmVmb3JlRXhwYW5zaW9uKSAmJiAhaXNTdGFydE9mUGFyYWdyYXBoKGVuZFZpc2libGVQ
b3NCZWZvcmVFeHBhbnNpb24pKQotICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpOworICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246
OkFsdGVyYXRpb25Nb3ZlLCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVs
YXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3
U2VsZWN0aW9uID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCk7Ci0gICAgbmV3U2VsZWN0aW9u
LmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICBuZXdTZWxlY3Rp
b24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0
eSk7CiAgICAgZnJhbWVTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQWxpZ25D
dXJzb3JPblNjcm9sbElmTmVlZGVkLCBmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAog
ICAgIFBvc2l0aW9uIHN0YXJ0UG9zKGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkp
OwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6
d29yZFNlbAogICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKICAgICAgICAg
fQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oc3RhcnRWaXNpYmxlUG9zKTsKLSAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5k
LCBEaXJlY3Rpb25CYWNrd2FyZCwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxl
Y3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBTZWxlY3Rpb25E
aXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAg
ICAgICAgIHN0YXJ0UG9zID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAg
ICAgICAgZW5kUG9zID0gZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkuZW5kKCk7CiAgICAgICAg
IHN0YXJ0VmlzaWJsZVBvcyA9IFZpc2libGVQb3NpdGlvbihzdGFydFBvcywgVlBfREVGQVVMVF9B
RkZJTklUWSk7CkBAIC0yODcyLDkgKzI4NzIsOSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJh
bWVTZWxlY3Rpb246OnJhCiAKICAgICBGcmFtZVNlbGVjdGlvbiBmcmFtZVNlbGVjdGlvbjsKICAg
ICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24obV9zZWxlY3Rpb24pOwotICAgIFNlbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91bnQgPiAwID8gRGlyZWN0aW9uRm9yd2FyZCA6IERp
cmVjdGlvbkJhY2t3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBhbW91
bnQgPiAwID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkIDogU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFicyhhbW91bnQpOyBpKyspCi0g
ICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShhbHRlcmF0aW9uLCBkaXJlY3Rpb24sIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKKyAgICAgICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KGFsdGVyYXRp
b24sIGRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAg
ICAgcmV0dXJuIGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHJldmlz
aW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmVX
aXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBib29s
IHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9uUmV2
ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQoKSk7CiAKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdGlvbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9u
T3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9
IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiA9IGRlZmF1
bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25T
Y3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eSk7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZENsb3NlVHlwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2Uo
UmFuZ2UqLCBFQWZmaW5pdHksIFNob3VsZENsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5v
dFVzZXJUcmlnZ2VyZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0R3JhbnVs
YXJpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRHcmFudWxh
cml0eS5oCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRH
cmFudWxhcml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gRklYTUU6IFRoaXMgcmVhbGx5IHNob3VsZCBiZSBicm9rZW4gdXAgaW50
byBtb3JlIHRoYW4gb25lIGNvbmNlcHQuCiAvLyBGcmFtZSBkb2Vzbid0IG5lZWQgdGhlIDMgYm91
bmRhcmllcyBpbiB0aGlzIGVudW0uCi1lbnVtIFRleHRHcmFudWxhcml0eSB7CitlbnVtIGNsYXNz
IFRleHRHcmFudWxhcml0eSA6IHVpbnQ4X3QgewogICAgIENoYXJhY3RlckdyYW51bGFyaXR5LAog
ICAgIFdvcmRHcmFudWxhcml0eSwKICAgICBTZW50ZW5jZUdyYW51bGFyaXR5LApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCShyZXZpc2lvbiAyNjE3NjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTYgKzEwMSwxNiBAQCBzdGF0aWMgaW5saW5lIEVkaXRBY3Rpb24gZWRpdEFjdGlv
bkZvclR5CiAgICAgY2FzZSBUeXBpbmdDb21tYW5kOjpEZWxldGVTZWxlY3Rpb246CiAgICAgICAg
IHJldHVybiBFZGl0QWN0aW9uOjpUeXBpbmdEZWxldGVTZWxlY3Rpb247CiAgICAgY2FzZSBUeXBp
bmdDb21tYW5kOjpEZWxldGVLZXk6IHsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFdvcmRH
cmFudWxhcml0eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0Rl
bGV0ZVdvcmRCYWNrd2FyZDsKLSAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IExpbmVCb3VuZGFy
eSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5k
YXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUxpbmVCYWNr
d2FyZDsKICAgICAgICAgcmV0dXJuIEVkaXRBY3Rpb246OlR5cGluZ0RlbGV0ZUJhY2t3YXJkOwog
ICAgIH0KICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6OkZvcndhcmREZWxldGVLZXk6Ci0gICAgICAg
IGlmIChncmFudWxhcml0eSA9PSBXb3JkR3JhbnVsYXJpdHkpCisgICAgICAgIGlmIChncmFudWxh
cml0eSA9PSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSkKICAgICAgICAgICAgIHJl
dHVybiBFZGl0QWN0aW9uOjpUeXBpbmdEZWxldGVXb3JkRm9yd2FyZDsKLSAgICAgICAgaWYgKGdy
YW51bGFyaXR5ID09IExpbmVCb3VuZGFyeSkKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5KQogICAgICAgICAgICAgcmV0dXJuIEVkaXRBY3Rp
b246OlR5cGluZ0RlbGV0ZUxpbmVGb3J3YXJkOwogICAgICAgICByZXR1cm4gRWRpdEFjdGlvbjo6
VHlwaW5nRGVsZXRlRm9yd2FyZDsKICAgICBjYXNlIFR5cGluZ0NvbW1hbmQ6Okluc2VydFRleHQ6
CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVTZWxlY3Rpb24o
RG9jdQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBPcHRpb25zIG9wdGlvbnMsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsK
LSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKKyAgICBpZiAo
Z3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewog
ICAgICAgICBpZiAoUmVmUHRyPFR5cGluZ0NvbW1hbmQ+IGxhc3RUeXBpbmdDb21tYW5kID0gbGFz
dFR5cGluZ0NvbW1hbmRJZlN0aWxsT3BlbkZvclR5cGluZyhkb2N1bWVudCkpIHsKICAgICAgICAg
ICAgIHVwZGF0ZVNlbGVjdGlvbklmRGlmZmVyZW50RnJvbUN1cnJlbnRTZWxlY3Rpb24obGFzdFR5
cGluZ0NvbW1hbmQuZ2V0KCksIGRvY3VtZW50KTsKICAgICAgICAgICAgIGxhc3RUeXBpbmdDb21t
YW5kLT5zZXRJc0F1dG9jb21wbGV0aW9uKG9wdGlvbnMgJiBJc0F1dG9jb21wbGV0aW9uKTsKQEAg
LTE5Niw3ICsxOTYsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoRG9j
CiB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiBk
b2N1bWVudCwgT3B0aW9ucyBvcHRpb25zLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7
CiAgICAgLy8gRklYTUU6IEZvcndhcmQgZGVsZXRlIGluIFRleHRFZGl0IGFwcGVhcnMgdG8gb3Bl
biBhbmQgY2xvc2UgYSBuZXcgdHlwaW5nIGNvbW1hbmQuCi0gICAgaWYgKGdyYW51bGFyaXR5ID09
IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFu
dWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxUeXBp
bmdDb21tYW5kPiBsYXN0VHlwaW5nQ29tbWFuZCA9IGxhc3RUeXBpbmdDb21tYW5kSWZTdGlsbE9w
ZW5Gb3JUeXBpbmcoZG9jdW1lbnQpKSB7CiAgICAgICAgICAgICB1cGRhdGVTZWxlY3Rpb25JZkRp
ZmZlcmVudEZyb21DdXJyZW50U2VsZWN0aW9uKGxhc3RUeXBpbmdDb21tYW5kLmdldCgpLCBkb2N1
bWVudCk7CiAgICAgICAgICAgICBsYXN0VHlwaW5nQ29tbWFuZC0+c2V0SXNBdXRvY29tcGxldGlv
bihvcHRpb25zICYgSXNBdXRvY29tcGxldGlvbik7CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBU
eXBpbmdDb21tYW5kOjppbnNlcnRUZXh0QW5kTm90aWZ5QQogCiB2b2lkIFR5cGluZ0NvbW1hbmQ6
Omluc2VydFRleHRSdW5XaXRob3V0TmV3bGluZXMoY29uc3QgU3RyaW5nICZ0ZXh0LCBib29sIHNl
bGVjdEluc2VydGVkVGV4dCkKIHsKLSAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5k
KEluc2VydFRleHQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0ZXh0KSkKKyAgICBpZiAoIXdpbGxB
ZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFRleHQsIFRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRleHQpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGNvbW1h
bmQgPSBJbnNlcnRUZXh0Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHQsIHNlbGVjdElu
c2VydGVkVGV4dCwKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2Vy
dExpbmVCcmVhaygpCiAgICAgaWYgKCFjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVu
ZGluZ1NlbGVjdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlw
aW5nVG9PcGVuQ29tbWFuZChJbnNlcnRMaW5lQnJlYWssIExpbmVHcmFudWxhcml0eSkpCisgICAg
aWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChJbnNlcnRMaW5lQnJlYWssIFRleHRHcmFu
dWxhcml0eTo6TGluZUdyYW51bGFyaXR5KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXBwbHlD
b21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50
KCkpKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFn
cmFwaFNlcGFyCiAgICAgaWYgKCFjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGlu
Z1NlbGVjdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF3aWxsQWRkVHlwaW5n
VG9PcGVuQ29tbWFuZChJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IsIFBhcmFncmFwaEdyYW51bGFy
aXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBpbmdUb09wZW5Db21tYW5kKEluc2VydFBhcmFncmFw
aFNlcGFyYXRvciwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEluc2VydFBhcmFncmFw
aFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBmYWxzZSwgZmFsc2UsIEVkaXRB
Y3Rpb246OlR5cGluZ0luc2VydFBhcmFncmFwaCkpOwpAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQg
VHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXIKIAogdm9pZCBUeXBpbmdDb21tYW5k
OjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQoKQogewotICAgIGlmICgh
d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90
ZWRDb250ZW50LCBQYXJhZ3JhcGhHcmFudWxhcml0eSkpCisgICAgaWYgKCF3aWxsQWRkVHlwaW5n
VG9PcGVuQ29tbWFuZChJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQsIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBpbnNpZGUgYSB0YWJsZSwganVzdCBpbnNl
cnQgdGhlIHBhcmFncmFwaCBzZXBhcmF0b3Igbm9ybWFsbHkKQEAgLTY1MCw5ICs2NTAsOSBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAKICAgICAgICAgRnJhbWVT
ZWxlY3Rpb24gc2VsZWN0aW9uOwogICAgICAgICBzZWxlY3Rpb24uc2V0U2VsZWN0aW9uKGVuZGlu
Z1NlbGVjdGlvbigpKTsKLSAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbkV4dGVuZCwgRGlyZWN0aW9uQmFja3dhcmQsIGdyYW51bGFyaXR5KTsKLSAgICAg
ICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBncmFu
dWxhcml0eSAhPSBDaGFyYWN0ZXJHcmFudWxhcml0eSkKLSAgICAgICAgICAgIHNlbGVjdGlvbi5t
b2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJk
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVT
ZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQs
IGdyYW51bGFyaXR5KTsKKyAgICAgICAgaWYgKHNob3VsZEFkZFRvS2lsbFJpbmcgJiYgc2VsZWN0
aW9uLmlzQ2FyZXQoKSAmJiBncmFudWxhcml0eSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5KQorICAgICAgICAgICAgc2VsZWN0aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlv
bjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQo
KTsKICAgICAgICAgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwcmV2aW91c1Bvc2l0aW9uID0gdmlz
aWJsZVN0YXJ0LnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKQEAgLTY4Nyw3
ICs2ODcsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQoVGV4CiAgICAg
ICAgICAgICBpZiAoaXNMYXN0UG9zaXRpb25CZWZvcmVUYWJsZSh2aXNpYmxlU3RhcnQpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9u
IGJhY2t3YXJkIGludG8gdGhlIGxhc3QgY2VsbCwgdGhlbiBkZWxldGlvbiB3aWxsIGhhbmRsZSB0
aGUgbW92ZS4KLSAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFs
dGVyYXRpb25FeHRlbmQsIERpcmVjdGlvbkJhY2t3YXJkLCBncmFudWxhcml0eSk7CisgICAgICAg
ICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBT
ZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIC8vIElm
IHRoZSBjYXJldCBpcyBqdXN0IGFmdGVyIGEgdGFibGUsIHNlbGVjdCB0aGUgdGFibGUgYW5kIGRv
bid0IGRlbGV0ZSBhbnl0aGluZy4KICAgICAgICAgfSBlbHNlIGlmIChOb2RlKiB0YWJsZSA9IGlz
Rmlyc3RQb3NpdGlvbkFmdGVyVGFibGUodmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRpb25CZWZvcmVOb2RlKHRhYmxl
KSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0aW9u
KCkuaXNEaXJlY3Rpb25hbCgpKSk7CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBUeXBpbmdDb21t
YW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleAogCiAgICAgICAgIHNlbGVjdGlvblRvRGVsZXRlID0g
c2VsZWN0aW9uLnNlbGVjdGlvbigpOwogCi0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBDaGFy
YWN0ZXJHcmFudWxhcml0eSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5jb250YWluZXJOb2Rl
KCkgPT0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5jb250YWluZXJOb2RlKCkKKyAgICAgICAg
aWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkg
JiYgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkuY29udGFpbmVyTm9kZSgpID09IHNlbGVjdGlvblRv
RGVsZXRlLnN0YXJ0KCkuY29udGFpbmVyTm9kZSgpCiAgICAgICAgICAgICAmJiBzZWxlY3Rpb25U
b0RlbGV0ZS5lbmQoKS5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkgLSBzZWxlY3Rpb25U
b0RlbGV0ZS5zdGFydCgpLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA+IDEpIHsKICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRv
IGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUgcmFuZ2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlv
bnMuCiAgICAgICAgICAgICBzZWxlY3Rpb25Ub0RlbGV0ZS5zZXRXaXRob3V0VmFsaWRhdGlvbihz
ZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwgc2VsZWN0aW9uVG9EZWxldGUuZW5kKCkucHJldmlvdXMo
QmFja3dhcmREZWxldGlvbikpOwpAQCAtNzczLDExICs3NzMsMTEgQEAgdm9pZCBUeXBpbmdDb21t
YW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAgICAgICAvLyByb290IGVkaXRhYmxlIGVsZW1l
bnQgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgZG9jdW1lbnQuCiAgICAgICAgIEZyYW1lU2VsZWN0aW9u
IHNlbGVjdGlvbjsKICAgICAgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbihlbmRpbmdTZWxlY3Rp
b24oKSk7Ci0gICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIERpcmVjdGlvbkZvcndhcmQsIGdyYW51bGFyaXR5KTsKKyAgICAgICAgc2VsZWN0
aW9uLm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkLCBncmFudWxhcml0eSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNO
b25lKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxS
aW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgZ3JhbnVsYXJpdHkgIT0gQ2hhcmFjdGVyR3Jh
bnVsYXJpdHkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5KEZyYW1lU2VsZWN0aW9uOjpB
bHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
CisgICAgICAgIGlmIChzaG91bGRBZGRUb0tpbGxSaW5nICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkg
JiYgZ3JhbnVsYXJpdHkgIT0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkK
KyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25F
eHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgUG9zaXRpb24gZG93bnN0cmVhbUVuZCA9IGVu
ZGluZ1NlbGVjdGlvbigpLmVuZCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVFbmQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CkBAIC03OTUs
OCArNzk1LDggQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpmb3J3YXJkRGVsZXRlS2V5UHJlcwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gZGVsZXRpbmcgdG8gZW5kIG9mIHBhcmFncmFwaCB3aGVuIGF0
IGVuZCBvZiBwYXJhZ3JhcGggbmVlZHMgdG8gbWVyZ2UgdGhlIG5leHQgcGFyYWdyYXBoIChpZiBh
bnkpCi0gICAgICAgIGlmIChncmFudWxhcml0eSA9PSBQYXJhZ3JhcGhCb3VuZGFyeSAmJiBzZWxl
Y3Rpb24uc2VsZWN0aW9uKCkuaXNDYXJldCgpICYmIGlzRW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9u
LnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSkpCi0gICAgICAgICAgICBzZWxlY3Rpb24ubW9kaWZ5
KEZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0aW9uRXh0ZW5kLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBUZXh0R3JhbnVs
YXJpdHk6OlBhcmFncmFwaEJvdW5kYXJ5ICYmIHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0
KCkgJiYgaXNFbmRPZlBhcmFncmFwaChzZWxlY3Rpb24uc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgp
KSkKKyAgICAgICAgICAgIHNlbGVjdGlvbi5tb2RpZnkoRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25FeHRlbmQsIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCwgVGV4dEdyYW51bGFyaXR5OjpD
aGFyYWN0ZXJHcmFudWxhcml0eSk7CiAKICAgICAgICAgc2VsZWN0aW9uVG9EZWxldGUgPSBzZWxl
Y3Rpb24uc2VsZWN0aW9uKCk7CiAgICAgICAgIGlmICghc3RhcnRpbmdTZWxlY3Rpb24oKS5pc1Jh
bmdlKCkgfHwgc2VsZWN0aW9uVG9EZWxldGUuYmFzZSgpICE9IHN0YXJ0aW5nU2VsZWN0aW9uKCku
c3RhcnQoKSkKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmRE
ZWxldGVLZXlQcmVzCiAKIHZvaWQgVHlwaW5nQ29tbWFuZDo6ZGVsZXRlU2VsZWN0aW9uKGJvb2wg
c21hcnREZWxldGUpCiB7Ci0gICAgaWYgKCF3aWxsQWRkVHlwaW5nVG9PcGVuQ29tbWFuZChEZWxl
dGVTZWxlY3Rpb24sIENoYXJhY3RlckdyYW51bGFyaXR5KSkKKyAgICBpZiAoIXdpbGxBZGRUeXBp
bmdUb09wZW5Db21tYW5kKERlbGV0ZVNlbGVjdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0
ZXJHcmFudWxhcml0eSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjpkZWxldGVTZWxlY3Rpb24oc21hcnREZWxldGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UeXBpbmdDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UeXBpbmdDb21tYW5kLmgJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wdGlvbnM7CiAKICAgICBzdGF0aWMgdm9p
ZCBkZWxldGVTZWxlY3Rpb24oRG9jdW1lbnQmLCBPcHRpb25zID0gMCwgVGV4dENvbXBvc2l0aW9u
VHlwZSA9IFRleHRDb21wb3NpdGlvbk5vbmUpOwotICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUtleVBy
ZXNzZWQoRG9jdW1lbnQmLCBPcHRpb25zID0gMCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOwotICAgIHN0YXRpYyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERv
Y3VtZW50JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFy
aXR5KTsKKyAgICBzdGF0aWMgdm9pZCBkZWxldGVLZXlQcmVzc2VkKERvY3VtZW50JiwgT3B0aW9u
cyA9IDAsIFRleHRHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkpOworICAgIHN0YXRpYyB2b2lkIGZvcndhcmREZWxldGVLZXlQcmVzc2VkKERvY3VtZW50
JiwgT3B0aW9ucyA9IDAsIFRleHRHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFj
dGVyR3JhbnVsYXJpdHkpOwogICAgIHN0YXRpYyB2b2lkIGluc2VydFRleHQoRG9jdW1lbnQmLCBj
b25zdCBTdHJpbmcmLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25UeXBlID0gVGV4dENvbXBvc2l0
aW9uTm9uZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0VGV4dChEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25zLCBUZXh0Q29tcG9zaXRpb25U
eXBlID0gVGV4dENvbXBvc2l0aW9uTm9uZSk7CiAgICAgc3RhdGljIHZvaWQgaW5zZXJ0TGluZUJy
ZWFrKERvY3VtZW50JiwgT3B0aW9ucyk7CkBAIC04NiwxNCArODYsMTQgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxUeXBpbmdDb21tYW5kPiBjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBFVHlwaW5nQ29tbWFuZCBjb21tYW5kLCBjb25zdCBTdHJpbmcmIHRl
eHQgPSBlbXB0eVN0cmluZygpLCBPcHRpb25zIG9wdGlvbnMgPSAwLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBj
b21wb3NpdGlvblR5cGUgPSBUZXh0Q29tcG9zaXRpb25Ob25lKQorICAgIHN0YXRpYyBSZWY8VHlw
aW5nQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29t
bWFuZCwgY29uc3QgU3RyaW5nJiB0ZXh0ID0gZW1wdHlTdHJpbmcoKSwgT3B0aW9ucyBvcHRpb25z
ID0gMCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFy
YWN0ZXJHcmFudWxhcml0eSwgVGV4dENvbXBvc2l0aW9uVHlwZSBjb21wb3NpdGlvblR5cGUgPSBU
ZXh0Q29tcG9zaXRpb25Ob25lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VHlwaW5nQ29tbWFuZChkb2N1bWVudCwgY29tbWFuZCwgdGV4dCwgb3B0aW9ucywgZ3JhbnVsYXJp
dHksIGNvbXBvc2l0aW9uVHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8VHlwaW5nQ29t
bWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRVR5cGluZ0NvbW1hbmQgY29tbWFuZCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBPcHRpb25zIG9wdGlvbnMsIFRleHRDb21wb3NpdGlvblR5cGUg
Y29tcG9zaXRpb25UeXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHlw
aW5nQ29tbWFuZChkb2N1bWVudCwgY29tbWFuZCwgdGV4dCwgb3B0aW9ucywgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGNvbXBvc2l0aW9uVHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUeXBpbmdDb21tYW5kKGRvY3VtZW50LCBjb21tYW5kLCB0ZXh0LCBvcHRpb25zLCBUZXh0R3Jh
bnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBjb21wb3NpdGlvblR5cGUpKTsKICAgICB9
CiAKICAgICBUeXBpbmdDb21tYW5kKERvY3VtZW50JiwgRVR5cGluZ0NvbW1hbmQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgT3B0aW9ucywgVGV4dEdyYW51bGFyaXR5LCBUZXh0Q29tcG9zaXRpb25UeXBl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAko
cmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDEwICsyNzEsMTAgQEAgdm9pZCBWaXNpYmxl
U2VsZWN0aW9uOjpzZXRTdGFydEFuZEVuZEZybwogICAgIH0KIAogICAgIHN3aXRjaCAoZ3JhbnVs
YXJpdHkpIHsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICAgICAgY2Fz
ZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICAgICAgLy8g
RG9uJ3QgZG8gYW55IGV4cGFuc2lvbi4KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFdvcmRHcmFudWxhcml0eTogeworICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5OiB7CiAgICAgICAgICAgICAvLyBHZW5lcmFsIGNhc2U6IFNlbGVjdCB0aGUgd29y
ZCB0aGUgY2FyZXQgaXMgcG9zaXRpb25lZCBpbnNpZGUgb2YsIG9yIGF0IHRoZSBzdGFydCBvZiAo
UmlnaHRXb3JkSWZPbkJvdW5kYXJ5KS4KICAgICAgICAgICAgIC8vIEVkZ2UgY2FzZTogSWYgdGhl
IGNhcmV0IGlzIGFmdGVyIHRoZSBsYXN0IHdvcmQgaW4gYSBzb2Z0LXdyYXBwZWQgbGluZSBvciB0
aGUgbGFzdCB3b3JkIGluCiAgICAgICAgICAgICAvLyB0aGUgZG9jdW1lbnQsIHNlbGVjdCB0aGF0
IGxhc3Qgd29yZCAoTGVmdFdvcmRJZk9uQm91bmRhcnkpLgpAQCAtMjg5LDcgKzI4OSw3IEBAIHZv
aWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm8KICAgICAgICAgICAgIHNpZGUg
PSBSaWdodFdvcmRJZk9uQm91bmRhcnk7CiAgICAgICAgICAgICBpZiAoaXNFbmRPZkVkaXRhYmxl
T3JOb25FZGl0YWJsZUNvbnRlbnQob3JpZ2luYWxFbmQpIHx8IChpc0VuZE9mTGluZShvcmlnaW5h
bEVuZCkgJiYgIWlzU3RhcnRPZkxpbmUob3JpZ2luYWxFbmQpICYmICFpc0VuZE9mUGFyYWdyYXBo
KG9yaWdpbmFsRW5kKSkpCiAgICAgICAgICAgICAgICAgc2lkZSA9IExlZnRXb3JkSWZPbkJvdW5k
YXJ5OwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gd29y
ZEVuZChlbmRPZldvcmQob3JpZ2luYWxFbmQsIHNpZGUpKTsKICAgICAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiBlbmQod29yZEVuZCk7CiAgICAgICAgICAgICAKQEAgLTMyMSwxMiArMzIxLDEyIEBA
IHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm8KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2VudGVuY2VHcmFu
dWxhcml0eTogeworICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxh
cml0eTogewogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0T2ZTZW50ZW5jZShWaXNpYmxlUG9z
aXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAg
ICBtX2VuZCA9IGVuZE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0aW9uKG1fZW5kLCBtX2FmZmluaXR5
KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OiB7CisgICAgICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpMaW5lR3JhbnVsYXJpdHk6IHsKICAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9mTGluZShW
aXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVpdmFsZW50KCk7CiAg
ICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gZW5kT2ZMaW5lKFZpc2libGVQb3NpdGlv
bihtX2VuZCwgbV9hZmZpbml0eSkpOwogICAgICAgICAgICAgLy8gSWYgdGhlIGVuZCBvZiB0aGlz
IGxpbmUgaXMgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCwgaW5jbHVkZSB0aGUgc3BhY2UgCkBA
IC0zMzksMTEgKzMzOSwxMSBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5kRW5k
RnJvCiAgICAgICAgICAgICBtX2VuZCA9IGVuZC5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBMaW5lQm91bmRhcnk6CisgICAgICAg
IGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgICAgICBtX3N0YXJ0
ID0gc3RhcnRPZkxpbmUoVmlzaWJsZVBvc2l0aW9uKG1fc3RhcnQsIG1fYWZmaW5pdHkpKS5kZWVw
RXF1aXZhbGVudCgpOwogICAgICAgICAgICAgbV9lbmQgPSBlbmRPZkxpbmUoVmlzaWJsZVBvc2l0
aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OiB7CisgICAgICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTogewogICAgICAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvcyhtX3N0YXJ0LCBtX2FmZmluaXR5KTsKICAgICAgICAgICAgIGlmIChp
c1N0YXJ0T2ZMaW5lKHBvcykgJiYgaXNFbmRPZkVkaXRhYmxlT3JOb25FZGl0YWJsZUNvbnRlbnQo
cG9zKSkKICAgICAgICAgICAgICAgICBwb3MgPSBwb3MucHJldmlvdXMoKTsKQEAgLTM1Myw3ICsz
NTMsNyBAQCB2b2lkIFZpc2libGVTZWxlY3Rpb246OnNldFN0YXJ0QW5kRW5kRnJvCiAgICAgICAg
ICAgICAvLyBJbmNsdWRlIHRoZSAicGFyYWdyYXBoIGJyZWFrIiAodGhlIHNwYWNlIGZyb20gdGhl
IGVuZCBvZiB0aGlzIHBhcmFncmFwaCB0byB0aGUgc3RhcnQKICAgICAgICAgICAgIC8vIG9mIHRo
ZSBuZXh0IG9uZSkgaW4gdGhlIHNlbGVjdGlvbi4KICAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBlbmQodmlzaWJsZVBhcmFncmFwaEVuZC5uZXh0KCkpOwotICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBpZiAoTm9kZSogdGFibGUgPSBpc0ZpcnN0UG9zaXRpb25BZnRlclRhYmxlKGVuZCkp
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcGFyYWdyYXBoIGJyZWFrIGFmdGVyIHRoZSBsYXN0
IHBhcmFncmFwaCBpbiB0aGUgbGFzdCBjZWxsIG9mIGEgYmxvY2sgdGFibGUgZW5kcwogICAgICAg
ICAgICAgICAgIC8vIGF0IHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGFmdGVyIHRoZSB0YWJs
ZSwgbm90IGF0IHRoZSBwb3NpdGlvbiBqdXN0IGFmdGVyIHRoZSB0YWJsZS4KQEAgLTM2MywyNiAr
MzYzLDI2IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6c2V0U3RhcnRBbmRFbmRGcm8KICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHZpc2libGVQYXJhZ3Jh
cGhFbmQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChl
bmQuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgZW5kID0gdmlzaWJsZVBhcmFncmFwaEVuZDsK
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgbV9lbmQgPSBlbmQuZGVlcEVxdWl2YWxl
bnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRG9jdW1l
bnRCb3VuZGFyeToKKyAgICAgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRh
cnk6CiAgICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnRPZkRvY3VtZW50KG1fc3RhcnQuZG9jdW1l
bnQoKSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZEb2N1bWVu
dChtX2VuZC5kb2N1bWVudCgpKS5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6CisgICAgICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpQYXJhZ3JhcGhCb3VuZGFyeToKICAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydE9m
UGFyYWdyYXBoKFZpc2libGVQb3NpdGlvbihtX3N0YXJ0LCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2
YWxlbnQoKTsKICAgICAgICAgICAgIG1fZW5kID0gZW5kT2ZQYXJhZ3JhcGgoVmlzaWJsZVBvc2l0
aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6CisgICAgICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICAgICAgbV9zdGFydCA9IHN0YXJ0
T2ZTZW50ZW5jZShWaXNpYmxlUG9zaXRpb24obV9zdGFydCwgbV9hZmZpbml0eSkpLmRlZXBFcXVp
dmFsZW50KCk7CiAgICAgICAgICAgICBtX2VuZCA9IGVuZE9mU2VudGVuY2UoVmlzaWJsZVBvc2l0
aW9uKG1fZW5kLCBtX2FmZmluaXR5KSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6CisgICAgICAgIGNhc2UgVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkocmV2aXNpb24gMjYxNzY4KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlRleHRHcmFudWxhcml0eS5oIgogI2luY2x1ZGUg
IlZpc2libGVQb3NpdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzUsNyArMzYsNyBAQCBjbGFzcyBQb3NpdGlvbjsKIHN0cnVj
dCBTaW1wbGVSYW5nZTsKIAogY29uc3QgRUFmZmluaXR5IFNFTF9ERUZBVUxUX0FGRklOSVRZID0g
RE9XTlNUUkVBTTsKLWVudW0gU2VsZWN0aW9uRGlyZWN0aW9uIDogdWludDhfdCB7IERpcmVjdGlv
bkZvcndhcmQsIERpcmVjdGlvbkJhY2t3YXJkLCBEaXJlY3Rpb25SaWdodCwgRGlyZWN0aW9uTGVm
dCB9OworZW51bSBjbGFzcyBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50OF90IHsgRm9yd2FyZCwg
QmFja3dhcmQsIFJpZ2h0LCBMZWZ0IH07CiAKIGNsYXNzIFZpc2libGVTZWxlY3Rpb24gewogcHVi
bGljOgpAQCAtMTE3LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdpdGhvdXRWYWxp
ZGF0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIHZhbGlkYXRlKFRleHRHcmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsK
KyAgICB2b2lkIHZhbGlkYXRlKFRleHRHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hh
cmFjdGVyR3JhbnVsYXJpdHkpOwogCiAgICAgLy8gU3VwcG9ydCBtZXRob2RzIGZvciB2YWxpZGF0
ZSgpCiAgICAgdm9pZCBzZXRCYXNlQW5kRXh0ZW50VG9EZWVwRXF1aXZhbGVudHMoKTsKQEAgLTE2
NCwzICsxNjUsMTcgQEAgV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcgog
dm9pZCBzaG93VHJlZShjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJik7CiB2b2lkIHNo
b3dUcmVlKGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24qKTsKICNlbmRpZgorCituYW1l
c3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sCisgICAgICAgIFdlYkNvcmU6OlNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCwKKyAgICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZCwKKyAgICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodCwK
KyAgICAgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpMZWZ0CisgICAgPjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
VW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTU4LDIwICsxNTU4LDIwIEBAIFZpc2li
bGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnMKIAogc3RhdGljIGJvb2wgZGlyZWN0
aW9uSXNEb3duc3RyZWFtKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYg
KGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25CYWNrd2FyZCkKKyAgICBpZiAoZGlyZWN0aW9uID09IFNl
bGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBl
bHNlIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCkKKyAgICBpZiAoZGlyZWN0aW9u
ID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAvLyBGSVhNRTogdGhpcyBjb2RlIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG9y
aWdpbmFsIGRpcmVjdGlvbiBvZiB0aGUgZWxlbWVudC4KICAgICAvLyBJJ20gbm90IGZpeGluZyB0
aGlzIG5vdyBiZWNhdXNlIEknbSBhZnJhaWQgdGhlcmUgaXMgc29tZSBjb2RlIGluIFVJS2l0IHJl
bHlpbmcgb24KICAgICAvLyB0aGlzIHdyb25nIGJlaGF2aW9yLgotICAgIHJldHVybiBkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uUmlnaHQ7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25E
aXJlY3Rpb246OlJpZ2h0OwogfQogCiBib29sIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpCisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6
Q2hhcmFjdGVyR3JhbnVsYXJpdHkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGJvdW5kYXJ5OwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgYm9vbCBhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYgogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVj
dGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwogCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewotICAgIGNhc2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHk6CiAgICAgICAgIC8vIHZpc2libGVfdW5pdHMgY2xhaW1zIGVycm9uZW91
c2x5IHRoYXQgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kCiAgICAgICAgIC8vIG9mIGEgcGFyYWdyYXBo
IGFyZSB0aGUgZW5kIGFuZCBzdGFydCBvZiBhIHdvcmQsIHJlc3BlY3RpdmVseS4KICAgICAgICAg
aWYgKCh1c2VEb3duc3RyZWFtICYmIGlzU3RhcnRPZlBhcmFncmFwaCh2cCkpIHx8ICghdXNlRG93
bnN0cmVhbSAmJiBpc0VuZE9mUGFyYWdyYXBoKHZwKSkpCkBAIC0xNTg5LDIyICsxNTg5LDIyIEBA
IGJvb2wgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWIKICAgICAgICAgYm91bmRh
cnkgPSB1c2VEb3duc3RyZWFtID8gZW5kT2ZXb3JkKHZwLCBMZWZ0V29yZElmT25Cb3VuZGFyeSkg
OiBzdGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgYnJlYWs7
CiAKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVh
bSA/IGVuZE9mU2VudGVuY2UocHJldmlvdXNTZW50ZW5jZVBvc2l0aW9uKHZwKSkgOiBzdGFydE9m
U2VudGVuY2UobmV4dFNlbnRlbmNlUG9zaXRpb24odnApKTsKICAgICAgICAgYnJlYWs7CiAKLSAg
ICBjYXNlIExpbmVHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICAvLyBBZmZpbml0eSBoYXMgdG8gYmUgc2V0IHRvIGdldCByaWdo
dCBib3VuZGFyeSBvZiB0aGUgbGluZS4KICAgICAgICAgYm91bmRhcnkgPSB2cDsKICAgICAgICAg
Ym91bmRhcnkuc2V0QWZmaW5pdHkodXNlRG93bnN0cmVhbSA/IFZQX1VQU1RSRUFNX0lGX1BPU1NJ
QkxFIDogRE9XTlNUUkVBTSk7CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0cmVhbSA/IGVu
ZE9mTGluZShib3VuZGFyeSkgOiBzdGFydE9mTGluZShib3VuZGFyeSk7CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxh
cml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIGJvdW5kYXJ5ID0gdXNlRG93bnN0
cmVhbSA/IGVuZE9mUGFyYWdyYXBoKHZwKSA6IHN0YXJ0T2ZQYXJhZ3JhcGgodnApOwogICAgICAg
ICBicmVhazsKIAotICAgIGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRH
cmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0eToKICAgICAgICAgYm91bmRhcnkgPSB1c2VE
b3duc3RyZWFtID8gZW5kT2ZEb2N1bWVudCh2cCkgOiBzdGFydE9mRG9jdW1lbnQodnApOwogICAg
ICAgICBicmVhazsKIApAQCAtMTYxOCw3ICsxNjE4LDcgQEAgYm9vbCBhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShjb25zdCBWaXNpYgogCiBib29sIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFNl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IENo
YXJhY3RlckdyYW51bGFyaXR5IHx8IGdyYW51bGFyaXR5ID09IERvY3VtZW50R3JhbnVsYXJpdHkp
CisgICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVs
YXJpdHkgfHwgZ3JhbnVsYXJpdHkgPT0gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFy
aXR5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRp
cmVjdGlvbklzRG93bnN0cmVhbShkaXJlY3Rpb24pOwpAQCAtMTYyNyw3ICsxNjI3LDcgQEAgYm9v
bCB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVgogICAgIFZpc2libGVQb3NpdGlv
biBuZXh0Qm91bmRhcnk7CiAgICAgCiAgICAgc3dpdGNoIChncmFudWxhcml0eSkgewotICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVs
YXJpdHk6CiAgICAgICAgIC8vIE5vdGUgdGhhdCAiTGVmdCIgYW5kICJSaWdodCIgaW4gdGhpcyBj
b250ZXh0IGFwcGFyZW50bHkgbWVhbiAidXBzdHJlYW0vcHJldmlvdXMiIGFuZCAiZG93bnN0cmVh
bS9uZXh0Ii4KICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZldvcmQodnAsICh1c2VEb3du
c3RyZWFtID8gUmlnaHRXb3JkSWZPbkJvdW5kYXJ5IDogTGVmdFdvcmRJZk9uQm91bmRhcnkpKTsK
ICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZXb3JkKHZwLCAodXNlRG93bnN0cmVhbSA/IFJp
Z2h0V29yZElmT25Cb3VuZGFyeSA6IExlZnRXb3JkSWZPbkJvdW5kYXJ5KSk7CkBAIC0xNjM4LDEy
ICsxNjM4LDEyIEBAIGJvb2wgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNvbnN0IFYKIAog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKKyAgICBjYXNl
IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgcHJldkJvdW5k
YXJ5ID0gc3RhcnRPZlNlbnRlbmNlKHZwKTsKICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZT
ZW50ZW5jZSh2cCk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBMaW5lR3JhbnVsYXJpdHk6
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eToKICAgICAgICAgcHJl
dkJvdW5kYXJ5ID0gc3RhcnRPZkxpbmUodnApOwogICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRP
ZkxpbmUodnApOwogCkBAIC0xNjU1LDcgKzE2NTUsNyBAQCBib29sIHdpdGhpblRleHRVbml0T2ZH
cmFudWxhcml0eShjb25zdCBWCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNl
IFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3Jh
cGhHcmFudWxhcml0eToKICAgICAgICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZlBhcmFncmFwaCh2
cCk7CiAgICAgICAgIG5leHRCb3VuZGFyeSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAg
YnJlYWs7CkBAIC0xNjg1LDcgKzE2ODUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRD
aGFyYWN0ZXJCb3VuCiBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkRp
cmVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aW9uKQogewogICAgIGJvb2wgdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklzRG93bnN0cmVh
bShkaXJlY3Rpb24pOwotICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3aXRoaW5U
ZXh0VW5pdE9mR3JhbnVsYXJpdHkodnAsIFdvcmRHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKKyAg
ICBib29sIHdpdGhpblVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4dFVuaXRPZkdyYW51bGFy
aXR5KHZwLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgZGlyZWN0aW9uKTsKICAg
ICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OwogICAgIAogICAgIGlmICh1c2VEb3duc3RyZWFtKSB7
CkBAIC0xNzU5LDcgKzE3NTksNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91
bmRhcnlJCiBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRTZW50ZW5jZUJvdW5kYXJ5SW5EaXJl
Y3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKICAgICBib29sIHVzZURvd25zdHJlYW0gPSBkaXJlY3Rpb25Jc0Rvd25zdHJlYW0o
ZGlyZWN0aW9uKTsKLSAgICBib29sIHdpdGhpblVuaXRPZkdyYW51bGFyaXR5ID0gd2l0aGluVGV4
dFVuaXRPZkdyYW51bGFyaXR5KHZwLCBTZW50ZW5jZUdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwor
ICAgIGJvb2wgd2l0aGluVW5pdE9mR3JhbnVsYXJpdHkgPSB3aXRoaW5UZXh0VW5pdE9mR3JhbnVs
YXJpdHkodnAsIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9u
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OwogCiAgICAgaWYgKHdpdGhpblVuaXRPZkdy
YW51bGFyaXR5KQpAQCAtMTgwMSw5ICsxODAxLDkgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBu
ZXh0UGFyYWdyYXBoQm91bgogewogICAgIGF1dG8gdXNlRG93bnN0cmVhbSA9IGRpcmVjdGlvbklz
RG93bnN0cmVhbShkaXJlY3Rpb24pOwogICAgIGF1dG8gbGluZURpcmVjdGlvbiA9IHBvc2l0aW9u
LmxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGlyZWN0aW9uTmF2aWdhdGlvbigpOwotICAgIGlm
IChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHks
IGRpcmVjdGlvbikpCisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBkaXJlY3Rpb24pKQogICAgICAg
ICByZXR1cm4gdXNlRG93bnN0cmVhbSA/IHN0YXJ0T2ZQYXJhZ3JhcGgobmV4dFBhcmFncmFwaFBv
c2l0aW9uKHBvc2l0aW9uLCBsaW5lRGlyZWN0aW9uKSkgOiBlbmRPZlBhcmFncmFwaChwcmV2aW91
c1BhcmFncmFwaFBvc2l0aW9uKHBvc2l0aW9uLCBsaW5lRGlyZWN0aW9uKSk7Ci0gICAgQVNTRVJU
KHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJp
dHksIGRpcmVjdGlvbikpOworICAgIEFTU0VSVCh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIGRpcmVjdGlv
bikpOwogICAgIHJldHVybiB1c2VEb3duc3RyZWFtID8gZW5kT2ZQYXJhZ3JhcGgocG9zaXRpb24p
IDogc3RhcnRPZlBhcmFncmFwaChwb3NpdGlvbik7CiB9CiAKQEAgLTE4MTUsMTcgKzE4MTUsMTcg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0RG9jdW1lbnRCb3VuZAogVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdnAsIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbikKIHsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFy
YWN0ZXJHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHk6CiAgICAgICAgIHJldHVybiBuZXh0Q2hhcmFjdGVyQm91bmRhcnlJbkRpcmVjdGlv
bih2cCwgZGlyZWN0aW9uLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSk7Ci0gICAgY2FzZSBXb3Jk
R3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eToK
ICAgICAgICAgcmV0dXJuIG5leHRXb3JkQm91bmRhcnlJbkRpcmVjdGlvbih2cCwgZGlyZWN0aW9u
KTsKLSAgICBjYXNlIFNlbnRlbmNlR3JhbnVsYXJpdHk6CisgICAgY2FzZSBUZXh0R3JhbnVsYXJp
dHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk6CiAgICAgICAgIHJldHVybiBuZXh0U2VudGVuY2VCb3Vu
ZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5
OgorICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIHJl
dHVybiBuZXh0TGluZUJvdW5kYXJ5SW5EaXJlY3Rpb24odnAsIGRpcmVjdGlvbik7Ci0gICAgY2Fz
ZSBQYXJhZ3JhcGhHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHk6CiAgICAgICAgIHJldHVybiBuZXh0UGFyYWdyYXBoQm91bmRhcnlJbkRp
cmVjdGlvbih2cCwgZGlyZWN0aW9uKTsKLSAgICBjYXNlIERvY3VtZW50R3JhbnVsYXJpdHk6Cisg
ICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgIHJl
dHVybiBuZXh0RG9jdW1lbnRCb3VuZGFyeUluRGlyZWN0aW9uKHZwLCBkaXJlY3Rpb24pOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTg0NCwxMiArMTg0
NCwxMiBAQCBSZWZQdHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhCiAgICAgYm9v
bCB1c2VEb3duc3RyZWFtID0gZGlyZWN0aW9uSXNEb3duc3RyZWFtKGRpcmVjdGlvbik7CiAKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJp
dHk6CisgICAgICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eToK
ICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHZwOwogICAgICAgICAgICAgbmV4dEJvdW5kYXJ5
ID0gcHJldkJvdW5kYXJ5Lm5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNh
c2UgV29yZEdyYW51bGFyaXR5OgorICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29yZEdy
YW51bGFyaXR5OgogICAgICAgICAgICAgLy8gTkI6ICJMZWZ0IiBhbmQgIlJpZ2h0IiBpbiB0aGlz
IGNvbnRleHQgYXBwYXJlbnRseSBtZWFuICJ1cHN0cmVhbS9wcmV2aW91cyIgYW5kICJkb3duc3Ry
ZWFtL25leHQiLgogICAgICAgICAgICAgaWYgKHVzZURvd25zdHJlYW0pIHsKICAgICAgICAgICAg
ICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9mV29yZCh2cCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5
KTsKQEAgLTE4NjAsMTIgKzE4NjAsMTIgQEAgUmVmUHRyPFJhbmdlPiBlbmNsb3NpbmdUZXh0VW5p
dE9mR3JhbnVsYQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6
U2VudGVuY2VHcmFudWxhcml0eToKICAgICAgICAgICAgIHByZXZCb3VuZGFyeSA9IHN0YXJ0T2ZT
ZW50ZW5jZSh2cCk7CiAgICAgICAgICAgICBuZXh0Qm91bmRhcnkgPSBlbmRPZlNlbnRlbmNlKHZw
KTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgTGluZUdyYW51bGFyaXR5Ogor
ICAgICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OgogICAgICAgICAg
ICAgcHJldkJvdW5kYXJ5ID0gc3RhcnRPZkxpbmUodnApOwogICAgICAgICAgICAgbmV4dEJvdW5k
YXJ5ID0gZW5kT2ZMaW5lKHZwKTsKIApAQCAtMTg3NywxMiArMTg3NywxMiBAQCBSZWZQdHI8UmFu
Z2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgorICAgICAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHk6CiAgICAgICAgICAgICBw
cmV2Qm91bmRhcnkgPSBzdGFydE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgICAgIG5leHRCb3Vu
ZGFyeSA9IGVuZE9mUGFyYWdyYXBoKHZwKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNhc2UgRG9jdW1lbnRHcmFudWxhcml0eToKKyAgICAgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6
OkRvY3VtZW50R3JhbnVsYXJpdHk6CiAgICAgICAgICAgICBwcmV2Qm91bmRhcnkgPSBzdGFydE9m
RG9jdW1lbnQodnApOwogICAgICAgICAgICAgbmV4dEJvdW5kYXJ5ID0gZW5kT2ZEb2N1bWVudCh2
cCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5MjEsMTQgKzE5MjEsMTQgQEAgdm9pZCBjaGFy
YWN0ZXJzQXJvdW5kUG9zaXRpb24oY29uc3QgVmlzaQogICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uID0g
cG9zaXRpb247CiAKLSAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBvc2l0aW9uID0gbmV4dENoYXJh
Y3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkZvcndhcmQsIENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBvc2l0aW9u
ID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24sIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgIGlmIChu
ZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCiAgICAgICAgIGVuZFBvc2l0aW9uID0gbmV4dFBvc2l0
aW9uOwogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzUG9zaXRpb24gPSBuZXh0Q2hhcmFj
dGVyQm91bmRhcnlJbkRpcmVjdGlvbihwb3NpdGlvbiwgRGlyZWN0aW9uQmFja3dhcmQsIENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNQb3Np
dGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0aW9uKHBvc2l0aW9uLCBTZWxlY3Rp
b25EaXJlY3Rpb246OkJhY2t3YXJkLCBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
aWYgKHByZXZpb3VzUG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKICAgICAgICAgc3RhcnRQb3NpdGlv
biA9IHByZXZpb3VzUG9zaXRpb247Ci0gICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBuZXh0Q2hh
cmFjdGVyQm91bmRhcnlJbkRpcmVjdGlvbihwcmV2aW91c1Bvc2l0aW9uLCBEaXJlY3Rpb25CYWNr
d2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgICAgICBwcmV2aW91c1Bvc2l0
aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCwgQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
OwogICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAg
IHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwogICAgIH0KQEAgLTE5NTIsMTEgKzE5
NTIsMTEgQEAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29ucwogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3Jh
bnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7
CiAKICAgICBpZiAoIXJhbmdlKSB7CiAgICAgICAgIC8vIFdlIGNvdWxkIGJlIGF0IHRoZSBzdGFy
dCBvZiBhIHdvcmQsIHRyeSBmb3J3YXJkLgotICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1RleHRV
bml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3
YXJkKTsKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rp
b246OkZvcndhcmQpOwogICAgIH0KIAogICAgIGlmIChyYW5nZSkKQEAgLTE5NjQsMTEgKzE5NjQs
MTEgQEAgUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29ucwogCiAgICAgVmlz
aWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIGRvIHsKLSAgICAg
ICAgY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
Y3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAg
ICB9IHdoaWxlIChjdXJyZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgIWF0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNr
d2FyZCkpOworICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkKTsKKyAgICB9IHdoaWxlIChjdXJy
ZW50UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJl
bnRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQpKTsKIAogICAgIGlmIChjdXJyZW50UG9zaXRpb24uaXNOdWxsKCkp
Ci0gICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAg
ICAgICBjdXJyZW50UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0
eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCk7CiAKICAgICBpZiAoY3VycmVudFBvc2l0aW9uLmlzTm90TnVsbCgp
KSB7CiAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShwb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLmRlcHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgcG9zaXRp
b24pOwpAQCAtMTk4MywyMyArMTk4MywyMyBAQCBWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRC
b3VuZGFyeUZvclBvCiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKIAogICAgIC8vIG1vdmUg
dGhlIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIHdvcmQKLSAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkp
IHsKKyAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxh
cml0eTo6TGluZUdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAg
ICAgICAgIC8vIERvbid0IGNyb3NzIGxpbmUgYm91bmRhcmllcy4KICAgICAgICAgcmVzdWx0ID0g
cG9zaXRpb247Ci0gICAgfSBlbHNlIGlmICh3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9z
aXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICB9IGVsc2Ug
aWYgKHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5
OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpIHsKICAgICAg
ICAgLy8gVGhlIHBvc2l0aW9uIGxpZXMgd2l0aGluIGEgd29yZC4KLSAgICAgICAgUmVmUHRyPFJh
bmdlPiB3b3JkUmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24s
IFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIFJlZlB0cjxSYW5n
ZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3
YXJkKTsKIAogICAgICAgICByZXN1bHQgPSB3b3JkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKICAg
ICAgICAgaWYgKGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhwb3NpdGlvbiwgcmVzdWx0KSA+IDEp
CiAgICAgICAgICAgICByZXN1bHQgPSB3b3JkUmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0gICAgfSBl
bHNlIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5
LCBEaXJlY3Rpb25CYWNrd2FyZCkpIHsKKyAgICB9IGVsc2UgaWYgKGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0
aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpIHsKICAgICAgICAgLy8gVGhlIHBvc2l0aW9uIGlzIGF0
IHRoZSBlbmQgb2YgYSB3b3JkLgogICAgICAgICByZXN1bHQgPSBwb3NpdGlvbjsKICAgICB9IGVs
c2UgewogICAgICAgICAvLyBUaGUgcG9zaXRpb24gaXMgbm90IHdpdGhpbiBhIHdvcmQuCiAgICAg
ICAgIC8vIEdvIHRvIHRoZSBuZXh0IGJvdW5kYXJ5LgotICAgICAgICByZXN1bHQgPSBwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBE
aXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcmVzdWx0ID0gcG9zaXRpb25PZk5leHRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5
LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogCiAgICAgICAgIC8vIElmIHRoZXJlIGlz
IG5vIHN1Y2ggYm91bmRhcnkgd2UgZ28gdG8gdGhlIGVuZCBvZiB0aGUgZWxlbWVudC4KICAgICAg
ICAgaWYgKHJlc3VsdC5pc051bGwoKSkKQEAgLTIwMTMsMTUgKzIwMTMsMTUgQEAgUmVmUHRyPFJh
bmdlPiByYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSQogICAgIFBvc2l0aW9uIHN0YXJ0ID0gcG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKICAgICBQb3NpdGlvbiBlbmQgPSBwb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFyYWN0ZXJz
VG9FeHBhbmQ7ICsraSkgewotICAgICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkJhY2t3
YXJkKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dh
cmQpCiAgICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnByZXZpb3VzKENoYXJhY3Rlcik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGVuZCA9IGVuZC5uZXh0KENoYXJhY3Rlcik7CiAgICAgfQog
ICAgIAotICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uQmFja3dhcmQgJiYgIWF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KHN0YXJ0LCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJk
KSkKKyAgICBpZiAoZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgJiYg
IWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHN0YXJ0LCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFu
dWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpCiAgICAgICAgIHN0YXJ0ID0g
c3RhcnRPZldvcmQoc3RhcnQpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBEaXJlY3Rpb25Gb3J3YXJkICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmQsIFdvcmRH
cmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBTZWxl
Y3Rpb25EaXJlY3Rpb246OkZvcndhcmQgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZCwg
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpCiAgICAgICAgIGVuZCA9IGVuZE9mV29yZChlbmQpLmRlZXBFcXVpdmFsZW50KCk7CiAK
ICAgICByZXR1cm4gbWFrZVJhbmdlKHN0YXJ0LCBlbmQpOwpAQCAtMjA0MSwxMiArMjA0MSwxMiBA
QCBSZWZQdHI8UmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91bmRQb3NpdGlvCiAKIHN0ZDo6cGFpcjxW
aXNpYmxlUG9zaXRpb24sIFdpdGhpbldvcmRCb3VuZGFyeT4gd29yZEJvdW5kYXJ5Rm9yUG9zaXRp
b25XaXRob3V0Q3Jvc3NpbmdMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7
Ci0gICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJp
dHksIERpcmVjdGlvbkZvcndhcmQpKQorICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZCkpCiAgICAgICAgIHJldHVybiB7IHBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91
bmRhcnk6Ok5vIH07CiAKLSAgICBpZiAod2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CisgICAgaWYgKHdpdGhp
blRleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3Jh
bnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkpIHsKICAgICAgICAgYXV0byBh
ZGp1c3RlZFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgIGlmIChhdXRvIHdvcmRSYW5nZSA9
IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5
LCBEaXJlY3Rpb25Gb3J3YXJkKSkgeworICAgICAgICBpZiAoYXV0byB3b3JkUmFuZ2UgPSBlbmNs
b3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpKSB7CiAgICAgICAgICAg
ICBhZGp1c3RlZFBvc2l0aW9uID0gd29yZFJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CiAgICAgICAg
ICAgICBpZiAoZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKHBvc2l0aW9uLCBhZGp1c3RlZFBvc2l0
aW9uKSA+IDEpCiAgICAgICAgICAgICAgICAgYWRqdXN0ZWRQb3NpdGlvbiA9IHdvcmRSYW5nZS0+
ZW5kUG9zaXRpb24oKTsKQEAgLTIwNTQsMTAgKzIwNTQsMTAgQEAgc3RkOjpwYWlyPFZpc2libGVQ
b3NpdGlvbiwgV2l0aGluV29yZEJvdQogICAgICAgICByZXR1cm4geyBhZGp1c3RlZFBvc2l0aW9u
LCBXaXRoaW5Xb3JkQm91bmRhcnk6OlllcyB9OwogICAgIH0KIAotICAgIGlmIChhdEJvdW5kYXJ5
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2Fy
ZCkpCisgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpCiAg
ICAgICAgIHJldHVybiB7IHBvc2l0aW9uLCBXaXRoaW5Xb3JkQm91bmRhcnk6Ok5vIH07CiAKLSAg
ICBhdXRvIG5leHRXb3JkQm91bmRhcnkgPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBh
dXRvIG5leHRXb3JkQm91bmRhcnkgPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0
eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRp
cmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgcmV0dXJuIHsgbmV4dFdvcmRCb3VuZGFyeS5pc05vdE51
bGwoKSA/IG5leHRXb3JkQm91bmRhcnkgOiBlbmRPZkVkaXRhYmxlQ29udGVudChwb3NpdGlvbiks
IFdpdGhpbldvcmRCb3VuZGFyeTo6Tm8gfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQkocmV2aXNpb24gMjYxNzY4KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0aW9uYWw8RGV0ZWN0ZWRJdGVtPiBEYXRhRGV0ZWN0aW9u
OjpkZQogICAgICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgICAgIGNvbnRleHRSYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgTGluZUdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAg
ICAgY29udGV4dFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpG
b3J3YXJkKTsKICAgICB9CiAKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0JKHJldmlzaW9u
IDI2MTc2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1
cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM4LDcgKzMzOCw3IEBAIHN0ZDo6dHVwbGU8UmVmUHRy
PFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICoKICAgICAgICAgaGl0SW5kZXggPSBjaGFyYWN0ZXJDb3Vu
dCh7ICptYWtlQm91bmRhcnlQb2ludChwYXJhZ3JhcGhTdGFydCksICptYWtlQm91bmRhcnlQb2lu
dChwb3NpdGlvbikgfSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzIHsgcG9zaXRpb24gfTsKLSAgICAgICAgc2Vs
ZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRH
cmFudWxhcml0eSk7CisgICAgICAgIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhw
YW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAg
ICAgICAgIHBvc2l0aW9uID0gc2VsZWN0aW9uQWNjb3VudGluZ0ZvckxpbmVSdWxlcy5zdGFydCgp
OwogCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgMjUwIGNoYXJh
Y3RlcnMgb2YgdGV4dCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBwb2ludC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQko
cmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFy
eUxvb2t1cExlZ2FjeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0ZDo6
dHVwbGU8UmVmUHRyPFJhbmdlPiwgTlNEaWN0aW9uYXJ5ICoKICAgICAgICAgcmV0dXJuIHJhbmdl
Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbik7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlv
bkFjY291bnRpbmdGb3JMaW5lUnVsZXMgeyBwb3NpdGlvbiB9OwotICAgIHNlbGVjdGlvbkFjY291
bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkp
OworICAgIHNlbGVjdGlvbkFjY291bnRpbmdGb3JMaW5lUnVsZXMuZXhwYW5kVXNpbmdHcmFudWxh
cml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgcG9zaXRpb24gPSBz
ZWxlY3Rpb25BY2NvdW50aW5nRm9yTGluZVJ1bGVzLnN0YXJ0KCk7CiAKICAgICAvLyBBcyBjb250
ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFu
ZCBhZnRlciB0aGUgcG9pbnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkocmV2aXNpb24gMjYxNzY4
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MiwxNCArNjUyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0
cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXMKICAgICAgICAgYm9vbCBmb3JjaW5nUGVuZGluZ1Bv
bGljeSA9IGZyYW1lLT5zZXR0aW5ncygpLmlzRm9yY2VQZW5kaW5nV2ViR0xQb2xpY3koKTsKIAog
ICAgICAgICBpZiAoZm9yY2luZ1BlbmRpbmdQb2xpY3kgfHwgKHBhZ2UgJiYgIXRvcERvY3VtZW50
LnVybCgpLmlzTG9jYWxGaWxlKCkpKSB7Ci0gICAgICAgICAgICBXZWJHTExvYWRQb2xpY3kgcG9s
aWN5ID0gZm9yY2luZ1BlbmRpbmdQb2xpY3kgPyBXZWJHTFBlbmRpbmdDcmVhdGlvbiA6IHBhZ2Ut
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLndlYkdMUG9saWN5Rm9yVVJMKHRvcERvY3Vt
ZW50LnVybCgpKTsKKyAgICAgICAgICAgIFdlYkdMTG9hZFBvbGljeSBwb2xpY3kgPSBmb3JjaW5n
UGVuZGluZ1BvbGljeSA/IFdlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb24gOiBw
YWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS53ZWJHTFBvbGljeUZvclVSTCh0b3BE
b2N1bWVudC51cmwoKSk7CiAKLSAgICAgICAgICAgIGlmIChwb2xpY3kgPT0gV2ViR0xCbG9ja0Ny
ZWF0aW9uKSB7CisgICAgICAgICAgICBpZiAocG9saWN5ID09IFdlYkdMTG9hZFBvbGljeTo6V2Vi
R0xCbG9ja0NyZWF0aW9uKSB7CiAgICAgICAgICAgICAgICAgTE9HKFdlYkdMLCAiVGhlIHBvbGlj
eSBmb3IgdGhpcyBVUkwgKCVzKSBpcyB0byBibG9jayBXZWJHTC4iLCB0b3BEb2N1bWVudC51cmwo
KS5ob3N0KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChwb2xpY3kgPT0gV2ViR0xQZW5kaW5n
Q3JlYXRpb24pIHsKKyAgICAgICAgICAgIGlmIChwb2xpY3kgPT0gV2ViR0xMb2FkUG9saWN5OjpX
ZWJHTFBlbmRpbmdDcmVhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhXZWJHTCwgIldlYkdM
IHBvbGljeSBpcyBwZW5kaW5nLiBNYXkgbmVlZCB0byBiZSByZXNvbHZlZCBsYXRlci4iKTsKICAg
ICAgICAgICAgICAgICBpc1BlbmRpbmdQb2xpY3lSZXNvbHV0aW9uID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDggKzMzOSw4IEBAIHB1YmxpYzoKICAgICAvLyBJ
bmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wgY2FudmFzIGluc2lkZSB0aGlzIGZyYW1l
IHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8gbm90aWZpY2F0aW9uIHdpdGggdGhlIGdp
dmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9jZW5jZSBjb2RlIChzZWUgRXh0ZW5zaW9u
c0dMLmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlV2ViR0xDb250ZXh0KGludCkgeyB9Ci0g
ICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikg
Y29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJHTExv
YWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0
dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdl
YkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9hZFBvbGlj
eTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMTG9h
ZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb21wbGV0ZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDcgKzE3NCw3IEBAIGVudW0gU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVIKICAg
ICBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTAogfTsKIAotZW51bSBXZWJHTExv
YWRQb2xpY3kgeworZW51bSBjbGFzcyBXZWJHTExvYWRQb2xpY3kgOiB1aW50OF90IHsKICAgICBX
ZWJHTEJsb2NrQ3JlYXRpb24sCiAgICAgV2ViR0xBbGxvd0NyZWF0aW9uLAogICAgIFdlYkdMUGVu
ZGluZ0NyZWF0aW9uCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCBPcHRpb25hbDxTeXN0ZW1QcmV2aWV3
SW5mbz4gU3lzdGVtUHJldmllCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCplbGVtZW50KSwgV1RG
TW92ZSgqcHJldmlld1JlY3QpLCBXVEZNb3ZlKCppc1ByZXZpZXcpIH0gfTsKIH0KIAotZW51bSBj
bGFzcyBMb2FkQ29tcGxldGlvblR5cGUgOiB1aW50OF90IHsKK2VudW0gY2xhc3MgTG9hZENvbXBs
ZXRpb25UeXBlIDogYm9vbCB7CiAgICAgRmluaXNoLAogICAgIENhbmNlbAogfTsKIAotZW51bSBj
bGFzcyBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCA6IHVpbnQ4X3QgeworZW51bSBjbGFzcyBBbGxv
d3NDb250ZW50SmF2YVNjcmlwdCA6IGJvb2wgewogICAgIFllcywKICAgICBObywKIH07CkBAIC0y
NzEsMTEgKzI3MSwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNo
CiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWxs
b3dzQ29udGVudEphdmFTY3JpcHQ+IHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQsCi0gICAgICAgIFdlYkNv
cmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OjpZZXMsCi0gICAgICAgIFdlYkNvcmU6OkFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0OjpObworICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3ks
CisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xCbG9ja0NyZWF0aW9uLAor
ICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTFBlbmRpbmdDcmVhdGlvbgogICAg
ID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCB2
b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLmJlaGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dlc3Rpb25z
V2l0aG91dFNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvbi5p
c0NhcmV0T3JSYW5nZSgpKTsKICAgICAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHdvcmRT
ZWxlY3Rpb24oc2VsZWN0aW9uLmJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgd29yZFNlbGVjdGlv
bi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CisgICAgICAgICAgICAg
ICAgd29yZFNlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFRleHRHcmFudWxhcml0eTo6
V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKHdvcmRTZWxlY3Rpb24pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoZnJhbWUtPmVkaXRvcigpLnNlbGVjdGVkVGV4dCgpLmxlbmd0aCgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDI2MTc2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ2LDM1ICsyNDYsMzUgQEAgdm9pZCBET01TZWxlY3Rpb246Om1vZGlmeShjb25zdCBTdHJp
bmcmIAogCiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiZm9yd2FyZCIpKQotICAg
ICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25Gb3J3YXJkOworICAgICAgICBkaXJlY3Rpb24gPSBT
ZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAiYmFja3dhcmQiKSkKLSAgICAgICAgZGly
ZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlv
bkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZGlyZWN0aW9uU3RyaW5nLCAibGVmdCIpKQotICAgICAgICBkaXJlY3Rpb24gPSBE
aXJlY3Rpb25MZWZ0OworICAgICAgICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246Okxl
ZnQ7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9u
U3RyaW5nLCAicmlnaHQiKSkKLSAgICAgICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uUmlnaHQ7Cisg
ICAgICAgIGRpcmVjdGlvbiA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQ7CiAgICAgZWxzZQog
ICAgICAgICByZXR1cm47CiAKICAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHk7CiAgICAg
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdyYW51bGFyaXR5U3RyaW5nLCAiY2hh
cmFjdGVyIikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7Cisg
ICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0
eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFudWxhcml0
eVN0cmluZywgIndvcmQiKSkKLSAgICAgICAgZ3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7
CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk7
CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlT
dHJpbmcsICJzZW50ZW5jZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFNlbnRlbmNlR3JhbnVs
YXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGdy
YW51bGFyaXR5U3RyaW5nLCAibGluZSIpKQotICAgICAgICBncmFudWxhcml0eSA9IExpbmVHcmFu
dWxhcml0eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFu
dWxhcml0eTsKICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShncmFu
dWxhcml0eVN0cmluZywgInBhcmFncmFwaCIpKQotICAgICAgICBncmFudWxhcml0eSA9IFBhcmFn
cmFwaEdyYW51bGFyaXR5OworICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6
UGFyYWdyYXBoR3JhbnVsYXJpdHk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJsaW5lYm91bmRhcnkiKSkKLSAgICAgICAgZ3Jh
bnVsYXJpdHkgPSBMaW5lQm91bmRhcnk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpMaW5lQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJzZW50ZW5jZWJvdW5kYXJ5IikpCi0gICAgICAg
IGdyYW51bGFyaXR5ID0gU2VudGVuY2VCb3VuZGFyeTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBU
ZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlQm91bmRhcnk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJwYXJhZ3JhcGhib3VuZGFy
eSIpKQotICAgICAgICBncmFudWxhcml0eSA9IFBhcmFncmFwaEJvdW5kYXJ5OworICAgICAgICBn
cmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk7CiAgICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZ3JhbnVsYXJpdHlTdHJpbmcsICJk
b2N1bWVudGJvdW5kYXJ5IikpCi0gICAgICAgIGdyYW51bGFyaXR5ID0gRG9jdW1lbnRCb3VuZGFy
eTsKKyAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50Qm91bmRh
cnk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3IEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoY28KICAgICAgICAgICAgIC8v
IE5TVGV4dFZpZXcgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3Zpbmcg
YSBzZWxlY3Rpb24sCiAgICAgICAgICAgICAvLyBidXQgb25seSB0byBzbWFydCBpbnNlcnQgaWYg
dGhlIHNlbGVjdGlvbiBncmFudWxhcml0eSBpcyB3b3JkIGdyYW51bGFyaXR5LgogICAgICAgICAg
ICAgYm9vbCBzbWFydERlbGV0ZSA9IGVkaXRvci5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsK
LSAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAmJiBpbm5lckZyYW1l
LT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSAmJiBkcmFnRGF0
YS5jYW5TbWFydFJlcGxhY2UoKTsKKyAgICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFy
dERlbGV0ZSAmJiBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFRleHRH
cmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5ICYmIGRyYWdEYXRhLmNhblNtYXJ0UmVwbGFjZSgp
OwogICAgICAgICAgICAgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudC5yZWxl
YXNlTm9uTnVsbCgpLCBkcmFnQ2FyZXQuYmFzZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUp
LT5hcHBseSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHNldFNlbGVjdGlv
blRvRHJhZ0NhcmV0KGlubmVyRnJhbWUuZ2V0KCksIGRyYWdDYXJldCwgcG9pbnQpKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNjE3NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
Miw3ICs1NDIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91CiAg
ICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgIG1fc2VsZWN0aW9uSW5pdGlhdGlv
blN0YXRlID0gRXh0ZW5kZWRTZWxlY3Rpb247CiAgICAgZWxzZSB7Ci0gICAgICAgIGdyYW51bGFy
aXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdy
YW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgbV9zZWxlY3Rpb25Jbml0
aWF0aW9uU3RhdGUgPSBQbGFjZWRDYXJldDsKICAgICB9CiAKQEAgLTU2MCwxMyArNTYwLDEzIEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZEZyb20KICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJl
c3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgaWYgKHBvcy5pc05vdE51bGwo
KSkgewogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwot
ICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoV29yZEdyYW51
bGFyaXR5KTsKKyAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dyYW51bGFyaXR5
KFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5KTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChhcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0
ZXNwYWNlICYmIG5ld1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rp
b24uYXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9u
Rm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxl
Y3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9u
KSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3du
RGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3Bl
Y3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdyYW51
bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAgIH0KIH0KIApAQCAtNjAxLDE0ICs2MDEsMTQg
QEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RDb250ZXh0dQogICAgICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBv
aW50KHJlc3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICAgICAgICAgIGlmIChwb3Mu
aXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uKHBvcyk7Ci0gICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhcHBlbmRU
cmFpbGluZ1doaXRlc3BhY2UgPT0gU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlICYmIG5l
d1NlbGVjdGlvbi5pc1JhbmdlKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uYXBwZW5kVHJh
aWxpbmdXaGl0ZXNwYWNlKCk7CiAgICAgICAgIAotICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JN
b3VzZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlv
blRvUmVzcGVjdFNlbGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBX
b3JkR3JhbnVsYXJpdHkpOworICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNw
YXRjaGluZ1NlbGVjdFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNl
bGVjdE9uTW91c2VEb3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSk7CiAgICAgfQogfQogICAgIApAQCAtNjMyLDcgKzYzMiw3IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0Q29udGV4dHUKICAgICAgICAgaWYgKHBv
cy5pc05vdE51bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpLT5p
c0Rlc2NlbmRhbnRPZigqdXJsRWxlbWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBW
aXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUodXJsRWxlbWVudCk7
CiAKLSAgICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RT
dGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93
bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgV29yZEdyYW51bGFyaXR5KTsKKyAgICAgICAg
dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydCh0YXJnZXRO
b2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1vdXNlRG93bigqdGFyZ2V0Tm9k
ZSwgbmV3U2VsZWN0aW9uKSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkpOwogICAg
IH0KIH0KIApAQCAtNjY3LDEwICs2NjcsMTAgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudAogICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVy
ZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAg
ICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb24ocG9zKTsKLSAgICAgICAgbmV3U2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJp
dHkoUGFyYWdyYXBoR3JhbnVsYXJpdHkpOworICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNp
bmdHcmFudWxhcml0eShUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5KTsKICAg
ICB9CiAKLSAgICByZXR1cm4gdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdT
ZWxlY3RTdGFydCh0YXJnZXROb2RlLCBleHBhbmRTZWxlY3Rpb25Ub1Jlc3BlY3RTZWxlY3RPbk1v
dXNlRG93bigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0aW9uKSwgUGFyYWdyYXBoR3JhbnVsYXJpdHkp
OworICAgIHJldHVybiB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURvd25EaXNwYXRjaGluZ1NlbGVj
dFN0YXJ0KHRhcmdldE5vZGUsIGV4cGFuZFNlbGVjdGlvblRvUmVzcGVjdFNlbGVjdE9uTW91c2VE
b3duKCp0YXJnZXROb2RlLCBuZXdTZWxlY3Rpb24pLCBUZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFw
aEdyYW51bGFyaXR5KTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IHRleHREaXN0YW5jZShjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC03MTAsNyArNzEwLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIFBvc2l0aW9uIHBv
cyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogCiAgICAgVmlzaWJsZVNlbGVj
dGlvbiBuZXdTZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAg
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5OworICAg
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVy
R3JhbnVsYXJpdHk7CiAKICAgICBpZiAoIW1fZnJhbWUuZWRpdG9yKCkuY2xpZW50KCktPnNob3Vs
ZEFsbG93U2luZ2xlQ2xpY2tUb0NoYW5nZVNlbGVjdGlvbigqdGFyZ2V0Tm9kZSwgbmV3U2VsZWN0
aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03MzgsNyArNzM4LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG5ld1NlbGVjdGlvbi5zZXRFeHRlbnQocG9zKTsKIAotICAgICAgICBpZiAobV9mcmFtZS5z
ZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpICE9IENoYXJhY3RlckdyYW51bGFyaXR5KSB7CisgICAg
ICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgIT0gVGV4dEdyYW51bGFy
aXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSkgewogICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBt
X2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rp
b24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFyaXR5
KCkpOwogICAgICAgICB9CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
dXBkYXRlU2VsZWN0aW9uRm9yTW91CiAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudCh0YXJnZXRQ
b3NpdGlvbik7CiAjZW5kaWYKIAotICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmdyYW51bGFy
aXR5KCkgIT0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpCisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9u
KCkuZ3JhbnVsYXJpdHkoKSAhPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5
KQogICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShtX2ZyYW1lLnNl
bGVjdGlvbigpLmdyYW51bGFyaXR5KCkpOwogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb25CeU1vdXNlSWZEaWZmZXJlbnQobmV3U2VsZWN0aW9uLCBtX2ZyYW1lLnNlbGVjdGlv
bigpLmdyYW51bGFyaXR5KCksCkBAIC0zNTE2LDE1ICszNTE2LDE1IEBAIHN0YXRpYyB2b2lkIHNl
dEluaXRpYWxLZXlib2FyZFNlbGVjdGlvbigKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uOwogCiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIERpcmVjdGlvbkJh
Y2t3YXJkOgotICAgIGNhc2UgRGlyZWN0aW9uTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25EaXJlY3Rpb246OkxlZnQ6CiAgICAg
ICAgIGlmIChmb2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHZpc2libGVQb3NpdGlvbiA9IFZp
c2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5vZGUoZm9jdXNlZEVsZW1lbnQpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gZW5kT2ZEb2N1bWVudChkb2N1
bWVudCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRGlyZWN0aW9uRm9yd2FyZDoKLSAgICBj
YXNlIERpcmVjdGlvblJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
OgorICAgIGNhc2UgU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDoKICAgICAgICAgaWYgKGZvY3Vz
ZWRFbGVtZW50KQogICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9u
KHBvc2l0aW9uQWZ0ZXJOb2RlKGZvY3VzZWRFbGVtZW50KSk7CiAgICAgICAgIGVsc2UKQEAgLTM1
NDUsOCArMzU0NSw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW0K
ICAgICBib29sIGlzU2VsZWN0aW9uID0gIXNlbGVjdGlvbi5pc05vbmUoKTsKIAogICAgIEZyYW1l
U2VsZWN0aW9uOjpFQWx0ZXJhdGlvbiBhbHRlcm5hdGlvbiA9IGV2ZW50LmdldE1vZGlmaWVyU3Rh
dGUoIlNoaWZ0IikgPyBGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCA6IEZyYW1lU2Vs
ZWN0aW9uOjpBbHRlcmF0aW9uTW92ZTsKLSAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9u
ID0gRGlyZWN0aW9uRm9yd2FyZDsKLSAgICBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uID0g
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOworICAgIFRleHRHcmFudWxhcml0eSBncmFudWxh
cml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAKICAgICBzd2l0
Y2ggKGZvY3VzRGlyZWN0aW9uRm9yS2V5KGV2ZW50LmtleUlkZW50aWZpZXIoKSkpIHsKICAgICBj
YXNlIEZvY3VzRGlyZWN0aW9uTm9uZToKQEAgLTM1NTYsMjAgKzM1NTYsMjAgQEAgc3RhdGljIHZv
aWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoKLSAgICAg
ICAgZGlyZWN0aW9uID0gRGlyZWN0aW9uQmFja3dhcmQ7Ci0gICAgICAgIGdyYW51bGFyaXR5ID0g
aXNDb21tYW5kZWQgPyBEb2N1bWVudEJvdW5kYXJ5IDogTGluZUdyYW51bGFyaXR5OworICAgICAg
ICBkaXJlY3Rpb24gPSBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAgICAgICBncmFu
dWxhcml0eSA9IGlzQ29tbWFuZGVkID8gVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5
IDogVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgotICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25G
b3J3YXJkOwotICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gRG9jdW1lbnRCb3Vu
ZGFyeSA6IExpbmVHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkOworICAgICAgICBncmFudWxhcml0eSA9IGlzQ29tbWFuZGVkID8gVGV4
dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5IDogVGV4dEdyYW51bGFyaXR5OjpMaW5lR3Jh
bnVsYXJpdHk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0Ogot
ICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25MZWZ0OwotICAgICAgICBncmFudWxhcml0eSA9
IChpc0NvbW1hbmRlZCkgPyBMaW5lQm91bmRhcnkgOiAoaXNPcHRpb25lZCkgPyBXb3JkR3JhbnVs
YXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgZGlyZWN0aW9uID0gU2VsZWN0
aW9uRGlyZWN0aW9uOjpMZWZ0OworICAgICAgICBncmFudWxhcml0eSA9IChpc0NvbW1hbmRlZCkg
PyBUZXh0R3JhbnVsYXJpdHk6OkxpbmVCb3VuZGFyeSA6IChpc09wdGlvbmVkKSA/IFRleHRHcmFu
dWxhcml0eTo6V29yZEdyYW51bGFyaXR5IDogVGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFu
dWxhcml0eTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0Ogot
ICAgICAgICBkaXJlY3Rpb24gPSBEaXJlY3Rpb25SaWdodDsKLSAgICAgICAgZ3JhbnVsYXJpdHkg
PSAoaXNDb21tYW5kZWQpID8gTGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gV29yZEdyYW51
bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHk7CisgICAgICAgIGRpcmVjdGlvbiA9IFNlbGVj
dGlvbkRpcmVjdGlvbjo6UmlnaHQ7CisgICAgICAgIGdyYW51bGFyaXR5ID0gKGlzQ29tbWFuZGVk
KSA/IFRleHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5IDogKGlzT3B0aW9uZWQpID8gVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkgOiBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3Rlckdy
YW51bGFyaXR5OwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTc5LDcgKzU3OSw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNPdmVyVGV4dEluc2lkZUZvcm0K
ICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIFJlZlB0
cjxSYW5nZT4gd29yZFJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpGb3J3YXJkKTsKICAgICBpZiAoIXdvcmRSYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4NSBAQAorMjAyMC0wNS0xNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBlbnVtIHNl
cmlhbGl6YXRpb24gaW5zdGVhZCBvZiBjYXN0aW5nIHRvL2Zyb20gdWludDMyX3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg4NQorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaDoK
KyAgICAgICAgKiBTaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJHTExvYWRQb2xpY3kp
OgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dG9XZWJDb3JlV2ViR0xMb2FkUG9s
aWN5KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdEZvcldlYlZpZXc6XSk6CisgICAgICAgICh0
b1VJV0tTZWxlY3Rpb25GbGFncyk6CisgICAgICAgICh0b1NlbGVjdGlvbkZsYWdzKToKKyAgICAg
ICAgKHRvV0tUZXh0R3JhbnVsYXJpdHkpOgorICAgICAgICAodG9XS1NlbGVjdGlvbkRpcmVjdGlv
bik6CisgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUpOgorICAgICAgICAoc2Vs
ZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaCk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2hhbmdl
U2VsZWN0aW9uV2l0aEdlc3R1cmVBdDp3aXRoR2VzdHVyZTp3aXRoU3RhdGU6d2l0aEZsYWdzOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0Ondp
dGhTZWxlY3Rpb25Ub3VjaDpiYXNlSXNTdGFydDp3aXRoRmxhZ3M6XSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgY2hhbmdlU2VsZWN0aW9uV2l0aFRvdWNoZXNGcm9tOnRvOndpdGhHZXN0dXJl
OndpdGhTdGF0ZTpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZWxlY3RXb3JkRm9yUmVw
bGFjZW1lbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnRvdWNoZXNDYWxsYmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZWxlY3RXaXRoVHdvVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXh0
ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVj
dHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1tOgorICAgICAgICAoLVtXS0RP
TVJhbmdlIHJhbmdlQnlFeHBhbmRpbmdUb1dvcmRCb3VuZGFyeUJ5Q2hhcmFjdGVyczppbkRpcmVj
dGlvbjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6Ondl
YkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJH
TFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBv
bGljeUZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpnZXRTZWxlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpyYW5nZUF0V29yZEJvdW5k
YXJ5Rm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhUd29U
b3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxh
cml0eUF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdy
YW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luU2VsZWN0
aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBw
bHlBdXRvY29ycmVjdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXV0
b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6ZGF0YURldGVjdG9yTGlua1Bv
c2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0Ojptb3ZlQnlHcmFudWxhcml0eVJl
c3BlY3RpbmdXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZv
clVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVS
TCk6CisKIDIwMjAtMDUtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBbaU9TIFNpbXVsYXRvcl0gVGVzdFdlYktpdEFQSS5fV0tEb3dubG9h
ZC5SZXN1bWUgaXMgYSBmbGFreSBjcmFzaApJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Rl
c3RNZXNzYWdlUmVjZWl2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy90ZXN0TWVzc2FnZVJlY2VpdmVyLmNwcAkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlUmVjZWl2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw5IEBACiAjaWYgRU5BQkxFKERFUFJFQ0FURURfRkVBVFVSRSkgfHwgRU5BQkxFKEVY
UEVSSU1FTlRBTF9GRUFUVVJFKQogI2luY2x1ZGUgIkR1bW15VHlwZS5oIgogI2VuZGlmCisjaWYg
UExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiSGFuZGxlTWVzc2FnZS5oIgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJNYWNoUG9y
dC5oIgpAQCAtNTIsNiArNTUsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgog
I2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpZiBQTEFURk9S
TShNQUMpCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TY3JpcHRzL3Rlc3RNZXNzYWdlcy5oCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvdGVzdE1lc3NhZ2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDkgQEAKIAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVkZSAiR2VzdHVyZVR5cGVzLmgi
CisjZW5kaWYKICNpbmNsdWRlICJNZXNzYWdlTmFtZXMuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIK
ICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXNSZXBsaWVzLmgiCkBAIC0zNyw2ICs0MCw3IEBACiAj
aW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ1MiwxMyArNDU2LDEzIEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oTUFDKQogY2xhc3MgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewog
cHVibGljOgotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0Jj4gQXJn
dW1lbnRzOworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxjb25zdCBJUEM6Ok1hY2hQb3J0JiwgY29u
c3QgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+Jj4gQXJndW1lbnRzOwogCiAgICAg
c3RhdGljIElQQzo6TWVzc2FnZU5hbWUgbmFtZSgpIHsgcmV0dXJuIElQQzo6TWVzc2FnZU5hbWU6
OldlYlBhZ2VfRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb247IH0KICAgICBzdGF0aWMgY29u
c3QgYm9vbCBpc1N5bmMgPSBmYWxzZTsKIAotICAgIGV4cGxpY2l0IERpZENyZWF0ZVdlYlByb2Nl
c3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQot
ICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6TWFjaFBvcnQmIGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4mIGZsYWdzKQor
ICAgICAgICA6IG1fYXJndW1lbnRzKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmbGFncykKICAgICB7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJ
KHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBkZWYgY29uZGl0aW9uc19m
b3JfaGVhZGVyKGhlYWRlcik6CiAgICAgY29uZGl0aW9ucyA9IHsKICAgICAgICAgJyJJbnB1dE1l
dGhvZFN0YXRlLmgiJzogWyJQTEFURk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiXSwKICAgICAg
ICAgJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJzogWyJQTEFURk9STShDT0NPQSkiLCBdLAorICAg
ICAgICAnIkdlc3R1cmVUeXBlcy5oIic6IFsiUExBVEZPUk0oSU9TX0ZBTUlMWSkiXSwKICAgICB9
CiAgICAgaWYgbm90IGhlYWRlciBpbiBjb25kaXRpb25zOgogICAgICAgICByZXR1cm4gTm9uZQpA
QCAtNjE1LDYgKzYxNiw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6UmVjZW50U2VhcmNoJzogWyc8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnUuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSc6IFsnPFdlYkNvcmUvQXVkaW9T
ZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKKyAgICAgICAgJ1dlYkNv
cmU6OlNlbGVjdGlvbkRpcmVjdGlvbic6IFsnPFdlYkNvcmUvVmlzaWJsZVNlbGVjdGlvbi5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXInOiBbJzxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdv
cmtlck9yQ2xpZW50RGF0YSc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+JywgJzxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+JywgJzxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJEYXRhLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVu
dGlmaWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nLCAnPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4nXSwKQEAgLTYzOSwxNyArNjQxLDIyIEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUnOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6VXNlZExlZ2FjeVRMUyc6IFsnPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyc6IFsnPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZyc6IFsnPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCc6IFsnIkVkaXRv
clN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsn
IkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6Q29udGVu
dFdvcmxkSWRlbnRpZmllcicgOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKKyAgICAgICAg
J1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IiddLAorICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVy
ZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsnIkxh
eWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9k
ZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRl
JzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cENv
bmZpZ3VyYXRpb24nOiBbJyJQYXltZW50U2V0dXBDb25maWd1cmF0aW9uV2ViS2l0LmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OlBheW1lbnRTZXR1cEZlYXR1cmVzJzogWyciQXBwbGVQYXlQYXltZW50
U2V0dXBGZWF0dXJlc1dlYktpdC5oIiddLAogICAgICAgICAnV2ViS2l0OjpSZXNwZWN0U2VsZWN0
aW9uQW5jaG9yJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlNlbGVj
dGlvbkZsYWdzJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OlNlbGVj
dGlvblRvdWNoJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYkdl
c3R1cmVFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYktleWJv
YXJkRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViS2l0OjpXZWJNb3VzZUV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvdGVzdC5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L3Rlc3QubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvdGVzdC5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRWaWRlb0xheWVySUQoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIHZpZGVvTGF5ZXJJRCkKIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6Ok1h
Y2hQb3J0IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKElQQzo6TWFjaFBvcnQgY29ubmVjdGlvbklkZW50aWZpZXIsIE9wdGlvblNldDxXZWJL
aXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncykKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQuaAko
cmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5n
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBEb2N1bWVu
dEVkaXRpbmdDb250ZXh0UmVxdWVzdCB7CiAKICAgICBPcHRpb25TZXQ8T3B0aW9ucz4gb3B0aW9u
czsKIAotICAgIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBzdXJyb3VuZGluZ0dyYW51bGFyaXR5
IHsgV2ViQ29yZTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgfTsKKyAgICBXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHkgc3Vycm91bmRpbmdHcmFudWxhcml0eSB7IFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgfTsKICAgICBpbnQ2NF90IGdyYW51bGFyaXR5Q291bnQg
eyAwIH07CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9HZXN0dXJlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvR2VzdHVyZVR5cGVzLmgJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL2lvcy9HZXN0dXJlVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIg
KzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBHZXN0dXJlVHlwZXNfaAotI2RlZmluZSBHZXN0dXJlVHlwZXNfaAorI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
ZW51bSBjbGFzcyBHZXN0dXJlVHlwZSB7CitlbnVtIGNsYXNzIEdlc3R1cmVUeXBlIDogdWludDhf
dCB7CiAgICAgTG91cGUsCiAgICAgT25lRmluZ2VyVGFwLAogICAgIFRhcEFuZEFIYWxmLApAQCAt
NDUsNyArNDYsNyBAQCBlbnVtIGNsYXNzIEdlc3R1cmVUeXBlIHsKICAgICBQaHJhc2VCb3VuZGFy
eQogfTsKIAotZW51bSBjbGFzcyBTZWxlY3Rpb25Ub3VjaCB7CitlbnVtIGNsYXNzIFNlbGVjdGlv
blRvdWNoIDogdWludDhfdCB7CiAgICAgU3RhcnRlZCwKICAgICBNb3ZlZCwKICAgICBFbmRlZCwK
QEAgLTU0LDIzICs1NSwyMSBAQCBlbnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIHsKICAgICBFbmRl
ZE5vdE1vdmluZwogfTsKIAotZW51bSBjbGFzcyBHZXN0dXJlUmVjb2duaXplclN0YXRlIHsKK2Vu
dW0gY2xhc3MgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSA6IHVpbnQ4X3QgewogICAgIFBvc3NpYmxl
LAogICAgIEJlZ2FuLAogICAgIENoYW5nZWQsCiAgICAgRW5kZWQsCiAgICAgQ2FuY2VsbGVkLAot
ICAgIEZhaWxlZCwKLSAgICBSZWNvZ25pemVkID0gRW5kZWQKKyAgICBGYWlsZWQKIH07CiAKLWVu
dW0gY2xhc3MgU2hlZXRBY3Rpb24geworZW51bSBjbGFzcyBTaGVldEFjdGlvbiA6IGJvb2wgewog
ICAgIENvcHksCiAgICAgU2F2ZUltYWdlCiB9OwogCi1lbnVtIFNlbGVjdGlvbkZsYWdzIHsKLSAg
ICBOb25lID0gMCwKK2VudW0gU2VsZWN0aW9uRmxhZ3MgOiB1aW50OF90IHsKICAgICBXb3JkSXNO
ZWFyVGFwID0gMSA8PCAwLAogICAgIFBocmFzZUJvdW5kYXJ5Q2hhbmdlZCA9IDEgPDwgMSwKIH07
CkBAIC04Miw0ICs4MSw1MSBAQCBlbnVtIGNsYXNzIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IgOiBi
b29sCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gR2VzdHVyZVR5cGVzX2gK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6
R2VzdHVyZVR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBX
ZWJLaXQ6Okdlc3R1cmVUeXBlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpMb3VwZSwK
KyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwLAorICAgICAgICBXZWJL
aXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRBSGFsZiwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlw
ZTo6RG91YmxlVGFwLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpUYXBBbmRIYWxmLAor
ICAgICAgICBXZWJLaXQ6Okdlc3R1cmVUeXBlOjpEb3VibGVUYXBJblVuZWRpdGFibGUsCisgICAg
ICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6Ok9uZUZpbmdlclRhcEluVW5lZGl0YWJsZSwKKyAgICAg
ICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwU2VsZWN0c0FsbCwKKyAgICAgICAg
V2ViS2l0OjpHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwLAorICAgICAgICBXZWJLaXQ6
Okdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUcmlwbGVUYXAsCisgICAgICAgIFdlYktpdDo6R2VzdHVy
ZVR5cGU6OlR3b0ZpbmdlclNpbmdsZVRhcCwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlwZTo6
VHdvRmluZ2VyUmFuZ2VkU2VsZWN0R2VzdHVyZSwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlVHlw
ZTo6VGFwT25MaW5rV2l0aEdlc3R1cmUsCisgICAgICAgIFdlYktpdDo6R2VzdHVyZVR5cGU6OlBo
cmFzZUJvdW5kYXJ5CisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViS2l0OjpTZWxlY3Rpb25Ub3VjaD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2gsCisgICAgICAgIFdlYktpdDo6U2VsZWN0
aW9uVG91Y2g6OlN0YXJ0ZWQsCisgICAgICAgIFdlYktpdDo6U2VsZWN0aW9uVG91Y2g6Ok1vdmVk
LAorICAgICAgICBXZWJLaXQ6OlNlbGVjdGlvblRvdWNoOjpFbmRlZCwKKyAgICAgICAgV2ViS2l0
OjpTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdGb3J3YXJkLAorICAgICAgICBXZWJLaXQ6OlNl
bGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJkLAorICAgICAgICBXZWJLaXQ6OlNlbGVj
dGlvblRvdWNoOjpFbmRlZE5vdE1vdmluZworICAgID47Cit9OworCisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXpl
clN0YXRlLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxl
LAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkJlZ2FuLAorICAgICAg
ICBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNoYW5nZWQsCisgICAgICAgIFdlYktp
dDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6RW5kZWQsCisgICAgICAgIFdlYktpdDo6R2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZTo6Q2FuY2VsbGVkLAorICAgICAgICBXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyU3RhdGU6OkZhaWxlZAorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjYx
NzY4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTc1MywxNiArNTc1MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hdmFp
bGFibGVQbHVnaW5CdXR0CiAjaWYgRU5BQkxFKFdFQkdMKQogdm9pZCBXZWJQYWdlUHJveHk6Ondl
YkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2ViR0xQ
b2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIG1fbmF2aWdhdGlvbkNs
aWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkp
XSAoV2ViR0xMb2FkUG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIHJlcGx5KHN0YXRp
Y19jYXN0PHVpbnQzMl90Pihwb2xpY3kpKTsKLSAgICB9KTsKKyAgICBtX25hdmlnYXRpb25DbGll
bnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkw6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewotICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBv
bGljeSgqdGhpcywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFdlYkdMTG9hZFBvbGlj
eSBwb2xpY3kpIG11dGFibGUgewotICAgICAgICByZXBseShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
cG9saWN5KSk7Ci0gICAgfSk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2ViR0xM
b2FkUG9saWN5KCp0aGlzLCB1cmwsIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoV0VCR0wpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDggKzIyMyw2IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwogCi1lbnVtIFNl
bGVjdGlvbkRpcmVjdGlvbiA6IHVpbnQ4X3Q7Ci0KIGVudW0gY2xhc3MgQXV0b3BsYXlFdmVudCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNzUmVzcG9uc2UgOiB1aW50OF90Owog
ZW51bSBjbGFzcyBMb2NrQmFja0ZvcndhcmRMaXN0IDogYm9vbDsKQEAgLTIzMiw2ICsyMzAsNyBA
QCBlbnVtIGNsYXNzIEhhc0luc2VjdXJlQ29udGVudCA6IGJvb2w7CiBlbnVtIGNsYXNzIE1vdXNl
RXZlbnRQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb24g
OiB1aW50OF90OwogZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90OworZW51
bSBjbGFzcyBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGRT
YW1wbGUgOiBib29sOwogZW51bSBjbGFzcyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBi
b29sOwogZW51bSBjbGFzcyBXcml0aW5nRGlyZWN0aW9uIDogdWludDhfdDsKQEAgLTI0NCw2ICsy
NDMsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIHN0cnVjdCBEYXRhTGlzdFN1
Z2dlc3Rpb25JbmZvcm1hdGlvbjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0
IERyYWdJdGVtOworc3RydWN0IEVsZW1lbnRDb250ZXh0Owogc3RydWN0IEV4Y2VwdGlvbkRldGFp
bHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyOwpAQCAtMjc5LDEwICsyNzksNiBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU0NvbnRl
eHQqIEpTR2xvYmFsCiB0eXBlZGVmIEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogI2VuZGlmCiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBFbGVtZW50Q29udGV4dDsKLX0KLQogbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Owog
Y2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKQEAgLTQwNSw4ICs0MDEsOCBAQCB0eXBlZGVmIEdlbmVy
aWNDYWxsYmFjazxjb25zdCBGb250SW5mbyYsCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi10eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3Q+IEdlc3R1cmVDYWxsYmFjazsKLXR5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVpbnQz
Ml90PiBUb3VjaGVzQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRp
b25TZXQ8U2VsZWN0aW9uRmxhZ3M+PiBHZXN0dXJlQ2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVjdGlvblRvdWNoLCBPcHRpb25T
ZXQ8U2VsZWN0aW9uRmxhZ3M+PiBUb3VjaGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4mPiBTZWxlY3Rpb25SZWN0
c0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiY+IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb25DYWxsYmFjazsKICNlbmRpZgpA
QCAtNzU2LDkgKzc1Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAg
ICAgdm9pZCB3aWxsQ29tbWl0TGF5ZXJUcmVlKFRyYW5zYWN0aW9uSUQpOwogCi0gICAgdm9pZCBz
ZWxlY3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBi
b29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMyX3QsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3Vj
aGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJ
c1N0YXJ0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWlu
dDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7Ci0gICAgdm9pZCBzZWxl
Y3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVT
dGF0ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQz
Ml90LCB1aW50MzJfdCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBHZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRF
bGVtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0
dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0
aFRvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFNlbGVjdGlvblRvdWNoLCBib29sIGJh
c2VJc1N0YXJ0LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0
aW9uVG91Y2gsIE9wdGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmKTsKKyAgICB2b2lkIHNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50IGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHRvLCBHZXN0dXJlVHlwZSwgR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZSwgRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9u
RmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBleHRlbmRTZWxlY3Rp
b24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNrd2Fy
ZCgpOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA5Nyw4ICsyMDkzLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IEZvbnRJbmZvJiwgZG91Ymxl
LCBib29sLCBDYWxsYmFja0lEKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgdm9pZCBnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFncywgQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCB0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBmbGFncywgQ2FsbGJhY2tJRCk7CisgICAg
dm9pZCBnZXN0dXJlQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBTZWxlY3Rpb25Ub3VjaCwgT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzZWxlY3Rpb25Db250ZXh0Q2FsbGJhY2soY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZFRleHQsIGNvbnN0IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QgU3RyaW5nJiBhZnRlclRl
eHQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9y
U3RhdGUmLCBib29sIGlzQ2hhckV2ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9s
aWN5LCBjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
biwgU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBTdHJpbmcgcGx1Z2lu
c3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIFN0cmluZyBmcmFtZVVSTFN0cmluZywgU3RyaW5nIHBh
Z2VVUkxTdHJpbmcpCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUG9saWN5Rm9yVVJMKFVSTCB1cmwpIC0+ICh1aW50MzJf
dCBsb2FkUG9saWN5KSBTeW5jaHJvbm91cwotICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChV
UkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkgU3luY2hyb25vdXMKKyAgICBXZWJHTFBv
bGljeUZvclVSTChVUkwgdXJsKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSBsb2FkUG9saWN5KSBTeW5jaHJvbm91cworICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVS
TChVUkwgdXJsKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2Fk
UG9saWN5KSBTeW5jaHJvbm91cwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICBEaWRDaGFu
Z2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBh
dHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBlLCBib29sIGhhbmRs
ZWQpCkBAIC0xNzcsOCArMTc3LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRp
ZgogICAgIEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soc3RydWN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgR2VzdHVyZUNhbGxiYWNrKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJf
dCBmbGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVG91Y2hlc0NhbGxi
YWNrKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCB1aW50MzJfdCBm
bGFncywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgR2VzdHVyZUNhbGxiYWNr
KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpHZXN0dXJlVHlw
ZSBnZXN0dXJlVHlwZSwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0
ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgVG91Y2hlc0NhbGxiYWNrKFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0
b3VjaGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3MsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNlbGVjdGlvbkNvbnRleHRDYWxsYmFjayhTdHJp
bmcgc2VsZWN0ZWRUZXh0LCBTdHJpbmcgYmVmb3JlVGV4dCwgU3RyaW5nIGFmdGVyVGV4dCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW50ZXJwcmV0S2V5RXZlbnQoc3RydWN0
IFdlYktpdDo6RWRpdG9yU3RhdGUgc3RhdGUsIGJvb2wgaXNDaGFyRXZlbnQpIC0+IChib29sIGhh
bmRsZWQpIFN5bmNocm9ub3VzCiAgICAgRGlkUmVjZWl2ZVBvc2l0aW9uSW5mb3JtYXRpb24oc3Ry
dWN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW5mb3JtYXRpb24p
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNp
b24gMjYxNzY4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5NiwyNSArNDk2LDI1IEBAIGlubGluZSBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgdG9XZWJHTEwKIHsKICAgICBzd2l0Y2ggKHdlYkdMTG9hZFBvbGljeSkgewog
ICAgIGNhc2Uga1dLV2ViR0xMb2FkUG9saWN5TG9hZE5vcm1hbGx5OgotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiAgICAgY2FzZSBrV0tXZWJHTExvYWRQ
b2xpY3lCbG9ja2VkOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9u
OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3Jl
YXRpb247CiAgICAgY2FzZSBrV0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nOgotICAgICAgICByZXR1
cm4gV2ViQ29yZTo6V2ViR0xQZW5kaW5nQ3JlYXRpb247CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOwogICAgIH0KICAgICAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dD
cmVhdGlvbjsKIH0KIAogaW5saW5lIFdLV2ViR0xMb2FkUG9saWN5IHRvQVBJKFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQb2xpY3kpCiB7CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQ
b2xpY3kpIHsKLSAgICBjYXNlIFdlYkNvcmU6OldlYkdMQWxsb3dDcmVhdGlvbjoKKyAgICBjYXNl
IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOgogICAgICAgICBy
ZXR1cm4ga1dLV2ViR0xMb2FkUG9saWN5TG9hZE5vcm1hbGx5OwotICAgIGNhc2UgV2ViQ29yZTo6
V2ViR0xCbG9ja0NyZWF0aW9uOgorICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpX
ZWJHTEJsb2NrQ3JlYXRpb246CiAgICAgICAgIHJldHVybiBrV0tXZWJHTExvYWRQb2xpY3lCbG9j
a2VkOwotICAgIGNhc2UgV2ViQ29yZTo6V2ViR0xQZW5kaW5nQ3JlYXRpb246CisgICAgY2FzZSBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMUGVuZGluZ0NyZWF0aW9uOgogICAgICAgICBy
ZXR1cm4ga1dLV2ViR0xMb2FkUG9saWN5UGVuZGluZzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9u
IDI2MTc2OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDA5LDIxICs0MDksMjEgQEAgaW5saW5lIFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSB0b1dlYkNvcgogewogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAg
Y2FzZSBfV0tXZWJHTExvYWRQb2xpY3lBbGxvd0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xp
Y3lCbG9ja0NyZWF0aW9uOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0
aW9uOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2Nr
Q3JlYXRpb247CiAgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nQ3JlYXRpb246Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTFBlbmRpbmdDcmVhdGlvbjsKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xQZW5kaW5nQ3JlYXRpb247CiAgICAg
fQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpX
ZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6
V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5
Rm9yVVJMKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVhdGlvbik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUxNSw3ICszNTE1LDcg
QEAgLSAodm9pZClzZWxlY3RGb3JXZWJWaWV3OihpZClzZW5kZXIKIHsKICAgICBbX3RleHRJbnRl
cmFjdGlvbkFzc2lzdGFudCBzZWxlY3RXb3JkXTsKICAgICAvLyBXZSBjYW5ub3QgdXNlIHNlbGVj
dFdvcmQgY29tbWFuZCwgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFibGUgdG8gc2VsZWN0IHRoZSB3
b3JkIGV2ZW4gd2hlbiBpdCBpcyB0aGUgbGFzdCBpbiB0aGUgcGFyYWdyYXBoLgotICAgIF9wYWdl
LT5leHRlbmRTZWxlY3Rpb24oV2ViQ29yZTo6V29yZEdyYW51bGFyaXR5KTsKKyAgICBfcGFnZS0+
ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5
KTsKIH0KIAogLSAodm9pZClzZWxlY3RBbGxGb3JXZWJWaWV3OihpZClzZW5kZXIKQEAgLTM4MjMs
MzIgKzM4MjMsNDIgQEAgc3RhdGljIGlubGluZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUgdAog
ICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0
aW9uRmxhZ3MoV2ViS2l0OjpTZWxlY3Rpb25GbGFncyBmbGFncykKK3N0YXRpYyBpbmxpbmUgVUlX
S1NlbGVjdGlvbkZsYWdzIHRvVUlXS1NlbGVjdGlvbkZsYWdzKE9wdGlvblNldDxXZWJLaXQ6OlNl
bGVjdGlvbkZsYWdzPiBmbGFncykKIHsKICAgICBOU0ludGVnZXIgdWlGbGFncyA9IFVJV0tOb25l
OwotICAgIGlmIChmbGFncyAmIFdlYktpdDo6V29yZElzTmVhclRhcCkKKyAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoV2ViS2l0OjpXb3JkSXNOZWFyVGFwKSkKICAgICAgICAgdWlGbGFncyB8PSBVSVdL
V29yZElzTmVhclRhcDsKLSAgICBpZiAoZmxhZ3MgJiBXZWJLaXQ6OlBocmFzZUJvdW5kYXJ5Q2hh
bmdlZCkKKyAgICBpZiAoZmxhZ3MuY29udGFpbnMoV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5n
ZWQpKQogICAgICAgICB1aUZsYWdzIHw9IFVJV0tQaHJhc2VCb3VuZGFyeUNoYW5nZWQ7CiAKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VUlXS1NlbGVjdGlvbkZsYWdzPih1aUZsYWdzKTsKIH0KIAor
c3RhdGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpTZWxlY3Rpb25GbGFncz4gdG9TZWxlY3Rp
b25GbGFncyhVSVdLU2VsZWN0aW9uRmxhZ3MgdWlGbGFncykKK3sKKyAgICBPcHRpb25TZXQ8V2Vi
S2l0OjpTZWxlY3Rpb25GbGFncz4gZmxhZ3M7CisgICAgaWYgKHVpRmxhZ3MgJiBVSVdLV29yZElz
TmVhclRhcCkKKyAgICAgICAgZmxhZ3MuYWRkKFdlYktpdDo6V29yZElzTmVhclRhcCk7CisgICAg
aWYgKHVpRmxhZ3MgJiBVSVdLUGhyYXNlQm91bmRhcnlDaGFuZ2VkKQorICAgICAgICBmbGFncy5h
ZGQoV2ViS2l0OjpQaHJhc2VCb3VuZGFyeUNoYW5nZWQpOworICAgIHJldHVybiBmbGFnczsKK30K
Kwogc3RhdGljIGlubGluZSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgdG9XS1RleHRHcmFudWxh
cml0eShVSVRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBzd2l0Y2ggKGdyYW51
bGFyaXR5KSB7CiAgICAgY2FzZSBVSVRleHRHcmFudWxhcml0eUNoYXJhY3RlcjoKLSAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICBjYXNlIFVJ
VGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldvcmRHcmFudWxh
cml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6V29yZEdyYW51
bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3JhbnVsYXJpdHlTZW50ZW5jZToKLSAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OlNlbnRlbmNlR3JhbnVsYXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHk7CiAgICAgY2FzZSBVSVRleHRH
cmFudWxhcml0eVBhcmFncmFwaDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlBhcmFncmFwaEdy
YW51bGFyaXR5OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5OjpQYXJh
Z3JhcGhHcmFudWxhcml0eTsKICAgICBjYXNlIFVJVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkxpbmVHcmFudWxhcml0eTsKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OlRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgIGNhc2UgVUlUZXh0R3Jh
bnVsYXJpdHlEb2N1bWVudDoKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRvY3VtZW50R3JhbnVs
YXJpdHk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkRvY3VtZW50
R3JhbnVsYXJpdHk7CiAgICAgfQogfQogCkBAIC0zODU3LDI5ICszODY3LDI5IEBAIHN0YXRpYyBp
bmxpbmUgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW8KICAgICBzd2l0Y2ggKGRpcmVjdGlvbikg
ewogICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uRG93bjoKICAgICBjYXNlIFVJVGV4dExh
eW91dERpcmVjdGlvblJpZ2h0OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uUmln
aHQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb246OlJpZ2h0Owog
ICAgIGNhc2UgVUlUZXh0TGF5b3V0RGlyZWN0aW9uVXA6CiAgICAgY2FzZSBVSVRleHRMYXlvdXRE
aXJlY3Rpb25MZWZ0OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlyZWN0aW9uTGVmdDsKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICBkZWZh
dWx0OgogICAgICAgICAvLyBVSVRleHREaXJlY3Rpb24gaXMgbm90IGFuIGVudW0sIGJ1dCB3ZSBv
bmx5IHdhbnQgdG8gYWNjZXB0IHZhbHVlcyBmcm9tIFVJVGV4dExheW91dERpcmVjdGlvbi4KICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEaXJl
Y3Rpb25SaWdodDsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbjo6
UmlnaHQ7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1
cmUoV0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1aW50MzJfdCBmbGFn
cywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQorc3RhdGljIHZvaWQgc2VsZWN0
aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0
OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6
U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
CiB7CiAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2
aWV3IGludGVyYWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmVBdDoo
Q0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTp0b1VJV0tHZXN0dXJlVHlwZSgoV2ViS2l0OjpHZXN0
dXJlVHlwZSlnZXN0dXJlVHlwZSkgd2l0aFN0YXRlOnRvVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
KHN0YXRpY19jYXN0PFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRl
KSkgd2l0aEZsYWdzOih0b1VJV0tTZWxlY3Rpb25GbGFncygoV2ViS2l0OjpTZWxlY3Rpb25GbGFn
cylmbGFncykpXTsKKyAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBp
bnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9p
bnQpcG9pbnQgd2l0aEdlc3R1cmU6dG9VSVdLR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpIHdpdGhT
dGF0ZTp0b1VJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpIHdpdGhGbGFnczp0
b1VJV0tTZWxlY3Rpb25GbGFncyhmbGFncyldOwogfQogCi1zdGF0aWMgdm9pZCBzZWxlY3Rpb25D
aGFuZ2VkV2l0aFRvdWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpCitzdGF0aWMgdm9pZCBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRv
dWNoKFdLQ29udGVudFZpZXcgKnZpZXcsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
V2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0b3VjaCwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9u
RmxhZ3M+IGZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpCiB7CiAgICAg
aWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKICAgICAgICAg
cmV0dXJuOwotICAgIFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGludGVy
YWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9p
bnQgd2l0aFNlbGVjdGlvblRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNlbGVj
dGlvblRvdWNoKXRvdWNoKSB3aXRoRmxhZ3M6c3RhdGljX2Nhc3Q8VUlXS1NlbGVjdGlvbkZsYWdz
PihmbGFncyldOworICAgIFsoVUlXS1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCAqKVt2aWV3IGlu
dGVyYWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChXZWJLaXQ6OlNl
bGVjdGlvblRvdWNoKXRvdWNoKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoZmxhZ3Mp
XTsKIH0KIAogLSAoQk9PTClfaGFzRm9jdXNlZEVsZW1lbnQKQEAgLTM4OTUsOCArMzkwNSw4IEBA
IC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9uV2l0aEdlc3R1cmVBdDooQ0cKIC0gKHZvaWQpY2hhbmdl
U2VsZWN0aW9uV2l0aEdlc3R1cmVBdDooQ0dQb2ludClwb2ludCB3aXRoR2VzdHVyZTooVUlXS0dl
c3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
KXN0YXRlIHdpdGhGbGFnczooVUlXS1NlbGVjdGlvbkZsYWdzKWZsYWdzCiB7CiAgICAgX3VzaW5n
R2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0aEdlc3R1cmUo
V2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBXZWJDb3JlOjpDaGFyYWN0ZXJHcmFudWxhcml0eSwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHRvR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSkpLCBzZWxmLl9o
YXNGb2N1c2VkRWxlbWVudCwgW3NlbGYsIHN0YXRlLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRl
LCB1aW50MzJfdCBpbm5lckZsYWdzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKLSAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlKHNlbGYsIHBvaW50LCBnZXN0
dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKKyAgICBf
cGFnZS0+c2VsZWN0V2l0aEdlc3R1cmUoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCB0b0dlc3R1
cmVUeXBlKGdlc3R1cmVUeXBlKSwgdG9HZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRlKSwgc2Vs
Zi5faGFzRm9jdXNlZEVsZW1lbnQsIFtzZWxmLCBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBzdGF0ZSwgZmxhZ3NdKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpH
ZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlIGdl
c3R1cmVTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3Ms
IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25D
aGFuZ2VkV2l0aEdlc3R1cmUoc2VsZiwgcG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IHRvU2VsZWN0aW9uRmxhZ3MoZmxhZ3MpIHwgaW5uZXJGbGFncywgZXJyb3IpOwogICAgICAgICBp
ZiAoc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQgfHwgc3RhdGUgPT0gVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkKQogICAgICAgICAgICAgX3VzaW5nR2VzdHVy
ZUZvclNlbGVjdGlvbiA9IE5POwogICAgIH0pOwpAQCAtMzkwNSw5ICszOTE1LDkgQEAgLSAodm9p
ZCljaGFuZ2VTZWxlY3Rpb25XaXRoR2VzdHVyZUF0OihDRwogLSAodm9pZCljaGFuZ2VTZWxlY3Rp
b25XaXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxl
Y3Rpb25Ub3VjaCl0b3VjaCBiYXNlSXNTdGFydDooQk9PTCliYXNlSXNTdGFydCB3aXRoRmxhZ3M6
KFVJV0tTZWxlY3Rpb25GbGFncylmbGFncwogewogICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rp
b24gPSBZRVM7Ci0gICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdlYkNvcmU6
OkludFBvaW50KHBvaW50KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvU2VsZWN0aW9uVG91Y2go
dG91Y2gpKSwgYmFzZUlzU3RhcnQsIFtzZWxmLCBmbGFnc10oY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgaW5uZXJGbGFncywgV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIHNlbGVjdGlvbkNoYW5nZWRXaXRo
VG91Y2goc2VsZiwgcG9pbnQsIHRvdWNoLCBmbGFncyB8IGlubmVyRmxhZ3MsIGVycm9yKTsKLSAg
ICAgICAgaWYgKHRvdWNoICE9IFVJV0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQgJiYgdG91Y2ggIT0g
VUlXS1NlbGVjdGlvblRvdWNoTW92ZWQpCisgICAgX3BhZ2UtPnVwZGF0ZVNlbGVjdGlvbldpdGhU
b3VjaGVzKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9TZWxlY3Rpb25Ub3VjaCh0b3VjaCks
IGJhc2VJc1N0YXJ0LCBbc2VsZiwgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKSwgZmxhZ3Nd
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViS2l0OjpTZWxlY3Rpb25Ub3VjaCB0
b3VjaCwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+IGlubmVyRmxhZ3MsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBzZWxlY3Rpb25DaGFuZ2Vk
V2l0aFRvdWNoKHNlbGYsIHBvaW50LCB0b3VjaCwgdG9TZWxlY3Rpb25GbGFncyhmbGFncykgfCBp
bm5lckZsYWdzLCBlcnJvcik7CisgICAgICAgIGlmICh0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0b3Vj
aCkgIT0gVUlXS1NlbGVjdGlvblRvdWNoU3RhcnRlZCAmJiB0b1VJV0tTZWxlY3Rpb25Ub3VjaCh0
b3VjaCkgIT0gVUlXS1NlbGVjdGlvblRvdWNoTW92ZWQpCiAgICAgICAgICAgICBfdXNpbmdHZXN0
dXJlRm9yU2VsZWN0aW9uID0gTk87CiAgICAgfSk7CiB9CkBAIC0zOTE1LDkgKzM5MjUsOSBAQCAt
ICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OihDR1BvCiAtICh2b2lkKWNoYW5nZVNl
bGVjdGlvbldpdGhUb3VjaGVzRnJvbTooQ0dQb2ludClmcm9tIHRvOihDR1BvaW50KXRvIHdpdGhH
ZXN0dXJlOihVSVdLR2VzdHVyZVR5cGUpZ2VzdHVyZVR5cGUgd2l0aFN0YXRlOihVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGUpZ2VzdHVyZVN0YXRlCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVj
dGlvbiA9IFlFUzsKLSAgICBfcGFnZS0+c2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50
UG9pbnQoZnJvbSksIFdlYkNvcmU6OkludFBvaW50KHRvKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRvR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpKSwgW3NlbGZdKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVT
dGF0ZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgIF9wYWdlLT5zZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChmcm9t
KSwgV2ViQ29yZTo6SW50UG9pbnQodG8pLCB0b0dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKSwgdG9H
ZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSksIFtzZWxmLCBzdHJvbmdTZWxmID0g
cmV0YWluUHRyKHNlbGYpXShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYktpdDo6
R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFdlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBn
ZXN0dXJlU3RhdGUsIE9wdGlvblNldDxXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzPiBmbGFncywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIHNlbGVjdGlvbkNoYW5n
ZWRXaXRoR2VzdHVyZShzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxh
Z3MsIGVycm9yKTsKLSAgICAgICAgaWYgKGdlc3R1cmVTdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGVFbmRlZCB8fCBnZXN0dXJlU3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
Q2FuY2VsbGVkKQorICAgICAgICBpZiAodG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoZ2VzdHVy
ZVN0YXRlKSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCB8fCB0b1VJR2VzdHVyZVJl
Y29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUpID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNh
bmNlbGxlZCkKICAgICAgICAgICAgIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb24gPSBOTzsKICAg
ICB9KTsKIH0KQEAgLTY1MDksNyArNjUxOSw3IEBAIC0gKHZvaWQpX3NlbGVjdGlvbkNoYW5nZWQK
IAogLSAodm9pZClzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnQKIHsKLSAgICBfcGFnZS0+ZXh0ZW5k
U2VsZWN0aW9uKFdlYkNvcmU6OldvcmRHcmFudWxhcml0eSk7CisgICAgX3BhZ2UtPmV4dGVuZFNl
bGVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSk7CiB9CiAK
ICNpZiBFTkFCTEUoUExBVEZPUk1fRFJJVkVOX1RFWFRfQ0hFQ0tJTkcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHJldmlzaW9uIDI2
MTc2OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE0NCw3ICsxNDQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVh
ZFNlbGVjdGlvbkZyb21QYXN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Z2VzdHVyZUNhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3Ms
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXN0dXJlQ2FsbGJh
Y2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlw
ZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJlU3RhdGUsIE9wdGlvblNldDxTZWxlY3Rp
b25GbGFncz4gZmxhZ3MsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvIGNhbGxi
YWNrID0gbV9jYWxsYmFja3MudGFrZTxHZXN0dXJlQ2FsbGJhY2s+KGNhbGxiYWNrSUQpOwogICAg
IGlmICghY2FsbGJhY2spIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2VzdHVyZUNhbGxiYWNrKGNvbnN0CiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhS
ZXR1cm5WYWx1ZShwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgZmxhZ3MpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgdWludDMyX3QgZmxhZ3MsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaGVzQ2FsbGJhY2soY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50LCBTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBPcHRpb25TZXQ8
U2VsZWN0aW9uRmxhZ3M+IGZsYWdzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0
byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8VG91Y2hlc0NhbGxiYWNrPihjYWxsYmFja0lE
KTsKICAgICBpZiAoIWNhbGxiYWNrKSB7CkBAIC00MjgsMjEgKzQyOCwyMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGF5ZXJUcmVlQ29tbWl0Q29tcGxlCiAgICAgcGFnZUNsaWVudCgpLmxheWVyVHJl
ZUNvbW1pdENvbXBsZXRlKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoR2Vz
dHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5IGdyYW51bGFyaXR5LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0
YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdURjo6RnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQs
IEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVT
dGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBHZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZSwgT3B0aW9uU2V0PFdlYktpdDo6U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCks
IDAsIDAsIDAsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2libGUsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aEdlc3R1
cmUiX3MpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdp
dGhHZXN0dXJlKHBvaW50LCAodWludDMyX3QpZ3JhbnVsYXJpdHksIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBt
X3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RXaXRoR2VzdHVyZShwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QsIHVp
bnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50IHBvaW50LCBTZWxlY3Rpb25Ub3VjaCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgU2VsZWN0aW9uVG91Y2gsIE9w
dGlvblNldDxTZWxlY3Rpb25GbGFncz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNh
bGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9pbnQoKSwgMCwgMCwgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6VW5rbm93bik7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV2ViQ29yZTo6SW50UG9p
bnQoKSwgU2VsZWN0aW9uVG91Y2g6OlN0YXJ0ZWQsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUxMiw3ICs1MTIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChwb2ludCwgc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGdyYW51bGFyaXR5KSwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYmFja2dyb3VuZEFjdGl2
aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQiX3MpXSAoKSBtdXRhYmxlIHsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFRleHRXaXRo
R3JhbnVsYXJpdHlBdFBvaW50KHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgYmFja2dyb3VuZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9p
bnQiX3MpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0p
OwogfQpAQCAtNTI0LDcgKzUyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlv
bkF0Qm91bmQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24ocG9pbnQsIHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIHN0YXRpY19j
YXN0PHVpbnQzMl90PihkaXJlY3Rpb24pLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50
KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3Jv
dW5kQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uIl9zKV0g
KCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBncmFudWxhcml0eSwg
ZGlyZWN0aW9uLCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSwgW2NhbGxiYWNrRnVu
Y3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBiYWNrZ3JvdW5kQWN0aXZpdHkgPSBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5Ojpz
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uIl9zKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRpcmVjdGlvbikpLCBbY2Fs
bGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFi
bGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TW92ZVNlbGVj
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKGdyYW51bGFyaXR5LCBkaXJlY3Rpb24pLCBbY2Fs
bGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGJhY2tncm91bmRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdl
UHJveHk6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbiJfcyldICgpIG11dGFi
bGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC02MzAsMTAg
KzYzMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChwb2lu
dCwgcmVxdWVzdElEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXaXRoVHdvVG91
Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90LCB1aW50MzJf
dCwgdWludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIEdlc3R1cmVUeXBlIGdlc3R1
cmVUeXBlLCBHZXN0dXJlUmVjb2duaXplclN0YXRlIGdlc3R1cmVTdGF0ZSwgRnVuY3Rpb248dm9p
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0dXJlUmVjb2duaXpl
clN0YXRlLCBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdlYkNvcmU6OkludFBvaW50KCksIDAsIDAsIDAsIENh
bGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdl
YkNvcmU6OkludFBvaW50KCksIEdlc3R1cmVUeXBlOjpMb3VwZSwgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6UG9zc2libGUsIHsgfSwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRCZWNvbWVBCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlbmRTZWxl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2VsZWN0aW9uKHN0YXRpY19jYXN0
PHVpbnQzMl90PihncmFudWxhcml0eSkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTZWxlY3Rpb24oZ3JhbnVsYXJpdHkpLCBtX3dl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RXb3JkQmFja3dhcmQoKQpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVjdHNGb3JHcmFu
dWwKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNl
bGVjdGlvbk9mZnNldCJfcykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGdyYW51bGFyaXR5KSwgb2Zmc2V0LCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVjdHNGb3JHcmFu
dWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQoZ3JhbnVsYXJpdHksIG9mZnNldCwgY2FsbGJhY2tJ
RCksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZWN0c0F0
U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0
PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVJhbmdlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NUmFuZ2UubW0JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NUmFuZ2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCAtIChOU0FycmF5ICopdGV4dFJlY3RzCiAKIC0gKFdL
RE9NUmFuZ2UgKilyYW5nZUJ5RXhwYW5kaW5nVG9Xb3JkQm91bmRhcnlCeUNoYXJhY3RlcnM6KE5T
VUludGVnZXIpY2hhcmFjdGVycyBpbkRpcmVjdGlvbjooV0tET01SYW5nZURpcmVjdGlvbilkaXJl
Y3Rpb24KIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFuZ2VFeHBh
bmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9uID09IFdL
RE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDogX2ltcGwt
PnN0YXJ0UG9zaXRpb24oKSwgY2hhcmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFuZ2VEaXJl
Y3Rpb25Gb3J3YXJkID8gV2ViQ29yZTo6RGlyZWN0aW9uRm9yd2FyZCA6IFdlYkNvcmU6OkRpcmVj
dGlvbkJhY2t3YXJkKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG5ld1JhbmdlID0gcmFu
Z2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRhcnkoZGlyZWN0aW9u
ID09IFdLRE9NUmFuZ2VEaXJlY3Rpb25Gb3J3YXJkID8gIF9pbXBsLT5lbmRQb3NpdGlvbigpIDog
X2ltcGwtPnN0YXJ0UG9zaXRpb24oKSwgY2hhcmFjdGVycywgZGlyZWN0aW9uID09IFdLRE9NUmFu
Z2VEaXJlY3Rpb25Gb3J3YXJkID8gV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJk
IDogV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCk7CiAKICAgICByZXR1cm4g
W1tbV0tET01SYW5nZSBhbGxvY10gX2luaXRXaXRoSW1wbDpuZXdSYW5nZS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyNjE3NjgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE5LDcgKzE2MTksNyBA
QCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDCiAgICAgaWYgKGF1dG8q
IHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiB3ZWJQYWdlLT53ZWJH
TFBvbGljeUZvclVSTChtX2ZyYW1lLnB0cigpLCB1cmwpOwogCi0gICAgcmV0dXJuIFdlYkdMQWxs
b3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRp
b247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMTYyNyw3
ICsxNjI3LDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQwogICAg
IGlmIChhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gd2Vi
UGFnZS0+cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKG1fZnJhbWUucHRyKCksIHVybCk7CiAKLSAg
ICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVybiBXZWJHTExvYWRQb2xpY3k6
OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjYxNzY4KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNDksMTIgKzEwNDksMTIgQEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1
Z2luKFdlYgogI2lmIEVOQUJMRShXRUJHTCkgJiYgIVBMQVRGT1JNKE1BQykKIFdlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0
IFVSTCYpCiB7Ci0gICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gV2Vi
R0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25z
dCBVUkwmKQogewotICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CisgICAgcmV0dXJuIFdl
YkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDI2MTc2
OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk1LDEwICsxOTUsMTIgQEAgY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogZW51
bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNjZXNz
UmVzcG9uc2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50
OF90OworZW51bSBjbGFzcyBTZWxlY3Rpb25EaXJlY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFz
cyBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFu
c2l0aW9uIDogdWludDhfdDsKK2VudW0gY2xhc3MgVGV4dEdyYW51bGFyaXR5IDogdWludDhfdDsK
IGVudW0gY2xhc3MgV3JpdGluZ0RpcmVjdGlvbiA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBBdHRyaWJ1
dGVkU3RyaW5nOwpAQCAtNjg1LDE5ICs2ODcsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBibHVy
Rm9jdXNlZEVsZW1lbnQoKTsKICAgICB2b2lkIHJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uKENhbGxiYWNrSUQpOwotICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUs
IHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVt
ZW50LCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFy
dCwgQ2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCB1aW50MzJf
dCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCBDYWxsYmFja0lEKTsKLSAgICB2
b2lkIGV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSk7CisgICAgdm9pZCBzZWxl
Y3RXaXRoR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIEdlc3R1cmVUeXBlLCBHZXN0
dXJlUmVjb2duaXplclN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQs
IENhbGxiYWNrSUQpOworICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBTZWxlY3Rpb25Ub3VjaCwgYm9vbCBiYXNlSXNTdGFydCwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBzZWxlY3RXaXRoVHdvVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRvLCBHZXN0dXJlVHlwZSwg
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBleHRlbmRTZWxl
Y3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5KTsKICAgICB2b2lkIHNlbGVjdFdvcmRCYWNr
d2FyZCgpOwogICAgIHZvaWQgbW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2VsZWN0VGV4dFdpdGhHcmFu
dWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxh
cml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERp
cmVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1
aW50MzJfdCBkaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIG1vdmVTZWxlY3Rpb25BdEJv
dW5kYXJ5V2l0aERpcmVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgbW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgYmVnaW5TZWxlY3Rpb25JbkRpcmVj
dGlvbih1aW50MzJfdCBkaXJlY3Rpb24sIENhbGxiYWNrSUQpOworICAgIHZvaWQgYmVnaW5TZWxl
Y3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIENhbGxiYWNrSUQp
OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBSZXNwZWN0
U2VsZWN0aW9uQW5jaG9yLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMy
X3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2Fs
bGJhY2tJRCk7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3Vu
ZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwg
Ym9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKIAogICAg
IHZvaWQgcmVxdWVzdERpY3RhdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBs
YWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KTsKQEAgLTcyMiw3ICs3MjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25D
b250ZXh0KENhbGxiYWNrSUQpOwogICAgIHZvaWQgaGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2Rp
Zmllcj4sIHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAgICAgdm9pZCBoYW5kbGVTdHlsdXNTaW5nbGVU
YXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElEKTsK
LSAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVpbnQz
Ml90LCBpbnQzMl90LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFJlY3RzRm9yR3JhbnVsYXJp
dHlXaXRoU2VsZWN0aW9uT2Zmc2V0KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgaW50MzJfdCwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQo
aW50MzJfdCwgY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzdG9yZVNlbGVj
dGlvbkZvckFjY2Vzc2liaWxpdHkoYm9vbCk7CiAgICAgdm9pZCBzdGFydEF1dG9zY3JvbGxBdFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKQEAgLTEzNjUsNyArMTM2Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb21wbGV0ZVN5bnRoZXRpY0NsaWNrKFdlYkNvcmU6Ok5vZGUm
IG5vZGVSZXNwb25kaW5nVG9DbGljaywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgbG9jYXRp
b24sIE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4sIFdlYkNvcmU6OlN5bnRo
ZXRpY0NsaWNrVHlwZSwgV2ViQ29yZTo6UG9pbnRlcklEID0gV2ViQ29yZTo6bW91c2VQb2ludGVy
SUQpOwogICAgIHZvaWQgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYkNvcmU6Ok5vZGUqKTsKICAgICBXZWJDb3JlOjpWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZy
YW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxh
cml0eUF0UG9pbnQoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIHVp
bnQzMl90IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gcmFuZ2VGb3JHcmFudWxhcml0eUF0UG9pbnQo
V2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICB2
b2lkIHNldEZvY3VzZWRGcmFtZUJlZm9yZVNlbGVjdGluZ1RleHRBdExvY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBkaXNwYXRjaFN5bnRoZXRpY01vdXNlRXZlbnRz
Rm9yU2VsZWN0aW9uR2VzdHVyZShTZWxlY3Rpb25Ub3VjaCwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC02MywxOSArNjMsMTkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50
IHBvaW50KQogICAgIEluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0UG9zaXRpb24oV2ViQ29yZTo6
RmxvYXRQb2ludCBwb2ludCkKICAgICBCbHVyRm9jdXNlZEVsZW1lbnQoKQotICAgIFNlbGVjdFdp
dGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwg
dWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
LSAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwg
dWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCi0gICAgU2VsZWN0V2l0aFR3b1RvdWNoZXMoV2ViQ29yZTo6SW50UG9pbnQgZnJv
bSwgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBn
ZXN0dXJlU3RhdGUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEV4dGVuZFNl
bGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSkKKyAgICBTZWxlY3RXaXRoR2VzdHVyZShXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2Vz
dHVyZVR5cGUsIGVudW06dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2Vz
dHVyZVN0YXRlLCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTZWxlY3Rpb25Ub3Vj
aCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyAgICBTZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBmcm9tLCBXZWJD
b3JlOjpJbnRQb2ludCB0bywgZW51bTp1aW50OF90IFdlYktpdDo6R2VzdHVyZVR5cGUgZ2VzdHVy
ZVR5cGUsIGVudW06dWludDhfdCBXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVy
ZVN0YXRlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBFeHRlbmRTZWxlY3Rp
b24oZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKICAg
ICBTZWxlY3RXb3JkQmFja3dhcmQoKQogICAgIE1vdmVTZWxlY3Rpb25CeU9mZnNldChpbnQzMl90
IG9mZnNldCkgLT4gKCkgQXN5bmMKLSAgICBTZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2lu
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKLSAgICBTZWxlY3RQb3Np
dGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50
MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5jCi0gICAgTW92ZVNlbGVjdGlvbkF0Qm91bmRh
cnlXaXRoRGlyZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfdCBkaXJlY3Rpb24p
IC0+ICgpIEFzeW5jCisgICAgU2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkg
QXN5bmMKKyAgICBTZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdy
YW51bGFyaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KSAtPiAoKSBBc3luYwor
ICAgIE1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihlbnVtOnVpbnQ4X3QgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikgLT4gKCkgQXN5bmMKICAgICBTZWxlY3RQb3Np
dGlvbkF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dp
dGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5bmMKLSAgICBCZWdpblNlbGVjdGlvbkluRGlyZWN0
aW9uKHVpbnQzMl90IGRpcmVjdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisg
ICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0
aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGVudW06Ym9vbCBXZWJLaXQ6
OlJlc3BlY3RTZWxlY3Rpb25BbmNob3IgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50
QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorICAgIFVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5k
YXJ5KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJlcXVlc3REaWN0YXRpb25D
b250ZXh0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJlcGxhY2VEaWN0YXRl
ZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQogICAgIFJlcGxhY2VTZWxlY3Rl
ZFRleHQoU3RyaW5nIG9sZFRleHQsIFN0cmluZyBuZXdUZXh0KQpAQCAtMTA3LDcgKzEwNyw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEhhbmRsZVR3b0Zpbmdl
clRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIE9wdGlvblNldDxXZWJLaXQ6Oldl
YkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJzLCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgSGFu
ZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0
X3QgcmVxdWVzdElEKQogICAgIFNldEZvcmNlQWx3YXlzVXNlclNjYWxhYmxlKGJvb2wgdXNlclNj
YWxhYmxlKQotICAgIEdldFJlY3RzRm9yR3JhbnVsYXJpdHlXaXRoU2VsZWN0aW9uT2Zmc2V0KHVp
bnQzMl90IGdyYW51bGFyaXR5LCBpbnQzMl90IG9mZnNldCwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCisgICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQo
ZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgaW50MzJf
dCBvZmZzZXQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFJlY3RzQXRT
ZWxlY3Rpb25PZmZzZXRXaXRoVGV4dChpbnQzMl90IG9mZnNldCwgU3RyaW5nIHRleHQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJp
bGl0eShib29sIHNob3VsZFN0b3JlKQogICAgIFN0YXJ0QXV0b3Njcm9sbEF0UG9zaXRpb24oV2Vi
Q29yZTo6RmxvYXRQb2ludCBwb3NpdGlvbkluV2luZG93KQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2
MTc2OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQ
bGF0Zm9ybUVkaXRvclN0YXRlKEZyYQogICAgICAgICBlbmROb2RlSXNJbnNpZGVGaXhlZFBvc2l0
aW9uID0gc3RhcnROb2RlSXNJbnNpZGVGaXhlZFBvc2l0aW9uOwogICAgICAgICBwb3N0TGF5b3V0
RGF0YS5jYXJldFJlY3RBdEVuZCA9IHBvc3RMYXlvdXREYXRhLmNhcmV0UmVjdEF0U3RhcnQ7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtlIGludG8gYWNj
b3VudCB3cml0aW5nIGRpcmVjdGlvbi4KLSAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNl
QWxsb3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShzZWxlY3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJk
KTsKKyAgICAgICAgcG9zdExheW91dERhdGEuaXNSZXBsYWNlQWxsb3dlZCA9IHJlc3VsdC5pc0Nv
bnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24uc3RhcnQo
KSwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6
Rm9yd2FyZCk7CiAgICAgICAgIHBvc3RMYXlvdXREYXRhLndvcmRBdFNlbGVjdGlvbiA9IHBsYWlu
VGV4dEZvckNvbnRleHQod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5n
ZXQoKSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKICAgICAg
ICAgICAgIGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgcG9zdExh
eW91dERhdGEuY2hhcmFjdGVyQWZ0ZXJTZWxlY3Rpb24sIHBvc3RMYXlvdXREYXRhLmNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbiwgcG9zdExheW91dERhdGEudHdvQ2hhcmFjdGVyQmVmb3JlU2VsZWN0
aW9uKTsKQEAgLTMyMyw4ICszMjMsOCBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUoRnJhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY29tcHV0ZUVkaXRh
YmxlUm9vdEhhc0NvbnRlbnRBbmRQbGFpblRleHQoc2VsZWN0aW9uLCBwb3N0TGF5b3V0RGF0YSk7
Ci0gICAgICAgIHBvc3RMYXlvdXREYXRhLnNlbGVjdGlvblN0YXJ0SXNBdFBhcmFncmFwaEJvdW5k
YXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLCBU
ZXh0R3JhbnVsYXJpdHk6OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246
OkRpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICAgICAgcG9zdExheW91dERhdGEuc2VsZWN0aW9uRW5k
SXNBdFBhcmFncmFwaEJvdW5kYXJ5ID0gYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9u
LnZpc2libGVFbmQoKSwgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAgICAgcG9zdExheW91dERh
dGEuc2VsZWN0aW9uU3RhcnRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5kYXJ5T2ZHcmFu
dWxhcml0eShzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCksIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpOworICAgICAgICBw
b3N0TGF5b3V0RGF0YS5zZWxlY3Rpb25FbmRJc0F0UGFyYWdyYXBoQm91bmRhcnkgPSBhdEJvdW5k
YXJ5T2ZHcmFudWxhcml0eShzZWxlY3Rpb24udmlzaWJsZUVuZCgpLCBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEdyYW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAg
IH0KIH0KIApAQCAtNTQ5LDggKzU0OSw4IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U2VsZWN0aW9uQ29u
dGV4dChDYWxsYmEKICAgICBjb25zdCBpbnQgc2VsZWN0aW9uRXh0ZW5kZWRDb250ZXh0TGVuZ3Ro
ID0gMzUwOwogICAgIAogICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHRGb3JDb250
ZXh0KGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpOwot
ICAgIFN0cmluZyB0ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVk
QnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIERpcmVj
dGlvbkJhY2t3YXJkKS5nZXQoKSk7Ci0gICAgU3RyaW5nIHRleHRBZnRlciA9IHBsYWluVGV4dEZv
ckRpc3BsYXkocmFuZ2VFeHBhbmRlZEJ5Q2hhcmFjdGVyc0luRGlyZWN0aW9uQXRXb3JkQm91bmRh
cnkoZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZW5kKCksIHNlbGVjdGlvbkV4dGVuZGVk
Q29udGV4dExlbmd0aCwgRGlyZWN0aW9uRm9yd2FyZCkuZ2V0KCkpOworICAgIFN0cmluZyB0ZXh0
QmVmb3JlID0gcGxhaW5UZXh0Rm9yRGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5E
aXJlY3Rpb25BdFdvcmRCb3VuZGFyeShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpLCBzZWxlY3Rpb25FeHRlbmRlZENvbnRleHRMZW5ndGgsIFNlbGVjdGlvbkRpcmVjdGlvbjo6
QmFja3dhcmQpLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlz
cGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgc2VsZWN0aW9uRXh0ZW5kZWRDb250
ZXh0TGVuZ3RoLCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpLmdldCgpKTsKIAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0aW9uQ29udGV4dENhbGxiYWNrKHNlbGVj
dGVkVGV4dCwgdGV4dEJlZm9yZSwgdGV4dEFmdGVyLCBjYWxsYmFja0lEKSk7CiB9CkBAIC0xMzQz
LDcgKzEzNDMsNyBAQCBzdGF0aWMgSW50UG9pbnQgY29uc3RyYWluUG9pbnQoY29uc3QgSW50CiAg
ICAgcmV0dXJuIGNvbnN0cmFpbmVkUG9pbnQ7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0
aEdlc3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWlu
dDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgYm9vbCBpc0ludGVyYWN0
aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUg
Z2VzdHVyZVR5cGUsIEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgZ2VzdHVyZVN0YXRlLCBib29sIGlz
SW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBpZiAoc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRl
KSA9PSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpCZWdhbikKICAgICAgICAgc2V0Rm9jdXNlZEZy
YW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24ocG9pbnQpOwpAQCAtMTM1MiwxMSArMTM1
MiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBv
aW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAKICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IDAsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpH
ZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHsgfSwgY2Fs
bGJhY2tJRCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2U7Ci0gICAgU2VsZWN0aW9uRmxhZ3MgZmxhZ3MgPSBOb25lOworICAgIE9wdGlvblNldDxTZWxl
Y3Rpb25GbGFncz4gZmxhZ3M7CiAgICAgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB3a0dlc3R1cmVT
dGF0ZSA9IHN0YXRpY19jYXN0PEdlc3R1cmVSZWNvZ25pemVyU3RhdGU+KGdlc3R1cmVTdGF0ZSk7
CiAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxHZXN0dXJlVHlwZT4oZ2VzdHVyZVR5cGUpKSB7CiAg
ICAgY2FzZSBHZXN0dXJlVHlwZTo6UGhyYXNlQm91bmRhcnk6CkBAIC0xMzY5LDcgKzEzNjksNyBA
QCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIGlmIChw
b3NpdGlvbiA+IG1hcmtlZFJhbmdlLT5lbmRQb3NpdGlvbigpKQogICAgICAgICAgICAgcG9zaXRp
b24gPSBtYXJrZWRSYW5nZS0+ZW5kUG9zaXRpb24oKTsKICAgICAgICAgaWYgKHdrR2VzdHVyZVN0
YXRlICE9IEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkJlZ2FuKQotICAgICAgICAgICAgZmxhZ3Mg
PSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFya2VkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwg
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSkgIT0gZGlzdGFuY2VCZXR3ZWVu
UG9zaXRpb25zKG1hcmtlZFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBvc2l0aW9uKSA/IFBocmFz
ZUJvdW5kYXJ5Q2hhbmdlZCA6IE5vbmU7CisgICAgICAgICAgICBmbGFncyA9IGRpc3RhbmNlQmV0
d2VlblBvc2l0aW9ucyhtYXJrZWRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSAhPSBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMobWFy
a2VkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24pID8gUGhyYXNlQm91bmRhcnlDaGFu
Z2VkIDogT3B0aW9uU2V0PFNlbGVjdGlvbkZsYWdzPiB7IH07CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGZsYWdzID0gUGhyYXNlQm91bmRhcnlDaGFuZ2VkOwogICAgICAgICByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7CkBAIC0x
NDQzLDcgKzE0NDMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IElu
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91Ymxl
VGFwOgotICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVH
cmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxhcml0eSwg
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAgICAgICAgLy8gRG91YmxlLXRh
cCBhdCBlbmQgb2YgbGluZSBvbmx5IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUuCiAgICAg
ICAgICAgICAvLyBUaGlzIGhlbHBzIHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGluZyBhdCBl
bmRzIG9mIGxpbmVzLAogICAgICAgICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3VtZW50cy4K
QEAgLTE0NTQsMTcgKzE0NTQsMTcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShj
b25zdCBJbgogCiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwOgogICAg
ICAgICAvLyBTaW5nbGUgdGFwIHdpdGggdHdvIGZpbmdlcnMgc2VsZWN0cyB0aGUgZW50aXJlIHBh
cmFncmFwaC4KLSAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICAg
ICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRH
cmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2Vy
VHJpcGxlVGFwOgotICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24s
IExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpIHsKKyAgICAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkgewogICAgICAgICAgICAgLy8gVHJp
cGxlLXRhcCBhdCBlbmQgb2YgbGluZSBvbmx5IHBsYWNlcyBpbnNlcnRpb24gcG9pbnQgdGhlcmUu
CiAgICAgICAgICAgICAvLyBUaGlzIGhlbHBzIHRvIGdldCB0aGUgY2FsbG91dCBmb3IgcGFzdGlu
ZyBhdCBlbmRzIG9mIGxpbmVzLAogICAgICAgICAgICAgLy8gcGFyYWdyYXBocywgYW5kIGRvY3Vt
ZW50cy4KICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSwgcG9zaXRpb24sIHBvc2l0aW9uKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5n
ZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgICAgICAgICAgcmFuZ2UgPSBlbmNsb3Np
bmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdy
YXBoR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTE0NzMsNyArMTQ3Myw3IEBAIHZvaWQgV2ViUGFnZTo6
c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW4KICAgICBpZiAocmFuZ2UpCiAgICAgICAgIGZyYW1l
LnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIHBvc2l0aW9uLmFmZmlu
aXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBV
c2VyVHJpZ2dlcmVkKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVy
ZUNhbGxiYWNrKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZmxhZ3MpLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUs
IGZsYWdzLCBjYWxsYmFja0lEKSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9y
UG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYg
cG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMsIGJvb2wgYmFzZUlzU3RhcnQpCkBAIC0xNTI3LDI3
ICsxNTI3LDI3IEBAIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3QKIAog
c3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1l
KiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFy
dCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBTZWxlY3Rpb25EaXJlY3Rp
b24gc2FtZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gRGlyZWN0aW9uRm9yd2FyZCA6IERpcmVj
dGlvbkJhY2t3YXJkOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVjdGlvbiA9
IGJhc2VJc1N0YXJ0ID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3YXJkOworICAg
IFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQgOiBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkOworICAg
IFNlbGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gU2Vs
ZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gYmFzZSA9IGJhc2VJc1N0YXJ0ID8gZnJhbWUtPnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnZpc2libGVFbmQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gZXh0ZW50ID0gYmFzZUlz
U3RhcnQgPyBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpIDogZnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBpbml0aWFsRXh0ZW50ID0gcG9zaXRpb247CiAKLSAgICBpZiAoYXRCb3VuZGFyeU9m
R3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7Cisg
ICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpX
b3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3
b3JkIGJvdW5kYXJ5LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFdvcmRHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CisgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3Vu
ZGFyeSBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLiBOdWRnZSB0aGUgc2VsZWN0aW9uIHRvIGEgY2hh
cmFjdGVyIGJlZm9yZSBwcm9jZWVkaW5nLgogICAgICAgICBleHRlbnQgPSBiYXNlSXNTdGFydCA/
IGV4dGVudC5wcmV2aW91cygpIDogZXh0ZW50Lm5leHQoKTsKICAgICB9CiAKICAgICAvLyBFeHRl
bmQgdG8gdGhlIGJvdW5kYXJ5IG9mIHRoZSB3b3JkLgogCi0gICAgVmlzaWJsZVBvc2l0aW9uIHdv
cmRCb3VuZGFyeSA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwg
V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gd29y
ZEJvdW5kYXJ5ID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBU
ZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbik7CiAgICAgaWYg
KHdvcmRCb3VuZGFyeS5pc05vdE51bGwoKQotICAgICAgICAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxh
cml0eSh3b3JkQm91bmRhcnksIFdvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKKyAgICAg
ICAgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkod29yZEJvdW5kYXJ5LCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKICAgICAgICAgJiYgaW5pdGlhbEV4
dGVudCAhPSB3b3JkQm91bmRhcnkpIHsKICAgICAgICAgZXh0ZW50ID0gd29yZEJvdW5kYXJ5Owog
ICAgICAgICByZXR1cm4gKGJhc2UgPCBleHRlbnQpID8gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRv
Y3VtZW50KCksIGJhc2UsIGV4dGVudCkgOiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQo
KSwgZXh0ZW50LCBiYXNlKTsKQEAgLTE1NTgsMTAgKzE1NTgsMTAgQEAgc3RhdGljIFJlZlB0cjxS
YW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeQogCiAgICAgLy8gSWYgdGhpcyBpcyB3aGVyZSB0aGUg
ZXh0ZW50IHdhcyBpbml0aWFsbHksIHRoZW4gaXRlcmF0ZSBpbiB0aGUgb3RoZXIgZGlyZWN0aW9u
IGluIHRoZSBkb2N1bWVudCB1bnRpbCB3ZSBoaXQgdGhlIG5leHQgd29yZC4KICAgICB3aGlsZSAo
ZXh0ZW50LmlzTm90TnVsbCgpCi0gICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShl
eHRlbnQsIFdvcmRHcmFudWxhcml0eSwgc2FtZURpcmVjdGlvbikKKyAgICAgICAgJiYgIWF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHksIHNhbWVEaXJlY3Rpb24pCiAgICAgICAgICYmIGV4dGVudCAhPSBiYXNlCi0gICAgICAgICYm
ICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIExpbmVHcmFudWxhcml0eSwgc2FtZURp
cmVjdGlvbikKLSAgICAgICAgJiYgIWF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgTGlu
ZUdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKKyAgICAgICAgJiYgIWF0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHks
IHNhbWVEaXJlY3Rpb24pCisgICAgICAgICYmICFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRl
bnQsIFRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikp
IHsKICAgICAgICAgZXh0ZW50ID0gYmFzZUlzU3RhcnQgPyBleHRlbnQubmV4dCgpIDogZXh0ZW50
LnByZXZpb3VzKCk7CiAgICAgfQogCkBAIC0xNjc3LDIxICsxNjc3LDIwIEBAIHZvaWQgV2ViUGFn
ZTo6ZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW4KICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZTo6
dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCB0b3VjaGVzLCBib29sIGJhc2VJc1N0YXJ0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgU2VsZWN0aW9uVG91Y2ggc2VsZWN0aW9uVG91Y2gsIGJvb2wgYmFzZUlzU3RhcnQsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIEludFBvaW50IHBvaW50SW5Eb2N1
bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKICAgICBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChwb2lu
dEluRG9jdW1lbnQpOwogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgdG91Y2hlcywg
MCwgY2FsbGJhY2tJRCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRv
dWNoZXNDYWxsYmFjayhwb2ludCwgc2VsZWN0aW9uVG91Y2gsIHsgfSwgY2FsbGJhY2tJRCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBW
aXNpYmxlUG9zaXRpb24gcmVzdWx0OwotICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdzID0gTm9uZTsK
KyAgICBPcHRpb25TZXQ8U2VsZWN0aW9uRmxhZ3M+IGZsYWdzOwogCi0gICAgYXV0byBzZWxlY3Rp
b25Ub3VjaCA9IHN0YXRpY19jYXN0PFNlbGVjdGlvblRvdWNoPih0b3VjaGVzKTsKICAgICBpZiAo
c2hvdWxkRGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c1doZW5Nb2RpZnlpbmdTZWxlY3Rpb24o
KSkKICAgICAgICAgZGlzcGF0Y2hTeW50aGV0aWNNb3VzZUV2ZW50c0ZvclNlbGVjdGlvbkdlc3R1
cmUoc2VsZWN0aW9uVG91Y2gsIHBvaW50KTsKIApAQCAtMTcxMCwxMSArMTcwOSwxMSBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdGb3J3YXJkOgotICAgICAgICByYW5n
ZSA9IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJhbWUsIHBvc2l0aW9uLCBiYXNl
SXNTdGFydCwgRGlyZWN0aW9uRm9yd2FyZCk7CisgICAgICAgIHJhbmdlID0gcmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKCZmcmFtZSwgcG9zaXRpb24sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rp
b25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2Fz
ZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdCYWNrd2FyZDoKLSAgICAgICAgcmFuZ2UgPSBy
YW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3Rh
cnQsIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICAgICAgcmFuZ2UgPSByYW5nZUF0V29yZEJvdW5k
YXJ5Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRp
cmVjdGlvbjo6QmFja3dhcmQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU2VsZWN0aW9u
VG91Y2g6Ok1vdmVkOgpAQCAtMTcyNCwxMCArMTcyMywxMCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzCiAgICAgaWYgKHJhbmdlKQogICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgp
LCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRy
aWdnZXJlZCk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxs
YmFjayhwb2ludCwgdG91Y2hlcywgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFjayhwb2ludCwgc2VsZWN0aW9uVG91Y2gs
IGZsYWdzLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1Rv
dWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiB0bywgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoVHdvVG91Y2hlcyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZnJvbSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRv
LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBnZXN0dXJl
U3RhdGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBmcm9tUG9zaXRpb24gPSBmcmFtZS52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFt
ZS52aWV3KCktPnJvb3RWaWV3VG9Db250ZW50cyhmcm9tKSk7CkBAIC0xNzQyLDE0ICsxNzQxLDE0
IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QKICAgICB9CiAKICAg
ICAvLyBXZSBjYW4gdXNlIHRoZSBzYW1lIGNhbGxiYWNrIGZvciB0aGUgZ2VzdHVyZXMgd2l0aCBv
bmUgcG9pbnQuCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJh
Y2soZnJvbSwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgMCwgY2FsbGJhY2tJRCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKGZyb20sIGdlc3R1
cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHsgfSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmV4dGVuZFNlbGVjdGlvbih1aW50MzJfdCBncmFudWxhcml0eSkKK3ZvaWQgV2ViUGFnZTo6
ZXh0ZW5kU2VsZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsK
ICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwotICAgIC8vIEZvciB0aGUgbW9tZW50IHdlIGhhbmRsZSBvbmx5IFdvcmRHcmFu
dWxhcml0eS4KLSAgICBpZiAoZ3JhbnVsYXJpdHkgIT0gV29yZEdyYW51bGFyaXR5IHx8ICFmcmFt
ZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpCisgICAgLy8gRm9yIHRoZSBtb21lbnQgd2UgaGFuZGxl
IG9ubHkgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHkuCisgICAgaWYgKGdyYW51bGFy
aXR5ICE9IFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rp
b24oKS5pc0NhcmV0KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CkBAIC0xNzky
LDcgKzE3OTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdvcmRCYWNrd2FyZCgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRp
b24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgV29yZEdy
YW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFj
a3dhcmQpOwogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHN0YXJ0UG9zaXRp
b24gIT0gcG9zaXRpb24pCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwgcG9zaXRp
b24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiB9CkBAIC0xODA0LDEwICsx
ODAzLDEwIEBAIHZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KGludDMKICAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmVuZCgpOwogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBEaXJl
Y3Rpb25CYWNrd2FyZCA6IERpcmVjdGlvbkZvcndhcmQ7CisgICAgU2VsZWN0aW9uRGlyZWN0aW9u
IGRpcmVjdGlvbiA9IG9mZnNldCA8IDAgPyBTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkIDog
U2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
biA9IHN0YXJ0UG9zaXRpb247CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhYnMob2Zmc2V0KTsg
KytpKSB7Ci0gICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkocG9zaXRpb24sIENoYXJhY3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOworICAgICAg
ICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9u
LCBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5LCBkaXJlY3Rpb24pOwogICAg
ICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBA
IC0xOTQzLDcgKzE5NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92
ZVNlCiAgICAgcmVwbHkoV1RGTW92ZShyZWN0c1RvQXZvaWRJblJvb3RWaWV3Q29vcmRpbmF0ZXMp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpnZXRSZWN0c0ZvckdyYW51bGFyaXR5V2l0aFNlbGVjdGlv
bk9mZnNldCh1aW50MzJfdCBncmFudWxhcml0eSwgaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxl
Y3Rpb25PZmZzZXQoV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBpbnQzMl90
IG9mZnNldCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIEZyYW1lJiBmcmFtZSA9IG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBtX3N0b3JlZFNlbGVjdGlvbkZvckFjY2Vzc2liaWxpdHku
aXNOb25lKCkgPyBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSA6IG1fc3RvcmVkU2VsZWN0
aW9uRm9yQWNjZXNzaWJpbGl0eTsKQEAgLTE5NTUsOSArMTk1NCw5IEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGgKICAgICB9CiAKICAgICBhdXRvIHBvc2l0aW9uID0g
dmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KHNlbGVjdGlvblN0YXJ0LCBvZmZz
ZXQpOwotICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gRGly
ZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3YXJkOworICAgIFNlbGVjdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24gPSBvZmZzZXQgPCAwID8gU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCA6
IFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZDsKIAotICAgIGF1dG8gcmFuZ2UgPSBlbmNsb3Np
bmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpLCBkaXJlY3Rpb24pOworICAgIGF1dG8gcmFuZ2Ug
PSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIGdyYW51bGFyaXR5LCBk
aXJlY3Rpb24pOwogICAgIGlmICghcmFuZ2UgfHwgcmFuZ2UtPmNvbGxhcHNlZCgpKSB7CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VsZWN0aW9uUmVjdHNDYWxsYmFjayh7
IH0sIGNhbGxiYWNrSUQpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA0OCw1MiArMjA0Nyw1MiBA
QCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlX
aXRoRGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50
LCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKIAogICAgIGlmIChwb3NpdGlvbi5p
c05vdE51bGwoKSkgewotICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlP
ZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJp
dHk+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rp
b24pKTsKKyAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShwb3NpdGlvbiwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3Np
dGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVj
dGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0
aW9uKS5wdHIoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJl
Y3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGRpcmVjdGlvbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjptb3Zl
U2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICAKICAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKSB7
Ci0gICAgICAgIGJvb2wgaXNGb3J3YXJkID0gKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJk
IHx8IGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodCk7CisgICAgICAgIGJvb2wgaXNGb3J3YXJk
ID0gKGRpcmVjdGlvbiA9PSBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQgfHwgZGlyZWN0aW9u
ID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6UmlnaHQpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb24gPSAoaXNGb3J3YXJkKSA/IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZp
c2libGVFbmQoKSA6IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgp
OwotICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk+KGdyYW51bGFy
aXR5KSwgc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihkaXJlY3Rpb24pKTsKKyAgICAg
ICAgcG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShwb3NpdGlv
biwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbik7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51
bGwoKSkKICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFu
Z2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwg
aXNGb3J3YXJkPyBVUFNUUkVBTSA6IERPV05TVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICB9CiAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpyYW5nZUZvckdy
YW51bGFyaXR5QXRQb2ludChGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCkKK1JlZlB0cjxSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0UG9p
bnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50KQogewogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3Np
dGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKLSAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVsYXJpdHkpKSB7Ci0g
ICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKKyAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7
CisgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAg
ICByYW5nZSA9IG1ha2VSYW5nZShwb3NpdGlvbiwgcG9zaXRpb24pOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6V29y
ZEdyYW51bGFyaXR5OgogICAgICAgICByYW5nZSA9IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3Np
dGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VudGVuY2VHcmFudWxhcml0eToKLSAg
ICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFNl
bnRlbmNlR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpTZW50ZW5jZUdyYW51bGFyaXR5OgorICAgICAgICByYW5nZSA9IGVuY2xvc2luZ1Rl
eHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5jZUdy
YW51bGFyaXR5LCBTZWxlY3Rpb25EaXJlY3Rpb246OkZvcndhcmQpOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBhcmFncmFwaEdyYW51bGFyaXR5OgotICAgICAgICByYW5nZSA9IGVuY2xvc2lu
Z1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERp
cmVjdGlvbkZvcndhcmQpOworICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFu
dWxhcml0eToKKyAgICAgICAgcmFuZ2UgPSBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoR3JhbnVsYXJpdHksIFNlbGVjdGlv
bkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRG9jdW1lbnRH
cmFudWxhcml0eToKKyAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0
eToKICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHdoeSB0aGlzIG11dGF0ZXMgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uIGFuZCByZXR1cm5zIG51bGwuCiAgICAgICAgIGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdEFsbCgpOwogICAgICAgICBicmVhazsKQEAgLTIxMTgsNyArMjExNyw3IEBA
IHZvaWQgV2ViUGFnZTo6c2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWMKICAgICAgICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJhbWUocmVzdWx0LmlubmVyTm9kZUZyYW1l
KCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJpdHlBdFBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlOjpzZWxlY3RUZXh0V2l0aEdy
YW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6
OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3Vz
ZWRFbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgc2V0Rm9jdXNlZEZyYW1lQmVmb3JlU2VsZWN0aW5nVGV4dEF0TG9jYXRpb24ocG9p
bnQpOwogCkBAIC0yMTMwLDEzICsyMTI5LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0VGV4dFdp
dGhHcmFudWxhcml0eUEKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odWludDMyX3QgZGlyZWN0aW9uLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24o
V2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogewotICAgIG1fc2VsZWN0aW9uQW5jaG9yID0gKHN0YXRpY19jYXN0PFNlbGVjdGlvbkRp
cmVjdGlvbj4oZGlyZWN0aW9uKSA9PSBEaXJlY3Rpb25MZWZ0KSA/IFN0YXJ0IDogRW5kOworICAg
IG1fc2VsZWN0aW9uQW5jaG9yID0gZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVm
dCA/IFN0YXJ0IDogRW5kOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWdu
ZWRDYWxsYmFjayhtX3NlbGVjdGlvbkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQordm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFy
eShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludChmcmFtZSwgcG9pbnQs
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpOwpAQCAtMjIzMiw3ICsyMjMxLDcgQEAg
dm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDYQogICAgICAgICBWaXNpYmxl
UG9zaXRpb24gY3VycmVudFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICAgICAgVmlzaWJs
ZVBvc2l0aW9uIGxhc3RQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkaWN0YXRpb25Db250ZXh0V29yZENvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRh
cnlPZkdyYW51bGFyaXR5KGxhc3RQb3NpdGlvbiwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25C
YWNrd2FyZCkpOworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc3RhcnRPZldvcmQocG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkobGFzdFBvc2l0aW9uLCBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNrd2FyZCkpOwog
ICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKQEAg
LTIyNDYsNyArMjI0NSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQo
Q2EKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnRQb3NpdGlvbiA9IGVuZFBvc2l0aW9u
OwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gbGFzdFBvc2l0aW9uID0gZW5kUG9zaXRpb247CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWN0YXRpb25Db250ZXh0V29yZENvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IGVuZE9mV29yZChwb3NpdGlv
bk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShsYXN0UG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uRm9yd2FyZCkpOworICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gZW5k
T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGxhc3RQb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9y
d2FyZCkpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1cnJlbnRQb3Np
dGlvbjsKQEAgLTI0MzIsNyArMjQzMSw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVj
dGlvbkludGVybmEKICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKICAgICAgICAgZnJhbWUu
ZWRpdG9yKCkuaW5zZXJ0VGV4dChjb3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0eSgp
ID8gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24p
OwogICAgIGVsc2UgaWYgKG9yaWdpbmFsVGV4dC5sZW5ndGgoKSkKLSAgICAgICAgZnJhbWUuZWRp
dG9yKCkuZGVsZXRlV2l0aERpcmVjdGlvbihEaXJlY3Rpb25CYWNrd2FyZCwgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuZGVsZXRlV2l0
aERpcmVjdGlvbihTZWxlY3Rpb25EaXJlY3Rpb246OkJhY2t3YXJkLCBUZXh0R3JhbnVsYXJpdHk6
OkNoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTI0NzcsNyArMjQ3Niw3IEBAIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBXZWJQYWdl
OjphdXRvY28KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW5Db250ZXh0
V29yZENvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGV4dEJlZm9yZS5sZW5n
dGgoKSA+PSBtaW5Db250ZXh0TGVuZ2h0KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9zaXRpb25PZk5l
eHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHks
IERpcmVjdGlvbkJhY2t3YXJkKSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNQb3NpdGlvbiA9
IHN0YXJ0T2ZXb3JkKHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQ
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQpKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgU3Ry
aW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0Rm9yQ29udGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBjdXJyZW50UG9zaXRpb24pLnB0cigpKTsK
QEAgLTI0ODgsMTUgKzI0ODcsMTUgQEAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IFdlYlBhZ2U6
OmF1dG9jbwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5p
c05vdE51bGwoKSAmJiBjdXJyZW50UG9zaXRpb24gIT0gc3RhcnRQb3NpdGlvbikgewogICAgICAg
ICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRGb3JDb250ZXh0KFJhbmdlOjpjcmVh
dGUoKmZyYW1lLmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikucHRy
KCkpOwotICAgICAgICAgICAgICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50
UG9zaXRpb24sIFBhcmFncmFwaEdyYW51bGFyaXR5LCBEaXJlY3Rpb25CYWNrd2FyZCkpCisgICAg
ICAgICAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwg
VGV4dEdyYW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBtYWtlU3Ry
aW5nKCJcbiAiX3MsIGNvbnRleHRCZWZvcmUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGVuZFBvc2l0aW9uICE9IGVuZE9mRWRpdGFibGVDb250ZW50KGVuZFBvc2l0
aW9uKSkgewogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbjsKLSAgICAg
ICAgICAgIGlmICghYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZW5kUG9zaXRpb24sIFdvcmRHcmFu
dWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkgJiYgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5
KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKQotICAgICAg
ICAgICAgICAgIG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOworICAg
ICAgICAgICAgaWYgKCFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgVGV4dEdy
YW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCkg
JiYgd2l0aGluVGV4dFVuaXRPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBUZXh0R3JhbnVsYXJp
dHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKSkKKyAgICAg
ICAgICAgICAgICBuZXh0UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxh
cml0eShlbmRQb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVj
dGlvbkRpcmVjdGlvbjo6Rm9yd2FyZCk7CiAgICAgICAgICAgICBpZiAobmV4dFBvc2l0aW9uLmlz
Tm90TnVsbCgpKQogICAgICAgICAgICAgICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dEZvckNv
bnRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIG5leHRQ
b3NpdGlvbikucHRyKCkpOwogICAgICAgICB9CkBAIC0yNjMwLDkgKzI2MjksOSBAQCBzdGF0aWMg
dm9pZCBkYXRhRGV0ZWN0b3JMaW5rUG9zaXRpb25JbmZvCiAgICAgYXV0byBsaW5rUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGVsZW1lbnQuZG9jdW1lbnQoKSk7CiAgICAgbGlua1JhbmdlLT5zZWxlY3RO
b2RlQ29udGVudHMoZWxlbWVudCk7CiAgICAgaW5mby50ZXh0QmVmb3JlID0gcGxhaW5UZXh0Rm9y
RGlzcGxheShyYW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFy
eShsaW5rUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwKLSAgICAgICAgZGF0YURldGVjdGlvbkV4dGVu
ZGVkQ29udGV4dExlbmd0aCwgRGlyZWN0aW9uQmFja3dhcmQpLmdldCgpKTsKKyAgICAgICAgZGF0
YURldGVjdGlvbkV4dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpCYWNr
d2FyZCkuZ2V0KCkpOwogICAgIGluZm8udGV4dEFmdGVyID0gcGxhaW5UZXh0Rm9yRGlzcGxheShy
YW5nZUV4cGFuZGVkQnlDaGFyYWN0ZXJzSW5EaXJlY3Rpb25BdFdvcmRCb3VuZGFyeShsaW5rUmFu
Z2UtPmVuZFBvc2l0aW9uKCksCi0gICAgICAgIGRhdGFEZXRlY3Rpb25FeHRlbmRlZENvbnRleHRM
ZW5ndGgsIERpcmVjdGlvbkZvcndhcmQpLmdldCgpKTsKKyAgICAgICAgZGF0YURldGVjdGlvbkV4
dGVuZGVkQ29udGV4dExlbmd0aCwgU2VsZWN0aW9uRGlyZWN0aW9uOjpGb3J3YXJkKS5nZXQoKSk7
CiB9CiAjZW5kaWYKIApAQCAtNDA2OSw3ICs0MDY4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biBtb3ZlQnlHcmFudWxhcml0eQogewogICAgIEFTU0VSVChncmFudWxhcml0eUNvdW50KTsKICAg
ICBBU1NFUlQocG9zaXRpb24uaXNOb3ROdWxsKCkpOwotICAgIGJvb2wgYmFja3dhcmRzID0gZGly
ZWN0aW9uID09IERpcmVjdGlvbkJhY2t3YXJkOworICAgIGJvb2wgYmFja3dhcmRzID0gZGlyZWN0
aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQ7CiAgICAgYXV0byBmYXJ0aGVzdFBv
c2l0aW9uSW5EaXJlY3Rpb24gPSBiYWNrd2FyZHMgPyBzdGFydE9mRWRpdGFibGVDb250ZW50KHBv
c2l0aW9uKSA6IGVuZE9mRWRpdGFibGVDb250ZW50KHBvc2l0aW9uKTsKICAgICBpZiAocG9zaXRp
b24gPT0gZmFydGhlc3RQb3NpdGlvbkluRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gYmFja3dh
cmRzID8gc3RhcnRPZldvcmQocG9zaXRpb24pIDogZW5kT2ZXb3JkKHBvc2l0aW9uKTsKQEAgLTQw
ODMsOCArNDA4Miw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbW92ZUJ5R3JhbnVsYXJpdHkK
ICAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgZ3Jh
bnVsYXJpdHksIGRpcmVjdGlvbikpCiAgICAgICAgICAgICAtLWdyYW51bGFyaXR5Q291bnQ7CiAg
ICAgfSB3aGlsZSAoZ3JhbnVsYXJpdHlDb3VudCk7Ci0gICAgaWYgKGdyYW51bGFyaXR5ID09IFNl
bnRlbmNlR3JhbnVsYXJpdHkpIHsKLSAgICAgICAgQVNTRVJUKGF0Qm91bmRhcnlPZkdyYW51bGFy
aXR5KGN1cnJlbnRQb3NpdGlvbiwgU2VudGVuY2VHcmFudWxhcml0eSwgZGlyZWN0aW9uKSk7Cisg
ICAgaWYgKGdyYW51bGFyaXR5ID09IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0
eSkgeworICAgICAgICBBU1NFUlQoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0
aW9uLCBUZXh0R3JhbnVsYXJpdHk6OlNlbnRlbmNlR3JhbnVsYXJpdHksIGRpcmVjdGlvbikpOwog
ICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogICAgIH0KICAgICAvLyBOb3RlIHRoYXQg
dGhpcyByb3VuZHMgdG8gdGhlIG5lYXJlc3Qgd29yZCwgd2hpY2ggbWF5IGNyb3NzIGEgbGluZSBi
b3VuZGFyeSB3aGVuIHVzaW5nIGxpbmUgZ3JhbnVsYXJpdHkuCkBAIC00MTk3LDggKzQxOTYsOCBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250CiAgICAgVmlzaWJsZVBv
c2l0aW9uIGNvbnRleHRBZnRlckVuZDsKICAgICBhdXRvIGNvbXBvc2l0aW9uUmFuZ2UgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpOwogICAgIGlmIChyZXF1ZXN0LmdyYW51bGFy
aXR5Q291bnQpIHsKLSAgICAgICAgY29udGV4dEJlZm9yZVN0YXJ0ID0gbW92ZUJ5R3JhbnVsYXJp
dHlSZXNwZWN0aW5nV29yZEJvdW5kYXJ5KHJhbmdlT2ZJbnRlcmVzdFN0YXJ0LCByZXF1ZXN0LnN1
cnJvdW5kaW5nR3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9u
QmFja3dhcmQpOwotICAgICAgICBjb250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0eVJl
c3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJvdW5k
aW5nR3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgRGlyZWN0aW9uRm9yd2Fy
ZCk7CisgICAgICAgIGNvbnRleHRCZWZvcmVTdGFydCA9IG1vdmVCeUdyYW51bGFyaXR5UmVzcGVj
dGluZ1dvcmRCb3VuZGFyeShyYW5nZU9mSW50ZXJlc3RTdGFydCwgcmVxdWVzdC5zdXJyb3VuZGlu
Z0dyYW51bGFyaXR5LCByZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQsIFNlbGVjdGlvbkRpcmVjdGlv
bjo6QmFja3dhcmQpOworICAgICAgICBjb250ZXh0QWZ0ZXJFbmQgPSBtb3ZlQnlHcmFudWxhcml0
eVJlc3BlY3RpbmdXb3JkQm91bmRhcnkocmFuZ2VPZkludGVyZXN0RW5kLCByZXF1ZXN0LnN1cnJv
dW5kaW5nR3JhbnVsYXJpdHksIHJlcXVlc3QuZ3JhbnVsYXJpdHlDb3VudCwgU2VsZWN0aW9uRGly
ZWN0aW9uOjpGb3J3YXJkKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb250ZXh0QmVmb3JlU3Rh
cnQgPSByYW5nZU9mSW50ZXJlc3RTdGFydDsKICAgICAgICAgY29udGV4dEFmdGVyRW5kID0gcmFu
Z2VPZkludGVyZXN0RW5kOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KQEAgLTc3MywyNCArNzc0LDE4
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZGcm9tUERGRG9jdW0KIH0KIAogI2lmIEVO
QUJMRShXRUJHTCkKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGlj
eUZvclVSTChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgdWludDMyX3QgcG9saWN5UmVzdWx0ID0gMDsKLQotICAgIGlmIChzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1cmwpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVzdWx0
KSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGljeVJl
c3VsdCk7Ci0KLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9hZFBv
bGljeSBwb2xpY3lSZXN1bHQgPSBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTCh1
cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9s
aWN5UmVzdWx0KSk7CisgICAgcmV0dXJuIHBvbGljeVJlc3VsdDsKIH0KIAotV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIHVpbnQzMl90IHBvbGljeVJlc3VsdCA9IDA7Ci0KLSAgICBpZiAoc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKHVybCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6UmVwbHkocG9saWN5UmVz
dWx0KSkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJHTExvYWRQb2xpY3k+KHBvbGlj
eVJlc3VsdCk7Ci0KLSAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOworICAgIFdlYkdMTG9h
ZFBvbGljeSBwb2xpY3lSZXN1bHQgPSBXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlv
bjsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwodXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMOjpSZXBseShwb2xpY3lSZXN1bHQpKTsKKyAgICByZXR1cm4gcG9saWN5UmVzdWx0Owog
fQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNzY4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgZW51bSBz
ZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBhZ2dyZXNzaXZlbHlFeHBhbmRT
ZWxlY3Rpb25Ub1dvcmRDb250YWluaW5nQ2FyZXRTZWxlY3Rpb25dKToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAodG9UZXh0R3JhbnVsYXJpdHkpOgor
ICAgICAgICAodG9TZWxlY3Rpb25EaXJlY3Rpb24pOgorCiAyMDIwLTA1LTE0ICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgZGVhZCBkaWN0
YXRpb24gY29kZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00ODQsNyArNDg0LDcgQEAgLSAodm9pZClhZ2dyZXNzaXZlbHlFeHBhbmRTZWxlY3Rp
b25Ub1dvcgogCiAgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBoYWNrIHVudGlsIHdlIGdldCB0
aGUgaW1wcm92ZW1lbnRzCiAgICAgLy8gSSdtIHdvcmtpbmcgb24gZm9yIFJUTCBzZWxlY3Rpb24u
Ci0gICAgaWYgKGZyYW1lU2VsZWN0aW9uLmdyYW51bGFyaXR5KCkgPT0gV29yZEdyYW51bGFyaXR5
KQorICAgIGlmIChmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpID09IFRleHRHcmFudWxhcml0
eTo6V29yZEdyYW51bGFyaXR5KQogICAgICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8oZnJhbWVT
ZWxlY3Rpb24uc2VsZWN0aW9uKCkuc3RhcnQoKSwgZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCku
ZW5kKCkpOwogICAgIAogICAgIGlmIChmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NhcmV0
KCkpIHsKQEAgLTYwNCwyMyArNjA0LDIzIEBAIC0gKHZvaWQpbW92ZVNlbGVjdGlvblRvUG9pbnQ6
KENHUG9pbnQpcG8KIAogLSAodm9pZClzZXRTZWxlY3Rpb25HcmFudWxhcml0eTooV2ViVGV4dEdy
YW51bGFyaXR5KWdyYW51bGFyaXR5CiB7Ci0gICAgVGV4dEdyYW51bGFyaXR5IHdjR3JhbnVsYXJp
dHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICBUZXh0R3JhbnVsYXJpdHkgd2NHcmFudWxh
cml0eSA9IFRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgc3dpdGNo
IChncmFudWxhcml0eSkgewogICAgICAgICBjYXNlIFdlYlRleHRHcmFudWxhcml0eUNoYXJhY3Rl
cjoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eTsKKyAg
ICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51
bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFy
aXR5V29yZDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBXb3JkR3JhbnVsYXJpdHk7Cisg
ICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXZWJUZXh0R3JhbnVsYXJpdHlT
ZW50ZW5jZToKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBTZW50ZW5jZUdyYW51bGFyaXR5
OworICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VH
cmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYlRleHRHcmFu
dWxhcml0eVBhcmFncmFwaDoKLSAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBQYXJhZ3JhcGhH
cmFudWxhcml0eTsKKyAgICAgICAgICAgIHdjR3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVsYXJpdHk6
OlBhcmFncmFwaEdyYW51bGFyaXR5OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBEb2N1bWVu
dEdyYW51bGFyaXR5LgotICAgICAgICAgICAgd2NHcmFudWxhcml0eSA9IFBhcmFncmFwaEdyYW51
bGFyaXR5OworICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBUZXh0R3JhbnVsYXJpdHk6OkRvY3Vt
ZW50R3JhbnVsYXJpdHkuCisgICAgICAgICAgICB3Y0dyYW51bGFyaXR5ID0gVGV4dEdyYW51bGFy
aXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlz
aWJsZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyNjE3NjgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIwNSwyNyArMjA1LDI3IEBAIHN0YXRpYyBpbmxpbmUgVGV4dEdyYW51bGFyaXR5IHRvVGV4
dEdyYW4KICAgICAKICAgICBzd2l0Y2ggKHdlYkdyYW51bGFyaXR5KSB7CiAgICAgICAgIGNhc2Ug
V2ViVGV4dEdyYW51bGFyaXR5Q2hhcmFjdGVyOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBD
aGFyYWN0ZXJHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdyYW51
bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5V29yZDoKLSAgICAgICAgICAgIGdyYW51bGFyaXR5
ID0gV29yZEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVs
YXJpdHk6OldvcmRHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5U2VudGVuY2U6Ci0gICAgICAgICAgICBncmFudWxhcml0eSA9
IFNlbnRlbmNlR3JhbnVsYXJpdHk7CisgICAgICAgICAgICBncmFudWxhcml0eSA9IFRleHRHcmFu
dWxhcml0eTo6U2VudGVuY2VHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5TGluZToKLSAgICAgICAgICAgIGdyYW51bGFyaXR5
ID0gTGluZUdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0R3JhbnVs
YXJpdHk6OkxpbmVHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV2ViVGV4dEdyYW51bGFyaXR5UGFyYWdyYXBoOgotICAgICAgICAgICAgZ3JhbnVsYXJpdHkg
PSBQYXJhZ3JhcGhHcmFudWxhcml0eTsKKyAgICAgICAgICAgIGdyYW51bGFyaXR5ID0gVGV4dEdy
YW51bGFyaXR5OjpQYXJhZ3JhcGhHcmFudWxhcml0eTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgV2ViVGV4dEdyYW51bGFyaXR5QWxsOgotICAgICAgICAgICAgZ3JhbnVsYXJp
dHkgPSBEb2N1bWVudEdyYW51bGFyaXR5OworICAgICAgICAgICAgZ3JhbnVsYXJpdHkgPSBUZXh0
R3JhbnVsYXJpdHk6OkRvY3VtZW50R3JhbnVsYXJpdHk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBkZWZhdWx0OgpAQCAtMjQyLDI3ICsyNDIsMjcgQEAgc3RhdGljIGlubGluZSBTZWxl
Y3Rpb25EaXJlY3Rpb24gdG9TZWxlYwogICAgIAogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAg
ICAgICAgIGNhc2UgV2ViVGV4dEFkanVzdG1lbnRGb3J3YXJkOgotICAgICAgICAgICAgcmVzdWx0
ID0gRGlyZWN0aW9uRm9yd2FyZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVj
dGlvbjo6Rm9yd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgV2ViVGV4dEFkanVzdG1lbnRCYWNrd2FyZDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERp
cmVjdGlvbkJhY2t3YXJkOworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgV2ViVGV4dEFkanVzdG1lbnRSaWdodDoKLSAgICAgICAgICAgIHJlc3VsdCA9IERpcmVjdGlv
blJpZ2h0OworICAgICAgICAgICAgcmVzdWx0ID0gU2VsZWN0aW9uRGlyZWN0aW9uOjpSaWdodDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgV2ViVGV4dEFk
anVzdG1lbnRMZWZ0OgotICAgICAgICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAKICAgICAgICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudFVwOgotICAgICAg
ICAgICAgcmVzdWx0ID0gRGlyZWN0aW9uTGVmdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVj
dGlvbkRpcmVjdGlvbjo6TGVmdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAg
ICAgY2FzZSBXZWJUZXh0QWRqdXN0bWVudERvd246Ci0gICAgICAgICAgICByZXN1bHQgPSBEaXJl
Y3Rpb25SaWdodDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNlbGVjdGlvbkRpcmVjdGlvbjo6Umln
aHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTE1ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGVu
dW0gc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01SYW5nZSBtb3ZlOmluRGlyZWN0aW9uOl0p
OgorICAgICAgICAoLVtET01SYW5nZSBleHRlbmQ6aW5EaXJlY3Rpb246XSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCBjb25zdCk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2NhblNt
YXJ0Q29weU9yRGVsZXRlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBkb0Nv
bXBsZXRpb25dKToKKwogMjAyMC0wNS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI1NDg1NikgRmFtaWx5IEhlYWx0aCBpT1MgYXBwIGlz
IGJyb2tlbiBkdWUgdG8gbGFjayBmb3IgV2ViU1FMIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQkocmV2aXNpb24g
MjYxNzY4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtODIsMTUgKzgyLDE1IEBAIC0gKHZvaWQpbW92ZTooVUlu
dDMyKWFtb3VudCBpbkRpcmVjdGlvbjoKICAgICBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiBmcmFt
ZVNlbGVjdGlvbjsKICAgICBmcmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UpOwogICAgIAotICAg
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9IFdlYkNvcmU6OkNoYXJhY3Rl
ckdyYW51bGFyaXR5OworICAgIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSA9
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHk7CiAgICAgLy8g
VW50aWwgV2ViS2l0IHN1cHBvcnRzIHZlcnRpY2FsIGxheW91dCwgImRvd24iIGlzIGVxdWl2YWxl
bnQgdG8gImZvcndhcmQgYnkgYSBsaW5lIiBhbmQKICAgICAvLyAidXAiIGlzIGVxdWl2YWxlbnQg
dG8gImJhY2t3YXJkIGJ5IGEgbGluZSIuCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRq
dXN0bWVudERvd24pIHsKICAgICAgICAgZGlyZWN0aW9uID0gV2ViVGV4dEFkanVzdG1lbnRGb3J3
YXJkOwotICAgICAgICBncmFudWxhcml0eSA9IFdlYkNvcmU6OkxpbmVHcmFudWxhcml0eTsKKyAg
ICAgICAgZ3JhbnVsYXJpdHkgPSBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkxpbmVHcmFudWxh
cml0eTsKICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudFVwKSB7
CiAgICAgICAgIGRpcmVjdGlvbiA9IFdlYlRleHRBZGp1c3RtZW50QmFja3dhcmQ7Ci0gICAgICAg
IGdyYW51bGFyaXR5ID0gV2ViQ29yZTo6TGluZUdyYW51bGFyaXR5OworICAgICAgICBncmFudWxh
cml0eSA9IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6TGluZUdyYW51bGFyaXR5OwogICAgIH0K
ICAgICAKICAgICBmb3IgKFVJbnQzMiBpID0gMDsgaSA8IGFtb3VudDsgaSsrKQpAQCAtMTExLDcg
KzExMSw3IEBAIC0gKHZvaWQpZXh0ZW5kOihVSW50MzIpYW1vdW50IGluRGlyZWN0aW8KICAgICBm
cmFtZVNlbGVjdGlvbi5tb3ZlVG8ocmFuZ2UpOwogICAgIAogICAgIGZvciAoVUludDMyIGkgPSAw
OyBpIDwgYW1vdW50OyBpKyspCi0gICAgICAgIGZyYW1lU2VsZWN0aW9uLm1vZGlmeShXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbkV4dGVuZCwgKFdlYkNvcmU6OlNlbGVjdGlvbkRp
cmVjdGlvbilkaXJlY3Rpb24sIFdlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICAg
ICAgZnJhbWVTZWxlY3Rpb24ubW9kaWZ5KFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpBbHRlcmF0
aW9uRXh0ZW5kLCAoV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uKWRpcmVjdGlvbiwgV2ViQ29y
ZTo6VGV4dEdyYW51bGFyaXR5OjpDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgCiAgICAgUG9z
aXRpb24gc3RhcnQgPSBmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5zdGFydCgpLnBhcmVudEFu
Y2hvcmVkRXF1aXZhbGVudCgpOwogICAgIFBvc2l0aW9uIGVuZCA9IGZyYW1lU2VsZWN0aW9uLnNl
bGVjdGlvbigpLmVuZCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI2MTc2OCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTEyLDEyICsyMTEyLDEyIEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrV2Vi
R0woKQogCiBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Ondl
YkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNob3VsZEJs
b2NrV2ViR0woKSA/IFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdM
QWxsb3dDcmVhdGlvbjsKKyAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5OjpXZWJHTEJsb2NrQ3JlYXRpb24gOiBXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAogV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJM
JikgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tXZWJHTCgpID8gV2ViQ29yZTo6V2Vi
R0xCbG9ja0NyZWF0aW9uIDogV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworICAgIHJldHVy
biBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQmxv
Y2tDcmVhdGlvbiA6IFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9u
OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAyNjE3NjgpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01NzMyLDcgKzU3MzIsNyBAQCAtIChCT09MKV9jYW5TbWFydENvcHlPckRlbGV0ZQog
ICAgIGlmICghW1tzZWxmIF93ZWJWaWV3XSBzbWFydEluc2VydERlbGV0ZUVuYWJsZWRdKQogICAg
ICAgICByZXR1cm4gTk87CiAgICAgYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICByZXR1cm4gY29yZUZyYW1lICYmIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuZ3JhbnVs
YXJpdHkoKSA9PSBXZWJDb3JlOjpXb3JkR3JhbnVsYXJpdHk7CisgICAgcmV0dXJuIGNvcmVGcmFt
ZSAmJiBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLmdyYW51bGFyaXR5KCkgPT0gV2ViQ29yZTo6VGV4
dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29u
dHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQkocmV2aXNpb24gMjYxNzY4KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCAtICh2b2lkKWRvQ29tcGxldGlv
bgogICAgICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbX2h0bWxWaWV3IF9mcmFtZV07CiAgICAgICAg
IERPTVJhbmdlICpzZWxlY3Rpb24gPSBraXQoY3JlYXRlTGl2ZVJhbmdlKGNvcmUoZnJhbWUpLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpKS5nZXQoKSk7CiAgICAg
ICAgIERPTVJhbmdlICp3aG9sZVdvcmQgPSBbZnJhbWUgX3JhbmdlQnlBbHRlcmluZ0N1cnJlbnRT
ZWxlY3Rpb246RnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25FeHRlbmQKLSAgICAgICAgICAgIGRp
cmVjdGlvbjpEaXJlY3Rpb25CYWNrd2FyZCBncmFudWxhcml0eTpXb3JkR3JhbnVsYXJpdHldOwor
ICAgICAgICAgICAgZGlyZWN0aW9uOlNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQgZ3JhbnVs
YXJpdHk6VGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHldOwogICAgICAgICBET01SYW5n
ZSAqcHJlZml4ID0gW3dob2xlV29yZCBjbG9uZVJhbmdlXTsKICAgICAgICAgW3ByZWZpeCBzZXRF
bmQ6W3NlbGVjdGlvbiBzdGFydENvbnRhaW5lcl0gb2Zmc2V0OltzZWxlY3Rpb24gc3RhcnRPZmZz
ZXRdXTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYxNzY4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgZW51bSBzZXJpYWxpemF0aW9uIGluc3Rl
YWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4ODUKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVh
c2VUZXh0U2VsZWN0aW9uKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3Jl
YXNlVGV4dFNlbGVjdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVhc2VUZXh0U2VsZWN0aW9uKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVhc2VUZXh0U2VsZWN0aW9uKToKKwogMjAy
MC0wNS0xNSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TIEVXU10gVGVzdFdlYktpdEFQSS5XS1dlYnNpdGVEYXRhU3RvcmUuUmVtb3ZlQW5kRmV0Y2hE
YXRhIGlzIGZhaWxpbmcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCShyZXZpc2lvbiAyNjE3NjgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzQ1LDEyICszNDUsMTIgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nl
c3NpYmlsaXR5VUlFbAogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlYXNlVGV4
dFNlbGVjdGlvbigpCiB7Ci0gICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0
aW9uOldlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOllFU107CisgICAgW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OlRleHRHcmFudWxh
cml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6WUVTXTsKIH0KIAogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24oKQogewotICAgIFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFyYWN0ZXJHcmFu
dWxhcml0eSBpbmNyZWFzZTpOT107ICAgIAorICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1v
ZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHk6OkNoYXJhY3RlckdyYW51bGFy
aXR5IGluY3JlYXNlOk5PXTsgICAgCiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudElPUy5tbQkocmV2aXNpb24gMjYxNzY4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtOTM2LDEyICs5MzYsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzY3JvbGxQYWdlUgogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
Y3JlYXNlVGV4dFNlbGVjdGlvbigpCiB7Ci0gICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9k
aWZ5U2VsZWN0aW9uOldlYkNvcmU6OkNoYXJhY3RlckdyYW51bGFyaXR5IGluY3JlYXNlOllFU107
CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OlRl
eHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3JhbnVsYXJpdHkgaW5jcmVhc2U6WUVTXTsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZWNyZWFzZVRleHRTZWxlY3Rpb24oKQogewot
ICAgIFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eU1vZGlmeVNlbGVjdGlvbjpXZWJDb3JlOjpDaGFy
YWN0ZXJHcmFudWxhcml0eSBpbmNyZWFzZTpOT107CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5TW9kaWZ5U2VsZWN0aW9uOldlYkNvcmU6OlRleHRHcmFudWxhcml0eTo6Q2hhcmFjdGVyR3Jh
bnVsYXJpdHkgaW5jcmVhc2U6Tk9dOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nRm9yU2VsZWN0aW9uKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>