<?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>165911</bug_id>
          
          <creation_ts>2016-12-15 12:21:09 -0800</creation_ts>
          <short_desc>Get rid of HeapRootVisitor and make SlotVisitor less painful to use</short_desc>
          <delta_ts>2016-12-16 11:06:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>165910</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1260205</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 12:21:09 -0800</bug_when>
    <thetext>SlotVisitor has a bunch of stuff left over from ancient attempts to make our GC be fully copying.  We&apos;re all-in with the non-copying religion now, so we might as well get rid of the heresy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260206</commentid>
    <comment_count>1</comment_count>
      <attachid>297209</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 12:28:23 -0800</bug_when>
    <thetext>Created attachment 297209
it&apos;s a start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260234</commentid>
    <comment_count>2</comment_count>
      <attachid>297215</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 13:28:31 -0800</bug_when>
    <thetext>Created attachment 297215
a bit more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260261</commentid>
    <comment_count>3</comment_count>
      <attachid>297223</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 14:19:32 -0800</bug_when>
    <thetext>Created attachment 297223
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260284</commentid>
    <comment_count>4</comment_count>
      <attachid>297229</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 15:08:23 -0800</bug_when>
    <thetext>Created attachment 297229
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260285</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 15:10:58 -0800</bug_when>
    <thetext>This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260286</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 15:11:18 -0800</bug_when>
    <thetext>Attachment 297229 did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/SlotVisitor.h:92:  The parameter name &quot;weak&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 113 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260290</commentid>
    <comment_count>7</comment_count>
      <attachid>297229</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-15 15:17:51 -0800</bug_when>
    <thetext>Comment on attachment 297229
the patch

r=me

I don&apos;t really love &quot;appendTrusted&quot;. We trust all our pointers to be valid pointers.

Maybe &quot;appendWithoutBarrierCheck&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260298</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 15:26:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 297229 [details]
&gt; the patch
&gt; 
&gt; r=me
&gt; 
&gt; I don&apos;t really love &quot;appendTrusted&quot;. We trust all our pointers to be valid
&gt; pointers.
&gt; 
&gt; Maybe &quot;appendWithoutBarrierCheck&quot;?

We call this a lot so I was hoping for something short.

appendUnbarriered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260321</commentid>
    <comment_count>9</comment_count>
      <attachid>297229</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-12-15 16:01:29 -0800</bug_when>
    <thetext>Comment on attachment 297229
the patch

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

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:208
&gt; +#define VISIT_FUNCTION(name) visitor.append(m_##name##Function);

You&apos;ll need to rebaseline, run-builtins-generator-tests --reset-results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260446</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 18:15:09 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 297229 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=297229&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:208
&gt; &gt; +#define VISIT_FUNCTION(name) visitor.append(m_##name##Function);
&gt; 
&gt; You&apos;ll need to rebaseline, run-builtins-generator-tests --reset-results

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260448</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-15 18:17:25 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/209897</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260566</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-16 03:26:50 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Landed in https://trac.webkit.org/changeset/209897

It broke the bindings generation tests, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260639</commentid>
    <comment_count>13</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-12-16 10:52:17 -0800</bug_when>
    <thetext>Rebaselined bindings tests in http://trac.webkit.org/projects/webkit/changeset/209925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260651</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-16 11:06:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Rebaselined bindings tests in
&gt; http://trac.webkit.org/projects/webkit/changeset/209925

Thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297209</attachid>
            <date>2016-12-15 12:28:23 -0800</date>
            <delta_ts>2016-12-15 13:28:31 -0800</delta_ts>
            <desc>it&apos;s a start</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20121</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIwMiw3ICsxMjAyLDYgQEAKIAkJMTRFOUQxN0IxMDdF
QzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0Qx
MiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0RjcyNTY1MTRFRTI2
NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtI
YW5kbGVPd25lci5jcHAgKi87IH07CiAJCTE0RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFr
SGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RjcyNTY0MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNEY5NzQ0NzEzOEM4
NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJv
b3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdC
NzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBODgyNkIxNjUzQzRDRDFBNjQyOTgzQiAv
KiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOEI0N0YyMzQzNjZDNEI3MkFDODUyQTdFIC8qIFRlbXBsYXRl
UmVnaXN0cnlLZXlUYWJsZS5jcHAgKi87IH07CiAJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAv
KiBXZWFrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCAqLzsgfTsKQEAgLTM1NzksNyAr
MzU3OCw2IEBACiAJCTE0RjI1MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU0Vudmlyb25tZW50UmVj
b3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW52aXJvbm1lbnRSZWNv
cmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2
NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtIYW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNp
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBSb290VmlzaXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcg
LyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyog
SlNTdHJpbmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
U3RyaW5nUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY5Myw3
ICs1NjkxLDYgQEAKIAkJCQlBNTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVy
LmggKi8sCiAJCQkJQTUzOThGQTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAg
Ki8sCiAJCQkJQTUzOThGQUExQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAot
CQkJCTE0Rjk3NDQ2MTM4Qzg1M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKIAkJ
CQlBNTRDMkFBRTFDNjU0NEQxMDBBMThENzggLyogSGVhcFNuYXBzaG90LmNwcCAqLywKIAkJCQlB
NTRDMkFBRjFDNjU0NEQxMDBBMThENzggLyogSGVhcFNuYXBzaG90LmggKi8sCiAJCQkJQTUzMTFD
MzQxQzc3Q0VBQzAwRTZCMUI2IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwICovLApAQCAtODM3
MSw3ICs4MzY4LDYgQEAKIAkJCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJh
dGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUg
LyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBC
M0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNEY5NzQ0
NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZFN0JBNjEwMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlz
aW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTUsOCArNTE1LDYgQEAgdm9pZCBIZWFwOjptYXJrVG9GaXhwb2ludChk
b3VibGUgZ2NTdGFydAogewogICAgIFRpbWluZ1Njb3BlIG1hcmtUb0ZpeHBvaW50VGltaW5nU2Nv
cGUoKnRoaXMsICJIZWFwOjptYXJrVG9GaXhwb2ludCIpOwogICAgIAotICAgIEhlYXBSb290Vmlz
aXRvciBoZWFwUm9vdFZpc2l0b3IoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOwotICAgIAogICAg
IGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAg
ICAgbV9vcGFxdWVSb290cy5jbGVhcigpOwogICAgICAgICBtX2NvbGxlY3RvclNsb3RWaXNpdG9y
LT5jbGVhck1hcmtTdGFja3MoKTsKQEAgLTU2MCw2ICs1NTgsNyBAQCB2b2lkIEhlYXA6Om1hcmtU
b0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIH0pOwogCiAgICAgbV9jb2xsZWN0b3JT
bG90VmlzaXRvci0+ZGlkU3RhcnRNYXJraW5nKCk7CisgICAgU2xvdFZpc2l0b3ImIHNsb3RWaXNp
dG9yID0gbV9jb2xsZWN0b3JTbG90VmlzaXRvcjsKIAogICAgIFNwYWNlVGltZVNjaGVkdWxlciBz
Y2hlZHVsZXIoKnRoaXMpOwogICAgIApAQCAtNTgwLDU1ICs1NzksNTMgQEAgdm9pZCBIZWFwOjpt
YXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAvLyBOb3cgd2UgdmlzaXQgcm9v
dHMgdGhhdCBkb24ndCBnZXQgYmFycmllcmVkLCBzbyBlYWNoIGZpeHBvaW50IGl0ZXJhdGlvbiBq
dXN0IHJldmlzaXRzCiAgICAgICAgIC8vIGFsbCBvZiB0aGVtLgogI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECi0gICAgICAgIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoKm1fdm0sICptX2NvbGxl
Y3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldCgqbV92
bSwgc2xvdFZpc2l0b3IpOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAgaWYgKG1fdm0t
PnNtYWxsU3RyaW5ncy5uZWVkc1RvQmVWaXNpdGVkKCptX2NvbGxlY3Rpb25TY29wZSkpCi0gICAg
ICAgICAgICBtX3ZtLT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2VzKCptX2NvbGxl
Y3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIG1fdm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0
cm9uZ1JlZmVyZW5jZXMoc2xvdFZpc2l0b3IpOwogICAgICAgICAgICAgCiAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IG1fcHJvdGVjdGVkVmFsdWVzKQotICAgICAgICAgICAgaGVhcFJvb3RWaXNp
dG9yLnZpc2l0KCZwYWlyLmtleSk7CisgICAgICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRUcnVz
dGVkKHBhaXIua2V5KTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9tYXJrTGlzdFNldCAm
JiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCi0gICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
cjo6bWFya0xpc3RzKGhlYXBSb290VmlzaXRvciwgKm1fbWFya0xpc3RTZXQpOworICAgICAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhzbG90VmlzaXRvciwgKm1fbWFya0xp
c3RTZXQpOwogICAgICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZtLT5leGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdChtX3ZtLT5hZGRyZXNzT2ZFeGNlcHRpb24o
KSk7Ci0gICAgICAgIGlmIChtX3ZtLT5sYXN0RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICBoZWFw
Um9vdFZpc2l0b3IudmlzaXQobV92bS0+YWRkcmVzc09mTGFzdEV4Y2VwdGlvbigpKTsKKyAgICAg
ICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3ZtLT5leGNlcHRpb24oKSk7CisgICAgICAg
IHNsb3RWaXNpdG9yLmFwcGVuZFRydXN0ZWQobV92bS0+bGFzdEV4Y2VwdGlvbigpKTsKICAgICAg
ICAgICAgIAotICAgICAgICBtX2hhbmRsZVNldC52aXNpdFN0cm9uZ0hhbmRsZXMoaGVhcFJvb3RW
aXNpdG9yKTsKLSAgICAgICAgbV9oYW5kbGVTdGFjay52aXNpdChoZWFwUm9vdFZpc2l0b3IpOwor
ICAgICAgICBtX2hhbmRsZVNldC52aXNpdFN0cm9uZ0hhbmRsZXMoc2xvdFZpc2l0b3IpOworICAg
ICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KHNsb3RWaXNpdG9yKTsKIAogI2lmIEVOQUJMRShTQU1Q
TElOR19QUk9GSUxFUikKICAgICAgICAgaWYgKFNhbXBsaW5nUHJvZmlsZXIqIHNhbXBsaW5nUHJv
ZmlsZXIgPSBtX3ZtLT5zYW1wbGluZ1Byb2ZpbGVyKCkpIHsKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXItPmdldExvY2soKSk7CiAgICAgICAgICAgICBzYW1w
bGluZ1Byb2ZpbGVyLT5wcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKCk7Ci0gICAgICAgICAg
ICBzYW1wbGluZ1Byb2ZpbGVyLT52aXNpdCgqbV9jb2xsZWN0b3JTbG90VmlzaXRvcik7CisgICAg
ICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLT52aXNpdChzbG90VmlzaXRvcik7CiAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCi0gICAgICAgICAg
ICAgICAgZGF0YUxvZygiU2FtcGxpbmcgUHJvZmlsZXIgZGF0YTpcbiIsICptX2NvbGxlY3RvclNs
b3RWaXNpdG9yKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJTYW1wbGluZyBQcm9maWxlciBk
YXRhOlxuIiwgc2xvdFZpc2l0b3IpOwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBM
SU5HX1BST0ZJTEVSKQogICAgICAgICAKICAgICAgICAgaWYgKG1fdm0tPnR5cGVQcm9maWxlcigp
KQotICAgICAgICAgICAgbV92bS0+dHlwZVByb2ZpbGVyTG9nKCktPnZpc2l0KCptX2NvbGxlY3Rv
clNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIG1fdm0tPnR5cGVQcm9maWxlckxvZygpLT52aXNp
dChzbG90VmlzaXRvcik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgIG1fdm0tPnNoYWRvd0No
aWNrZW4oKS52aXNpdENoaWxkcmVuKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAg
bV92bS0+c2hhZG93Q2hpY2tlbigpLnZpc2l0Q2hpbGRyZW4oc2xvdFZpc2l0b3IpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+dHJhY2VNYXJrZWRTdHViUm91
dGluZXMoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICBtX2ppdFN0dWJSb3V0aW5l
cy0+dHJhY2VNYXJrZWRTdHViUm91dGluZXMoc2xvdFZpc2l0b3IpOwogCi0gICAgICAgIG1fY29s
bGVjdG9yU2xvdFZpc2l0b3ItPm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgpOworICAgICAg
ICBzbG90VmlzaXRvci5tZXJnZU9wYXF1ZVJvb3RzSWZOZWNlc3NhcnkoKTsKICAgICAgICAgZm9y
IChhdXRvJiBwYXJhbGxlbFZpc2l0b3IgOiBtX3BhcmFsbGVsU2xvdFZpc2l0b3JzKQogICAgICAg
ICAgICAgcGFyYWxsZWxWaXNpdG9yLT5tZXJnZU9wYXF1ZVJvb3RzSWZOZWNlc3NhcnkoKTsKIAot
ICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHMoaGVhcFJvb3RWaXNpdG9yKTsKKyAg
ICAgICAgbV9vYmplY3RTcGFjZS52aXNpdFdlYWtTZXRzKHNsb3RWaXNpdG9yKTsKICAgICAgICAg
aGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgIHZpc2l0Q29tcGlsZXJXb3JrbGlzdFdl
YWtSZWZlcmVuY2VzKCk7Ci0gICAgICAgIERGRzo6bWFya0NvZGVCbG9ja3MoKm1fdm0sICptX2Nv
bGxlY3RvclNsb3RWaXNpdG9yKTsKLSAgICAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBtX2Nv
bGxlY3RvclNsb3RWaXNpdG9yLT5pc0VtcHR5KCkgJiYgbV9tdXRhdG9yTWFya1N0YWNrLT5pc0Vt
cHR5KCk7CisgICAgICAgIERGRzo6bWFya0NvZGVCbG9ja3MoKm1fdm0sIHNsb3RWaXNpdG9yKTsK
KyAgICAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBzbG90VmlzaXRvci5pc0VtcHR5KCkgJiYg
bV9tdXRhdG9yTWFya1N0YWNrLT5pc0VtcHR5KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoT3B0
aW9uczo6bG9nR0MoKSkgewotICAgICAgICAgICAgZGF0YUxvZyhtX2NvbGxlY3RvclNsb3RWaXNp
dG9yLT5jb2xsZWN0b3JNYXJrU3RhY2soKS5zaXplKCksICIrIiwgbV9tdXRhdG9yTWFya1N0YWNr
LT5zaXplKCkgKyBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5tdXRhdG9yTWFya1N0YWNrKCkuc2l6
ZSgpLCAiLCBhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgLyAxMDI0LCAiIGtiLCBiPSIs
IG1fYmFycmllcnNFeGVjdXRlZCwgIiwgbXU9Iiwgc2NoZWR1bGVyLmN1cnJlbnREZWNpc2lvbigp
LnRhcmdldE11dGF0b3JVdGlsaXphdGlvbigpLCAiICIpOworICAgICAgICAgICAgZGF0YUxvZyhz
bG90VmlzaXRvci5jb2xsZWN0b3JNYXJrU3RhY2soKS5zaXplKCksICIrIiwgbV9tdXRhdG9yTWFy
a1N0YWNrLT5zaXplKCkgKyBzbG90VmlzaXRvci5tdXRhdG9yTWFya1N0YWNrKCkuc2l6ZSgpLCAi
LCBhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgLyAxMDI0LCAiIGtiLCBiPSIsIG1fYmFy
cmllcnNFeGVjdXRlZCwgIiwgbXU9Iiwgc2NoZWR1bGVyLmN1cnJlbnREZWNpc2lvbigpLnRhcmdl
dE11dGF0b3JVdGlsaXphdGlvbigpLCAiICIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8gY29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQgd2Ug
cmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0IGFyZQpAQCAtNjQ1LDE0ICs2NDIsMTQgQEAgdm9p
ZCBIZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAKICAgICAgICAg
Ly8gVGhlIFNsb3RWaXNpdG9yJ3MgbWFyayBzdGFja3MgYXJlIGFjY2Vzc2VkIGJ5IHRoZSBjb2xs
ZWN0b3IgdGhyZWFkIChpLmUuIHRoaXMgdGhyZWFkKQogICAgICAgICAvLyB3aXRob3V0IGxvY2tz
LiBUaGF0J3Mgd2h5IHdlIGRvdWJsZS1idWZmZXIuCi0gICAgICAgIG1fbXV0YXRvck1hcmtTdGFj
ay0+dHJhbnNmZXJUbyhtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5tdXRhdG9yTWFya1N0YWNrKCkp
OworICAgICAgICBtX211dGF0b3JNYXJrU3RhY2stPnRyYW5zZmVyVG8oc2xvdFZpc2l0b3IubXV0
YXRvck1hcmtTdGFjaygpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygp
ID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIkxpdmUgV2VhayBI
YW5kbGVzOlxuIiwgKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgZGF0YUxv
ZygiTGl2ZSBXZWFrIEhhbmRsZXM6XG4iLCBzbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAg
ICB7CiAgICAgICAgICAgICBUaW1pbmdTY29wZSB0cmFjZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6bWFya1RvRml4cG9pbnQgdHJhY2luZyIpOwotICAgICAgICAgICAgUGFyYWxsZWxNb2RlRW5h
YmxlciBlbmFibGVyKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIFBhcmFs
bGVsTW9kZUVuYWJsZXIgZW5hYmxlcihzbG90VmlzaXRvcik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VDb2xsZWN0b3JUaW1lc2xpY2luZygpKSB7CiAgICAgICAg
ICAgICAgICAgc2NoZWR1bGVyLnNuYXBQaGFzZSgpOwpAQCAtNjYzLDcgKzY2MCw3IEBAIHZvaWQg
SGVhcDo6bWFya1RvRml4cG9pbnQoZG91YmxlIGdjU3RhcnQKICAgICAgICAgICAgICAgICAgICAg
aWYgKGRlY2lzaW9uLnNob3VsZEJlUmVzdW1lZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdW1lVGhlV29ybGRTY29wZSByZXN1
bWVUaGVXb3JsZFNjb3BlKCp0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFp
blJlc3VsdCA9IG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmRyYWluSW5QYXJhbGxlbFBhc3NpdmVs
eShkZWNpc2lvbi50aW1lVG9TdG9wKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRy
YWluUmVzdWx0ID0gc2xvdFZpc2l0b3IuZHJhaW5JblBhcmFsbGVsUGFzc2l2ZWx5KGRlY2lzaW9u
LnRpbWVUb1N0b3AoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRyYWluUmVz
dWx0ID09IFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdDo6RG9uZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHdpbGwgc3RvcC4gQnV0
IG1heWJlIHRoZSBzY2hlZHVsZXIgZG9lcyBub3Qgd2FudAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyB0aGF0LgpAQCAtNjgwLDEzICs2NzcsMTMgQEAgdm9pZCBIZWFwOjptYXJr
VG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJ3dWwhPSIsIHdha2VVcExhdGVuY3kubWlsbGlzZWNvbmRzKCksICIgbXMgIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhaW5SZXN1bHQgPSBtX2NvbGxlY3RvclNsb3RWaXNp
dG9yLT5kcmFpbkluUGFyYWxsZWwoZGVjaXNpb24udGltZVRvUmVzdW1lKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZHJhaW5SZXN1bHQgPSBzbG90VmlzaXRvci5kcmFpbkluUGFyYWxsZWwo
ZGVjaXNpb24udGltZVRvUmVzdW1lKCkpOwogICAgICAgICAgICAgICAgIH0gd2hpbGUgKGRyYWlu
UmVzdWx0ICE9IFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdDo6RG9uZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIERpc2FibGluZyBjb2xsZWN0b3IgdGlt
ZXNsaWNpbmcgaXMgbWVhbnQgdG8gYmUgdXNlZCB0b2dldGhlciB3aXRoCiAgICAgICAgICAgICAg
ICAgLy8gLS1jb2xsZWN0Q29udGludW91c2x5PXRydWUgdG8gbWF4aW1pemUgdGhlIG9wcG9ydHVu
aXR5IGZvciBoYXJtZnVsIHJhY2VzLgogICAgICAgICAgICAgICAgIFJlc3VtZVRoZVdvcmxkU2Nv
cGUgcmVzdW1lVGhlV29ybGRTY29wZSgqdGhpcyk7Ci0gICAgICAgICAgICAgICAgbV9jb2xsZWN0
b3JTbG90VmlzaXRvci0+ZHJhaW5JblBhcmFsbGVsKCk7CisgICAgICAgICAgICAgICAgc2xvdFZp
c2l0b3IuZHJhaW5JblBhcmFsbGVsKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDYgQEAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lOwogY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKLWNsYXNzIEhlYXBSb290
VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKIGNsYXNzIEhlbHBpbmdHQ1Njb3BlOwogY2xh
c3MgSW5jcmVtZW50YWxTd2VlcGVyOwpAQCAtNDU5LDcgKzQ1OCw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAgICAgdm9p
ZCB2aXNpdENvbXBpbGVyV29ya2xpc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVtb3Zl
RGVhZENvbXBpbGVyV29ya2xpc3RFbnRyaWVzKCk7Ci0gICAgdm9pZCBtYXJrVG9GaXhwb2ludChI
ZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHVwZGF0ZU9iamVjdENvdW50cyhkb3VibGUgZ2NT
dGFydFRpbWUpOwogICAgIHZvaWQgZW5kTWFya2luZygpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgJKG5vbmV4aXN0ZW50
KQpAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIK
LSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLSAg
ICAvLyBQcml2aWxlZ2VkIGNsYXNzIGZvciBtYXJraW5nIEpTVmFsdWVzIGRpcmVjdGx5LiBJdCBp
cyBvbmx5IHNhZmUgdG8gdXNlCi0gICAgLy8gdGhpcyBjbGFzcyB0byBtYXJrIGRpcmVjdCBoZWFw
IHJvb3RzIHRoYXQgYXJlIG1hcmtlZCBkdXJpbmcgZXZlcnkgR0MgcGFzcy4KLSAgICAvLyBBbGwg
b3RoZXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgd3JhcHBlZCBpbiBXcml0ZUJhcnJpZXJzLgotICAg
IGNsYXNzIEhlYXBSb290VmlzaXRvciB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNs
YXNzIEhlYXA7Ci0gICAgICAgIEhlYXBSb290VmlzaXRvcihTbG90VmlzaXRvciYpOwotCi0gICAg
cHVibGljOgotICAgICAgICB2b2lkIHZpc2l0KEpTVmFsdWUqKTsKLSAgICAgICAgdm9pZCB2aXNp
dChKU1ZhbHVlKiwgc2l6ZV90KTsKLSAgICAgICAgdm9pZCB2aXNpdChKU1N0cmluZyoqKTsKLSAg
ICAgICAgdm9pZCB2aXNpdChKU0NlbGwqKik7Ci0KLSAgICAgICAgU2xvdFZpc2l0b3ImIHZpc2l0
b3IoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNsb3RWaXNpdG9yJiBtX3Zpc2l0b3I7Ci0g
ICAgfTsKLQotICAgIGlubGluZSBIZWFwUm9vdFZpc2l0b3I6OkhlYXBSb290VmlzaXRvcihTbG90
VmlzaXRvciYgdmlzaXRvcikKLSAgICAgICAgOiBtX3Zpc2l0b3IodmlzaXRvcikKLSAgICB7Ci0g
ICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdChKU1ZhbHVlKiBz
bG90KQotICAgIHsKLSAgICAgICAgbV92aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkVmFsdWUoc2xv
dCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdChKU1Zh
bHVlKiBzbG90LCBzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWRWYWx1ZSgmc2xvdFtpXSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNp
dG9yOjp2aXNpdChKU1N0cmluZyoqIHNsb3QpCi0gICAgewotICAgICAgICBtX3Zpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKHNsb3QpOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIEhl
YXBSb290VmlzaXRvcjo6dmlzaXQoSlNDZWxsKiogc2xvdCkKLSAgICB7Ci0gICAgICAgIG1fdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoc2xvdCk7Ci0gICAgfQotCi0gICAgaW5saW5l
IFNsb3RWaXNpdG9yJiBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0b3IoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fdmlzaXRvcjsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3
ICsyMTYsNyBAQCB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRKU0NlbGxPckF1eGlsaWFyCiAgICAg
fSB9CiB9CiAKLXZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChKU1ZhbHVlIHZhbHVlKQordm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kVHJ1c3RlZChKU1ZhbHVlIHZhbHVlKQogewogICAgIGlmICghdmFs
dWUgfHwgIXZhbHVlLmlzQ2VsbCgpKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDIwICs3MCwyNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290
cyYpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5kKFdyaXRlQmFy
cmllckJhc2U8VD4qKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZEhpZGRl
bihXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBh
cHBlbmQoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxUPiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHZvaWQgYXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VD4mKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gdm9pZCBhcHBlbmQoSXRlcmF0b3IgYmVnaW4gLCBJ
dGVyYXRvciBlbmQpOwotICAgIHZvaWQgYXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qLCBzaXplX3QgY291bnQpOwotICAgIHZvaWQgYXBwZW5kVmFsdWVzSGlkZGVuKFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qLCBzaXplX3QgY291bnQpOworICAgIHZvaWQgYXBwZW5kVmFs
dWVzKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qLCBzaXplX3QgY291bnQpOworICAg
IHZvaWQgYXBwZW5kVmFsdWVzSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
LCBzaXplX3QgY291bnQpOwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9p
ZCBhcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoVCoqKTsKLSAgICB2b2lkIGFwcGVuZFVuYmFycmll
cmVkVmFsdWUoSlNWYWx1ZSopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBh
cHBlbmRVbmJhcnJpZXJlZFdlYWsoV2VhazxUPiopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci0gICAgdm9pZCBhcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihUKik7Ci0gICAgdm9p
ZCBhcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5VmFsdWUoSlNWYWx1ZSk7CisgICAgLy8gVGhlc2Ug
ZG9uJ3QgcmVxdWlyZSB5b3UgdG8gcHJvdmUgdGhhdCB5b3UgaGF2ZSBhIFdyaXRlQmFycmllcjw+
LiBUaGF0IG1ha2VzIHNlbnNlCisgICAgLy8gZm9yOgorICAgIC8vCisgICAgLy8gLSByb290cy4K
KyAgICAvLyAtIHNvcGhpc3RpY2F0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYmFycmllciB0aHJv
dWdoIG90aGVyIG1lYW5zIChsaWtlIERGRzo6UGxhbiBhbmQKKyAgICAvLyAgIGZyaWVuZHMpLgor
ICAgIC8vCisgICAgLy8gSWYgeW91IGFyZSBub3QgYSByb290IGFuZCB5b3UgZG9uJ3Qga25vdyB3
aGF0IGtpbmQgb2YgYmFycmllciB5b3UgaGF2ZSwgdGhlbiB5b3UKKyAgICAvLyBzaG91bGRuJ3Qg
Y2FsbCB0aGVzZSBtZXRob2RzLgorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kVHJ1
c3RlZChKU1ZhbHVlKTsKKyAgICB2b2lkIGFwcGVuZFRydXN0ZWQoSlNWYWx1ZSosIHNpemVfdCk7
CisgICAgdm9pZCBhcHBlbmRUcnVzdGVkKEpTQ2VsbCopOwogICAgIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYWRkT3BhcXVlUm9vdCh2b2lkKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjb250YWluc09wYXF1ZVJvb3Qodm9pZCopIGNvbnN0OwpAQCAtMTQ5LDcgKzE1Myw2IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhcmFsbGVsTW9kZUVuYWJsZXI7
CiAgICAgCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoSlNWYWx1ZSk7IC8vIFRo
aXMgaXMgcHJpdmF0ZSB0byBlbmNvdXJhZ2UgY2xpZW50cyB0byB1c2UgV3JpdGVCYXJyaWVyPFQ+
LgogICAgIHZvaWQgYXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkoSGVhcENlbGwqKTsKICAgICB2b2lk
IGFwcGVuZEhpZGRlbihKU1ZhbHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwyOCArMzEsMTUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRQb2ludGVy
KFQqKiBzbG90KQotewotICAgIEFTU0VSVChzbG90KTsKLSAgICBhcHBlbmQoKnNsb3QpOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlQb2ludGVyKFQqIGNlbGwpCi17Ci0gICAgYXBwZW5kKGNlbGwpOwot
fQotCi1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1Zh
bHVlKiBzbG90KQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0ZWQoSlNWYWx1
ZSogc2xvdCwgc2l6ZV90IGNvdW50KQogewotICAgIEFTU0VSVChzbG90KTsKLSAgICBhcHBlbmQo
KnNsb3QpOworICAgIGZvciAoc2l6ZV90IGkgPSBjb3VudDsgaS0tOykKKyAgICAgICAgYXBwZW5k
VHJ1c3RlZChzbG90W2ldKTsKIH0KIAotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlWYWx1ZShKU1ZhbHVlIHZhbHVlKQoraW5saW5lIHZvaWQgU2xvdFZp
c2l0b3I6OmFwcGVuZFRydXN0ZWQoSlNDZWxsKiBjZWxsKQogewotICAgIGFwcGVuZCh2YWx1ZSk7
CisgICAgYXBwZW5kVHJ1c3RlZChjZWxsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAg
LTYzLDM0ICs1MCwzNCBAQCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVy
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBw
ZW5kKFdyaXRlQmFycmllckJhc2U8VD4qIHNsb3QpCitpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6
YXBwZW5kKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VD4mIHNsb3QpCiB7Ci0gICAgYXBwZW5kKHNs
b3QtPmdldCgpKTsKKyAgICBhcHBlbmQoc2xvdC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKFdyaXRlQmFycmll
ckJhc2U8VD4qIHNsb3QpCitpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKGNv
bnN0IFdyaXRlQmFycmllckJhc2U8VD4mIHNsb3QpCiB7Ci0gICAgYXBwZW5kSGlkZGVuKHNsb3Qt
PmdldCgpKTsKKyAgICBhcHBlbmRIaWRkZW4oc2xvdC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZXJhdG9yPgogaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZChJdGVyYXRv
ciBiZWdpbiwgSXRlcmF0b3IgZW5kKQogewogICAgIGZvciAoYXV0byBpdCA9IGJlZ2luOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgIGFwcGVuZCgmKml0KTsKKyAgICAgICAgYXBwZW5kKCppdCk7
CiB9CiAKLWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVfdCBjb3VudCkKK2lubGluZSB2b2lkIFNsb3RW
aXNpdG9yOjphcHBlbmRWYWx1ZXMoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFy
cmllcnMsIHNpemVfdCBjb3VudCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpCi0gICAgICAgIGFwcGVuZCgmYmFycmllcnNbaV0pOworICAgICAgICBhcHBlbmQoYmFy
cmllcnNbaV0pOwogfQogCi1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzSGlk
ZGVuKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQpCitp
bmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzSGlkZGVuKGNvbnN0IFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBhcHBlbmRIaWRkZW4oJmJhcnJp
ZXJzW2ldKTsKKyAgICAgICAgYXBwZW5kSGlkZGVuKGJhcnJpZXJzW2ldKTsKIH0KIAogaW5saW5l
IHZvaWQgU2xvdFZpc2l0b3I6OnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChzaXplX3Qgc2l6ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297215</attachid>
            <date>2016-12-15 13:28:31 -0800</date>
            <delta_ts>2016-12-15 14:19:32 -0800</delta_ts>
            <desc>a bit more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>114261</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgRWxlbWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxFbGVtZW50Kj4oY2Vs
bCk7CiAgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcm9vdCk7CisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcm9vdCk7CiAgICAgfQogCiAgICAgc3RhdGljIEVsZW1l
bnRIYW5kbGVPd25lciogaGFuZGxlT3duZXIoKTsKQEAgLTMzMCw3ICszMzAsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwogICAg
ICAgICBJbXB1cmVHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SW1wdXJlR2V0dGVyKj4oY2Vs
bCk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlbGVnYXRlKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9kZWxlZ2F0ZSk7CiAgICAgfQogCiAg
ICAgdm9pZCBzZXREZWxlZ2F0ZShWTSYgdm0sIEpTT2JqZWN0KiBkZWxlZ2F0ZSkKQEAgLTUyMSw3
ICs1MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNpbXBsZU9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxTaW1wbGVPYmplY3QqPihjZWxsKTsKICAgICAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9oaWRkZW5WYWx1ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faGlk
ZGVuVmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJ
KHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgIGZvciAoUHJp
dmF0ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5TWFwLmJlZ2luKCk7IHB0
ciAhPSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewogICAgICAgICAgICAgICAgIGlmIChw
dHItPnZhbHVlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT52YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0ci0+dmFsdWUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIwMiw3ICsx
MjAyLDYgQEAKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAg
Ki87IH07CiAJCTE0RjcyNTY1MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGNzI1NjMx
NEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi87IH07CiAJCTE0RjcyNTY2
MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjcyNTY0MTRFRTI2NUUwMEIxNjUyQiAvKiBX
ZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEY5NzQ0NjEz
OEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEyOEQ0QTgxNzdCNzFDODAwMDdGQTNDIC8q
IEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
ODgyNkIxNjUzQzRDRDFBNjQyOTgzQiAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5VGFibGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEI0N0YyMzQzNjZD
NEI3MkFDODUyQTdFIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5jcHAgKi87IH07CiAJCTFB
Q0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFr
LmNwcCAqLzsgfTsKQEAgLTM1NzksNyArMzU3OCw2IEBACiAJCTE0RjI1MjU2MEQwOEREOEQwMDRF
Q0ZGRiAvKiBKU0Vudmlyb25tZW50UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRW52aXJvbm1lbnRSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxlT3duZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVFMDBCMTY1MkIgLyogV2Vh
a0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtIYW5k
bGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNEY5NzQ0NjEzOEM4NTNF
MDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Njk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmluZVByb3BlcnR5QXR0cmlidXRlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODc5NTEwNjE0QzU0MEZGQjU2MUMxMjQg
LyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4
RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTY5Myw3ICs1NjkxLDYgQEAKIAkJCQlBNTMzOUVDODFCQjRCNDUx
MDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCiAJCQkJQTUzOThGQTkxQzc1MEQ5NTAwNjBB
OTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUExQzc1MEQ5NTAwNjBBOTYz
IC8qIEhlYXBQcm9maWxlci5oICovLAotCQkJCTE0Rjk3NDQ2MTM4Qzg1M0UwMERBMUM2NyAvKiBI
ZWFwUm9vdFZpc2l0b3IuaCAqLywKIAkJCQlBNTRDMkFBRTFDNjU0NEQxMDBBMThENzggLyogSGVh
cFNuYXBzaG90LmNwcCAqLywKIAkJCQlBNTRDMkFBRjFDNjU0NEQxMDBBMThENzggLyogSGVhcFNu
YXBzaG90LmggKi8sCiAJCQkJQTUzMTFDMzQxQzc3Q0VBQzAwRTZCMUI2IC8qIEhlYXBTbmFwc2hv
dEJ1aWxkZXIuY3BwICovLApAQCAtODM3MSw3ICs4MzY4LDYgQEAKIAkJCQkyQUQ4OTMyQjE3RTM4
NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3NlbWJseVRhYmxlLmggaW4g
SGVhZGVycyAqLywKLQkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNp
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4
RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JBNjEwMUExQTdDRUMwMEYx
RjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDYxLDcgKzI0NjEsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRXZWFrbHkoU2xv
dFZpc2l0b3ImCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzaG91bGRWaXNpdFN0cm9uZ2x5
KGxvY2tlcikpIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9p
bnRlcih0aGlzKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjQ3Niw3ICsyNDc2LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJgogCiAgICAgLy8gSWYgd2UgamV0dGlzb24gb3Vy
c2VsdmVzIHdlJ2xsIGluc3RhbGwgb3VyIGFsdGVybmF0aXZlLCBzbyBtYWtlIHN1cmUgdGhhdCBp
dAogICAgIC8vIHN1cnZpdmVzIEdDIGV2ZW4gaWYgd2UgZG9uJ3QuCi0gICAgdmlzaXRvci5hcHBl
bmQoJm1fYWx0ZXJuYXRpdmUpOworICAgIHZpc2l0b3IuYXBwZW5kKG1fYWx0ZXJuYXRpdmUpOwog
ICAgIAogICAgIC8vIFRoZXJlIGFyZSB0d28gdGhpbmdzIHRoYXQgd2UgdXNlIHdlYWsgcmVmZXJl
bmNlIGhhcnZlc3RlcnMgZm9yOiBERkcgZml4cG9pbnQgZm9yCiAgICAgLy8gamV0dGlzb25pbmcs
IGFuZCB0cnlpbmcgdG8gZmluZCBzdHJ1Y3R1cmVzIHRoYXQgd291bGQgYmUgbGl2ZSBiYXNlZCBv
biBzb21lCkBAIC0yNTI4LDcgKzI1MjgsNyBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvCiAgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKCZtX3Vu
Y29uZGl0aW9uYWxGaW5hbGl6ZXIpOwogCiAgICAgaWYgKENvZGVCbG9jayogb3RoZXJCbG9jayA9
IHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWRSZWFkT25seVBvaW50ZXIob3RoZXJCbG9jayk7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVHJ1c3RlZChvdGhlckJsb2NrKTsKIAogICAgIGlmIChtX2ppdENvZGUpCiAgICAgICAgIHZp
c2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKG1faml0Q29kZS0+c2l6ZSgpKTsKQEAgLTI2
NTQsNyArMjY1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24K
ICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9CiAgICAgICAgICAgICAg
ICAgICAgIG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChuZXdTdHJ1Y3R1cmVJRCk7
CiAgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KG9sZFN0cnVj
dHVyZSkpCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIobmV3U3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRUcnVzdGVkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBhbGxBcmVNYXJrZWRTb0ZhciA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjY5OSw3ICsyNjk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRy
YW5zaXRpb25zKGNvbgogICAgICAgICAgICAgICAgIC8vIHRvIG1hcmsgKGkuZS4gaXRzIGdsb2Jh
bCBvYmplY3QgYW5kIHByb3RvdHlwZSBhcmUgYm90aCBhbHJlYWR5CiAgICAgICAgICAgICAgICAg
Ly8gbGl2ZSkuCiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90byk7CisgICAgICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXS5tX3RvKTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIGFsbEFyZU1hcmtlZFNvRmFyID0gZmFsc2U7CiAgICAg
ICAgIH0KQEAgLTI3NDcsNyArMjc0Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkZXRlcm1pbmVMaXZl
bmVzcyhjb25zdCAKICAgICAvLyBBbGwgd2VhayByZWZlcmVuY2VzIGFyZSBsaXZlLiBSZWNvcmQg
dGhpcyBpbmZvcm1hdGlvbiBzbyB3ZSBkb24ndAogICAgIC8vIGNvbWUgYmFjayBoZXJlIGFnYWlu
LCBhbmQgc2NhbiB0aGUgc3Ryb25nIHJlZmVyZW5jZXMuCiAgICAgZGZnQ29tbW9uLT5saXZlbmVz
c0hhc0JlZW5Qcm92ZWQgPSB0cnVlOwotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIodGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHRoaXMpOwogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQogfQogCkBAIC0zMDQ1LDE0ICszMDQ1LDE0IEBAIHZvaWQg
Q29kZUJsb2NrOjp2aXNpdE9TUkV4aXRUYXJnZXRzKGNvbnMKICAgICAvLyBndWFyYW50ZWVpbmcg
dGhhdCBpdCBtYXRjaGVzIHRoZSBkZXRhaWxzIG9mIHRoZSBDb2RlQmxvY2sgd2UgY29tcGlsZWQK
ICAgICAvLyB0aGUgT1NSIGV4aXQgYWdhaW5zdC4KIAotICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Fs
dGVybmF0aXZlKTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2FsdGVybmF0aXZlKTsKIAogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2Rl
LT5kZmdDb21tb24oKTsKICAgICBpZiAoZGZnQ29tbW9uLT5pbmxpbmVDYWxsRnJhbWVzKSB7CiAg
ICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmRmZ0NvbW1vbi0+aW5saW5lQ2Fs
bEZyYW1lcykgewogICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVD
b2RlQmxvY2spOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2spOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoaW5saW5lQ2Fs
bEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jayk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAg
LTMwNjIsMjIgKzMwNjIsMjIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdS
ZWZlcgogewogICAgIFVOVVNFRF9QQVJBTShsb2NrZXIpOwogICAgIAotICAgIHZpc2l0b3IuYXBw
ZW5kKCZtX2dsb2JhbE9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fb3duZXJFeGVjdXRh
YmxlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV91bmxpbmtlZENvZGUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKG1fZ2xvYmFsT2JqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX293bmVyRXhlY3V0
YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQobV91bmxpbmtlZENvZGUpOwogICAgIGlmIChtX3Jh
cmVEYXRhKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2RpcmVjdEV2YWxDb2RlQ2FjaGUudmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMobV9jb25zdGFudFJl
Z2lzdGVycy5kYXRhKCksIG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25FeHBycy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlz
aXRvci5hcHBlbmQoJm1fZnVuY3Rpb25FeHByc1tpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
KG1fZnVuY3Rpb25FeHByc1tpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0
aW9uRGVjbHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9u
RGVjbHNbaV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX2Z1bmN0aW9uRGVjbHNbaV0pOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlcy5z
aXplKCk7ICsraSkKICAgICAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZXNbaV0udmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIGZvciAoQnlWYWxJbmZv
KiBieVZhbEluZm8gOiBtX2J5VmFsSW5mb3MpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZieVZh
bEluZm8tPmNhY2hlZFN5bWJvbCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGJ5VmFsSW5mby0+
Y2FjaGVkU3ltYm9sKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0zMDk4LDE2
ICszMDk4LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0V2Vha1JlZmVyZW4KIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmdDb21tb24tPnRyYW5zaXRpb25zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGlmICghIWRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV9jb2Rl
T3JpZ2luKQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmRmZ0NvbW1vbi0+dHJhbnNpdGlv
bnNbaV0ubV9jb2RlT3JpZ2luKTsgLy8gQWxtb3N0IGNlcnRhaW5seSBub3QgbmVjZXNzYXJ5LCBz
aW5jZSB0aGUgY29kZSBvcmlnaW4gc2hvdWxkIGFsc28gYmUgYSB3ZWFrIHJlZmVyZW5jZS4gQmV0
dGVyIHRvIGJlIHNhZmUsIHRob3VnaC4KLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmRmZ0NvbW1v
bi0+dHJhbnNpdGlvbnNbaV0ubV9mcm9tKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmRmZ0Nv
bW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90byk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZChk
ZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fY29kZU9yaWdpbik7IC8vIEFsbW9zdCBjZXJ0YWlu
bHkgbm90IG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNvZGUgb3JpZ2luIHNob3VsZCBhbHNvIGJlIGEg
d2VhayByZWZlcmVuY2UuIEJldHRlciB0byBiZSBzYWZlLCB0aG91Z2guCisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV9mcm9tKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXS5tX3RvKTsKICAgICB9CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPndlYWtSZWZl
cmVuY2VzW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoZGZnQ29tbW9uLT53ZWFrUmVmZXJl
bmNlc1tpXSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZnQ29tbW9uLT53ZWFr
U3RydWN0dXJlUmVmZXJlbmNlcy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmRmZ0NvbW1vbi0+d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXNbaV0pOworICAgICAgICB2aXNpdG9y
LmFwcGVuZChkZmdDb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzW2ldKTsKIAogICAgIGRm
Z0NvbW1vbi0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkID0gdHJ1ZTsKICNlbmRpZiAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENv
ZGVDYWNoZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EaXJlY3RFdmFsQ29kZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCB2b2lkIERpcmVjdEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRlCiAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICBFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1fY2FjaGVNYXAuZW5kKCk7CiAgICAgZm9yIChFdmFsQ2FjaGVNYXA6Oml0ZXJhdG9yIHB0ciA9
IG1fY2FjaGVNYXAuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZwdHItPnZhbHVlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQocHRyLT52YWx1ZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUuaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNyZWF0ZUFsbG9jYXRp
b25TdHJ1Y3R1cmVGcm9tQmFzZShWTSYsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5
cGUsIFN0cnVjdHVyZSogYmFzZSk7CiAKICAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cnVjdHVyZS5j
bGVhcigpOyB9Ci0gICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikg
eyB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOyB9CisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0
ZShTbG90VmlzaXRvciYgdmlzaXRvcikgeyB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7IH0K
IAogcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RB
bGxvY2F0aW9uUHJvZmlsZS5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1
Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7CiAgICAgfQogCiBw
cml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGlj
QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NzUsNyArNTc1LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhT
bAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9uOgogICAgICAgICBp
ZiAoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkobV9zdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSkp
Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG1f
c3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3N0
cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNl
OwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnZpc2l0
Q2hpbGRyZW4oSlMKICAgICAgICAgdmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhp
c09iamVjdC0+bV91bmxpbmtlZEluc3RydWN0aW9ucy0+c2l6ZUluQnl0ZXMoKSk7CiAgICAgaWYg
KHRoaXNPYmplY3QtPm1fcmFyZURhdGEpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGVu
ZCA9IHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPm1fcmVnZXhwcy5zaXplKCk7IGkgIT0gZW5kOyBp
KyspCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+
bV9yZWdleHBzW2ldKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cmFyZURhdGEtPm1fcmVnZXhwc1tpXSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNyw4ICsxMjcsOCBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENo
CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxp
bmtlZENvZGVCbG9ja0ZvckNhbGwpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2NrRm9yQ2FsbCk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiB9CiAKIEZ1bmN0
aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBwYXNzZWRQYXJlbnRTb3VyY2UsIHN0ZDo6b3B0aW9uYWw8aW50PiBv
dmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5zaWMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuY3BwCShyZXZpc2lvbiAy
MDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDggKzYxLDggQEAgdm9pZCBEZWJ1Z2dlclNjb3BlOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbAogICAgIERlYnVnZ2VyU2NvcGUqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8RGVidWdnZXJTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgaW5mbygpKTsKICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZSk7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV4dCk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9zY29wZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9uZXh0KTsKIH0KIAogU3RyaW5nIERlYnVnZ2VyU2NvcGU6OmNsYXNzTmFtZShjb25zdCBK
U09iamVjdCogb2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkVHJhbnNpdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkVHJhbnNpdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw5ICs1Myw5IEBAIHZvaWQgRGVzaXJlZFRyYW5zaXRpb246OnJlYWxseUFkZChW
TSYgdm0KIAogdm9pZCBEZXNpcmVkVHJhbnNpdGlvbjo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9j
b2RlT3JpZ2luT3duZXIpOwotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZt
X29sZFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1f
bmV3U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9jb2RlT3JpZ2luT3du
ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX29sZFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmRUcnVzdGVkKG1fbmV3U3RydWN0dXJlKTsKIH0KIAogRGVzaXJlZFRyYW5zaXRp
b25zOjpEZXNpcmVkVHJhbnNpdGlvbnMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5j
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgRGVzaXJlZFdlYWtS
ZWZlcmVuY2VzOjpyZWFsbHlBZGQoVk0KIHZvaWQgRGVzaXJlZFdlYWtSZWZlcmVuY2VzOjp2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAoSlNDZWxsKiB0YXJn
ZXQgOiBtX3JlZmVyZW5jZXMpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2lu
dGVyKCZ0YXJnZXQpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQodGFyZ2V0KTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEwLDggKzE0MTAsOCBAQCB2
b2lkIEdyYXBoOjpyZWdpc3RlckZyb3plblZhbHVlcygpCiB2b2lkIEdyYXBoOjp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAoRnJvemVuVmFsdWUqIHZhbHVl
IDogbV9mcm96ZW5WYWx1ZXMpIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJl
YWRPbmx5VmFsdWUodmFsdWUtPnZhbHVlKCkpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKHZhbHVlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHZpc2l0
b3IuYXBwZW5kVHJ1c3RlZCh2YWx1ZS0+dmFsdWUoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZCh2YWx1ZS0+c3RydWN0dXJlKCkpOwogICAgIH0KICAgICAKICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkBAIC0xNDI1
LDI4ICsxNDI1LDI2IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYK
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1
Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwor
ICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobm9kZS0+c3RydWN0dXJl
U2V0KClbaV0pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1
Y3R1cmU6CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5vZGUtPnN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobm9kZS0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlOgogICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgot
ICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIo
Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoCi0g
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMp
OworICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChub2RlLT50cmFuc2l0aW9u
KCktPm5leHQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgTXVsdGlHZXRCeU9mZnNldENhc2UmIGdldENhc2UgOiBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0
RGF0YSgpLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiBnZXRDYXNlLnNldCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKQEAg
LTE0NTUsOSArMTQ1Myw5IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3Im
IHYKICAgICAgICAgICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5t
dWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IHZhcmlhbnQub2xkU3RydWN0dXJlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IHNldC5zaXplKCk7IGotLTspCi0gICAgICAg
ICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVy
KHNldFtqXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQo
c2V0W2pdKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcih2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZCh2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSwxMCArNjE5LDEwIEBAIHZvaWQgUGxhbjo6bWFy
a0NvZGVCbG9ja3MoU2xvdFZpc2l0b3ImIHMKICAgICAvLyBhbiBleHBsaWNpdCBiYXJyaWVyLiBT
bywgd2UgbmVlZCB0byBiZSBwZXNzaW1pc3RpYyBhbmQgYXNzdW1lIHRoYXQKICAgICAvLyBhbGwg
b3VyIENvZGVCbG9ja3MgbXVzdCBiZSB2aXNpdGVkIGR1cmluZyBHQy4KIAotICAgIHNsb3RWaXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGNvZGVCbG9jayk7Ci0gICAgc2xv
dFZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoY29kZUJsb2NrLT5hbHRl
cm5hdGl2ZSgpKTsKKyAgICBzbG90VmlzaXRvci5hcHBlbmRUcnVzdGVkKGNvZGVCbG9jayk7Cisg
ICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwog
ICAgIGlmIChwcm9maWxlZERGR0NvZGVCbG9jaykKLSAgICAgICAgc2xvdFZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIocHJvZmlsZWRERkdDb2RlQmxvY2spOworICAgICAg
ICBzbG90VmlzaXRvci5hcHBlbmRUcnVzdGVkKHByb2ZpbGVkREZHQ29kZUJsb2NrKTsKIH0KIAog
dm9pZCBQbGFuOjpyZW1lbWJlckNvZGVCbG9ja3MoVk0mIHZtKQpAQCAtNjQ3LDE2ICs2NDcsMTYg
QEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogCiAgICAgY2xlYW5N
dXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0
SGFuZGxlVmFsdWVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFZhbHVlKCZtdXN0SGFuZGxlVmFsdWVzW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRU
cnVzdGVkKCZtdXN0SGFuZGxlVmFsdWVzW2ldKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWRSZWFkT25seVBvaW50ZXIoY29kZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7Ci0gICAgdmlz
aXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihwcm9maWxlZERGR0NvZGVCbG9j
ayk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGNvZGVCbG9jayk7CisgICAgdmlzaXRvci5h
cHBlbmRUcnVzdGVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CisgICAgdmlzaXRvci5hcHBl
bmRUcnVzdGVkKHByb2ZpbGVkREZHQ29kZUJsb2NrKTsKIAogICAgIGlmIChpbmxpbmVDYWxsRnJh
bWVzKSB7CiAgICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxG
cmFtZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7Cisg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGlu
ZUNvZGVCbG9jay5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNiBAQAogCiAjaW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKICNpbmNsdWRlICJIYW5kbGVC
bG9ja0lubGluZXMuaCIKLSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxv
Zy5oPgpAQCAtNTksMTQgKzU4LDE0IEBAIHZvaWQgSGFuZGxlU2V0Ojpncm93KCkKICAgICB9CiB9
CiAKLXZvaWQgSGFuZGxlU2V0Ojp2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiBo
ZWFwUm9vdFZpc2l0b3IpCit2b2lkIEhhbmRsZVNldDo6dmlzaXRTdHJvbmdIYW5kbGVzKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIE5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsK
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7
IG5vZGUgPSBub2RlLT5uZXh0KCkpIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNMaXZlTm9kZShub2RlKSk7CiAjZW5kaWYKLSAgICAgICAgaGVh
cFJvb3RWaXNpdG9yLnZpc2l0KG5vZGUtPnNsb3QoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZCgqbm9kZS0+c2xvdCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVNldC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhhbmRsZVNldDsKLWNsYXNzIEhlYXBSb290Vmlz
aXRvcjsKIGNsYXNzIFZNOwogY2xhc3MgSlNWYWx1ZTsKK2NsYXNzIFNsb3RWaXNpdG9yOwogCiBj
bGFzcyBIYW5kbGVOb2RlIHsKIHB1YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAg
IEhhbmRsZVNsb3QgYWxsb2NhdGUoKTsKICAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xvdCk7
CiAKLSAgICB2b2lkIHZpc2l0U3Ryb25nSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2
b2lkIHZpc2l0U3Ryb25nSGFuZGxlcyhTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCB3cml0ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIYW5kbGVTdGFjay5oIgogCi0jaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTQwLDcg
KzM5LDcgQEAgSGFuZGxlU3RhY2s6OkhhbmRsZVN0YWNrKCkKICAgICBncm93KCk7CiB9CiAKLXZv
aWQgSGFuZGxlU3RhY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQor
dm9pZCBIYW5kbGVTdGFjazo6dmlzaXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgY29u
c3QgVmVjdG9yPEhhbmRsZVNsb3Q+JiBibG9ja3MgPSBtX2Jsb2NrU3RhY2suYmxvY2tzKCk7CiAg
ICAgc2l6ZV90IGJsb2NrTGVuZ3RoID0gbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoOwpAQCAtNDgs
MTAgKzQ3LDEwIEBAIHZvaWQgSGFuZGxlU3RhY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYKICAg
ICBpbnQgZW5kID0gYmxvY2tzLnNpemUoKSAtIDE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBl
bmQ7ICsraSkgewogICAgICAgICBIYW5kbGVTbG90IGJsb2NrID0gYmxvY2tzW2ldOwotICAgICAg
ICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoYmxvY2ssIGJsb2NrTGVuZ3RoKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmRUcnVzdGVkKGJsb2NrLCBibG9ja0xlbmd0aCk7CiAgICAgfQogICAgIEhhbmRs
ZVNsb3QgYmxvY2sgPSBibG9ja3NbZW5kXTsKLSAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoYmxv
Y2ssIG1fZnJhbWUubV9uZXh0IC0gYmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChi
bG9jaywgbV9mcmFtZS5tX25leHQgLSBibG9jayk7CiB9CiAKIHZvaWQgSGFuZGxlU3RhY2s6Omdy
b3coKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgTG9jYWxTY29wZTsKLWNsYXNzIEhlYXBSb290VmlzaXRvcjsKK2NsYXNzIFNsb3RWaXNpdG9y
OwogCiBjbGFzcyBIYW5kbGVTdGFjayB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKIAogICAgIEhhbmRsZVNsb3QgcHVzaCgpOwogCi0gICAgdm9pZCB2aXNpdChIZWFwUm9vdFZp
c2l0b3ImKTsKKyAgICB2b2lkIHZpc2l0KFNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJI
ZWFwSGVscGVyUG9vbC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1
ZGUgIkhlYXBQcm9maWxlci5oIgotI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1
ZGUgIkhlYXBTbmFwc2hvdC5oIgogI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVk
ZSAiSGVhcFZlcmlmaWVyLmgiCkBAIC01MTUsOCArNTE0LDYgQEAgdm9pZCBIZWFwOjptYXJrVG9G
aXhwb2ludChkb3VibGUgZ2NTdGFydAogewogICAgIFRpbWluZ1Njb3BlIG1hcmtUb0ZpeHBvaW50
VGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrVG9GaXhwb2ludCIpOwogICAgIAotICAgIEhl
YXBSb290VmlzaXRvciBoZWFwUm9vdFZpc2l0b3IoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOwot
ICAgIAogICAgIGlmIChtX2NvbGxlY3Rpb25TY29wZSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwp
IHsKICAgICAgICAgbV9vcGFxdWVSb290cy5jbGVhcigpOwogICAgICAgICBtX2NvbGxlY3RvclNs
b3RWaXNpdG9yLT5jbGVhck1hcmtTdGFja3MoKTsKQEAgLTU2MCw2ICs1NTcsNyBAQCB2b2lkIEhl
YXA6Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIH0pOwogCiAgICAgbV9j
b2xsZWN0b3JTbG90VmlzaXRvci0+ZGlkU3RhcnRNYXJraW5nKCk7CisgICAgU2xvdFZpc2l0b3Im
IHNsb3RWaXNpdG9yID0gbV9jb2xsZWN0b3JTbG90VmlzaXRvcjsKIAogICAgIFNwYWNlVGltZVNj
aGVkdWxlciBzY2hlZHVsZXIoKnRoaXMpOwogICAgIApAQCAtNTgwLDU1ICs1NzgsNTMgQEAgdm9p
ZCBIZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAvLyBOb3cgd2Ug
dmlzaXQgcm9vdHMgdGhhdCBkb24ndCBnZXQgYmFycmllcmVkLCBzbyBlYWNoIGZpeHBvaW50IGl0
ZXJhdGlvbiBqdXN0IHJldmlzaXRzCiAgICAgICAgIC8vIGFsbCBvZiB0aGVtLgogI2lmIEpTQ19P
QkpDX0FQSV9FTkFCTEVECi0gICAgICAgIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoKm1fdm0s
ICptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgc2NhbkV4dGVybmFsUmVtZW1iZXJl
ZFNldCgqbV92bSwgc2xvdFZpc2l0b3IpOwogI2VuZGlmCiAgICAgICAgICAgICAKICAgICAgICAg
aWYgKG1fdm0tPnNtYWxsU3RyaW5ncy5uZWVkc1RvQmVWaXNpdGVkKCptX2NvbGxlY3Rpb25TY29w
ZSkpCi0gICAgICAgICAgICBtX3ZtLT5zbWFsbFN0cmluZ3MudmlzaXRTdHJvbmdSZWZlcmVuY2Vz
KCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIG1fdm0tPnNtYWxsU3RyaW5n
cy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMoc2xvdFZpc2l0b3IpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fcHJvdGVjdGVkVmFsdWVzKQotICAgICAgICAgICAgaGVh
cFJvb3RWaXNpdG9yLnZpc2l0KCZwYWlyLmtleSk7CisgICAgICAgICAgICBzbG90VmlzaXRvci5h
cHBlbmRUcnVzdGVkKHBhaXIua2V5KTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9tYXJr
TGlzdFNldCAmJiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCi0gICAgICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlcjo6bWFya0xpc3RzKGhlYXBSb290VmlzaXRvciwgKm1fbWFya0xpc3RTZXQpOwor
ICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhzbG90VmlzaXRvciwg
Km1fbWFya0xpc3RTZXQpOwogICAgICAgICAgICAgCi0gICAgICAgIGlmIChtX3ZtLT5leGNlcHRp
b24oKSkKLSAgICAgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdChtX3ZtLT5hZGRyZXNzT2ZF
eGNlcHRpb24oKSk7Ci0gICAgICAgIGlmIChtX3ZtLT5sYXN0RXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQobV92bS0+YWRkcmVzc09mTGFzdEV4Y2VwdGlvbigp
KTsKKyAgICAgICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3ZtLT5leGNlcHRpb24oKSk7
CisgICAgICAgIHNsb3RWaXNpdG9yLmFwcGVuZFRydXN0ZWQobV92bS0+bGFzdEV4Y2VwdGlvbigp
KTsKICAgICAgICAgICAgIAotICAgICAgICBtX2hhbmRsZVNldC52aXNpdFN0cm9uZ0hhbmRsZXMo
aGVhcFJvb3RWaXNpdG9yKTsKLSAgICAgICAgbV9oYW5kbGVTdGFjay52aXNpdChoZWFwUm9vdFZp
c2l0b3IpOworICAgICAgICBtX2hhbmRsZVNldC52aXNpdFN0cm9uZ0hhbmRsZXMoc2xvdFZpc2l0
b3IpOworICAgICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KHNsb3RWaXNpdG9yKTsKIAogI2lmIEVO
QUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICAgICAgaWYgKFNhbXBsaW5nUHJvZmlsZXIqIHNh
bXBsaW5nUHJvZmlsZXIgPSBtX3ZtLT5zYW1wbGluZ1Byb2ZpbGVyKCkpIHsKICAgICAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKHNhbXBsaW5nUHJvZmlsZXItPmdldExvY2soKSk7CiAgICAgICAg
ICAgICBzYW1wbGluZ1Byb2ZpbGVyLT5wcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKCk7Ci0g
ICAgICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLT52aXNpdCgqbV9jb2xsZWN0b3JTbG90VmlzaXRv
cik7CisgICAgICAgICAgICBzYW1wbGluZ1Byb2ZpbGVyLT52aXNpdChzbG90VmlzaXRvcik7CiAg
ICAgICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCi0g
ICAgICAgICAgICAgICAgZGF0YUxvZygiU2FtcGxpbmcgUHJvZmlsZXIgZGF0YTpcbiIsICptX2Nv
bGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJTYW1wbGluZyBQ
cm9maWxlciBkYXRhOlxuIiwgc2xvdFZpc2l0b3IpOwogICAgICAgICB9CiAjZW5kaWYgLy8gRU5B
QkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAKICAgICAgICAgaWYgKG1fdm0tPnR5cGVQ
cm9maWxlcigpKQotICAgICAgICAgICAgbV92bS0+dHlwZVByb2ZpbGVyTG9nKCktPnZpc2l0KCpt
X2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAgICAgIG1fdm0tPnR5cGVQcm9maWxlckxv
ZygpLT52aXNpdChzbG90VmlzaXRvcik7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgIG1fdm0t
PnNoYWRvd0NoaWNrZW4oKS52aXNpdENoaWxkcmVuKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsK
KyAgICAgICAgbV92bS0+c2hhZG93Q2hpY2tlbigpLnZpc2l0Q2hpbGRyZW4oc2xvdFZpc2l0b3Ip
OwogICAgICAgICAgICAgICAgIAotICAgICAgICBtX2ppdFN0dWJSb3V0aW5lcy0+dHJhY2VNYXJr
ZWRTdHViUm91dGluZXMoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICBtX2ppdFN0
dWJSb3V0aW5lcy0+dHJhY2VNYXJrZWRTdHViUm91dGluZXMoc2xvdFZpc2l0b3IpOwogCi0gICAg
ICAgIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgp
OworICAgICAgICBzbG90VmlzaXRvci5tZXJnZU9wYXF1ZVJvb3RzSWZOZWNlc3NhcnkoKTsKICAg
ICAgICAgZm9yIChhdXRvJiBwYXJhbGxlbFZpc2l0b3IgOiBtX3BhcmFsbGVsU2xvdFZpc2l0b3Jz
KQogICAgICAgICAgICAgcGFyYWxsZWxWaXNpdG9yLT5tZXJnZU9wYXF1ZVJvb3RzSWZOZWNlc3Nh
cnkoKTsKIAotICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHMoaGVhcFJvb3RWaXNp
dG9yKTsKKyAgICAgICAgbV9vYmplY3RTcGFjZS52aXNpdFdlYWtTZXRzKHNsb3RWaXNpdG9yKTsK
ICAgICAgICAgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgICAgIHZpc2l0Q29tcGlsZXJX
b3JrbGlzdFdlYWtSZWZlcmVuY2VzKCk7Ci0gICAgICAgIERGRzo6bWFya0NvZGVCbG9ja3MoKm1f
dm0sICptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKLSAgICAgICAgYm9vbCBzaG91bGRUZXJtaW5h
dGUgPSBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5pc0VtcHR5KCkgJiYgbV9tdXRhdG9yTWFya1N0
YWNrLT5pc0VtcHR5KCk7CisgICAgICAgIERGRzo6bWFya0NvZGVCbG9ja3MoKm1fdm0sIHNsb3RW
aXNpdG9yKTsKKyAgICAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUgPSBzbG90VmlzaXRvci5pc0Vt
cHR5KCkgJiYgbV9tdXRhdG9yTWFya1N0YWNrLT5pc0VtcHR5KCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoT3B0aW9uczo6bG9nR0MoKSkgewotICAgICAgICAgICAgZGF0YUxvZyhtX2NvbGxlY3Rv
clNsb3RWaXNpdG9yLT5jb2xsZWN0b3JNYXJrU3RhY2soKS5zaXplKCksICIrIiwgbV9tdXRhdG9y
TWFya1N0YWNrLT5zaXplKCkgKyBtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5tdXRhdG9yTWFya1N0
YWNrKCkuc2l6ZSgpLCAiLCBhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgLyAxMDI0LCAi
IGtiLCBiPSIsIG1fYmFycmllcnNFeGVjdXRlZCwgIiwgbXU9Iiwgc2NoZWR1bGVyLmN1cnJlbnRE
ZWNpc2lvbigpLnRhcmdldE11dGF0b3JVdGlsaXphdGlvbigpLCAiICIpOworICAgICAgICAgICAg
ZGF0YUxvZyhzbG90VmlzaXRvci5jb2xsZWN0b3JNYXJrU3RhY2soKS5zaXplKCksICIrIiwgbV9t
dXRhdG9yTWFya1N0YWNrLT5zaXplKCkgKyBzbG90VmlzaXRvci5tdXRhdG9yTWFya1N0YWNrKCku
c2l6ZSgpLCAiLCBhPSIsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgLyAxMDI0LCAiIGtiLCBi
PSIsIG1fYmFycmllcnNFeGVjdXRlZCwgIiwgbXU9Iiwgc2NoZWR1bGVyLmN1cnJlbnREZWNpc2lv
bigpLnRhcmdldE11dGF0b3JVdGlsaXphdGlvbigpLCAiICIpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8gY29uc2VydmF0aXZlbHkgZW5zdXJl
IHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0IGFyZQpAQCAtNjQ1LDE0ICs2NDEs
MTQgQEAgdm9pZCBIZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAK
ICAgICAgICAgLy8gVGhlIFNsb3RWaXNpdG9yJ3MgbWFyayBzdGFja3MgYXJlIGFjY2Vzc2VkIGJ5
IHRoZSBjb2xsZWN0b3IgdGhyZWFkIChpLmUuIHRoaXMgdGhyZWFkKQogICAgICAgICAvLyB3aXRo
b3V0IGxvY2tzLiBUaGF0J3Mgd2h5IHdlIGRvdWJsZS1idWZmZXIuCi0gICAgICAgIG1fbXV0YXRv
ck1hcmtTdGFjay0+dHJhbnNmZXJUbyhtX2NvbGxlY3RvclNsb3RWaXNpdG9yLT5tdXRhdG9yTWFy
a1N0YWNrKCkpOworICAgICAgICBtX211dGF0b3JNYXJrU3RhY2stPnRyYW5zZmVyVG8oc2xvdFZp
c2l0b3IubXV0YXRvck1hcmtTdGFjaygpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChPcHRpb25z
Ojpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIkxp
dmUgV2VhayBIYW5kbGVzOlxuIiwgKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAg
ICAgZGF0YUxvZygiTGl2ZSBXZWFrIEhhbmRsZXM6XG4iLCBzbG90VmlzaXRvcik7CiAgICAgICAg
IAogICAgICAgICB7CiAgICAgICAgICAgICBUaW1pbmdTY29wZSB0cmFjZVRpbWluZ1Njb3BlKCp0
aGlzLCAiSGVhcDo6bWFya1RvRml4cG9pbnQgdHJhY2luZyIpOwotICAgICAgICAgICAgUGFyYWxs
ZWxNb2RlRW5hYmxlciBlbmFibGVyKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsKKyAgICAgICAg
ICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxlcihzbG90VmlzaXRvcik7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VDb2xsZWN0b3JUaW1lc2xpY2luZygpKSB7
CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVyLnNuYXBQaGFzZSgpOwpAQCAtNjYzLDcgKzY1OSw3
IEBAIHZvaWQgSGVhcDo6bWFya1RvRml4cG9pbnQoZG91YmxlIGdjU3RhcnQKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGRlY2lzaW9uLnNob3VsZEJlUmVzdW1lZCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdW1lVGhlV29ybGRT
Y29wZSByZXN1bWVUaGVXb3JsZFNjb3BlKCp0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkcmFpblJlc3VsdCA9IG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmRyYWluSW5QYXJhbGxl
bFBhc3NpdmVseShkZWNpc2lvbi50aW1lVG9TdG9wKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRyYWluUmVzdWx0ID0gc2xvdFZpc2l0b3IuZHJhaW5JblBhcmFsbGVsUGFzc2l2ZWx5
KGRlY2lzaW9uLnRpbWVUb1N0b3AoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGRyYWluUmVzdWx0ID09IFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdDo6RG9uZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIHdpbGwg
c3RvcC4gQnV0IG1heWJlIHRoZSBzY2hlZHVsZXIgZG9lcyBub3Qgd2FudAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyB0aGF0LgpAQCAtNjgwLDEzICs2NzYsMTMgQEAgdm9pZCBI
ZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJ3dWwhPSIsIHdha2VVcExhdGVuY3kubWlsbGlzZWNvbmRzKCks
ICIgbXMgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZHJhaW5SZXN1bHQgPSBtX2NvbGxlY3Rv
clNsb3RWaXNpdG9yLT5kcmFpbkluUGFyYWxsZWwoZGVjaXNpb24udGltZVRvUmVzdW1lKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhaW5SZXN1bHQgPSBzbG90VmlzaXRvci5kcmFpbklu
UGFyYWxsZWwoZGVjaXNpb24udGltZVRvUmVzdW1lKCkpOwogICAgICAgICAgICAgICAgIH0gd2hp
bGUgKGRyYWluUmVzdWx0ICE9IFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdDo6RG9uZSk7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIERpc2FibGluZyBjb2xs
ZWN0b3IgdGltZXNsaWNpbmcgaXMgbWVhbnQgdG8gYmUgdXNlZCB0b2dldGhlciB3aXRoCiAgICAg
ICAgICAgICAgICAgLy8gLS1jb2xsZWN0Q29udGludW91c2x5PXRydWUgdG8gbWF4aW1pemUgdGhl
IG9wcG9ydHVuaXR5IGZvciBoYXJtZnVsIHJhY2VzLgogICAgICAgICAgICAgICAgIFJlc3VtZVRo
ZVdvcmxkU2NvcGUgcmVzdW1lVGhlV29ybGRTY29wZSgqdGhpcyk7Ci0gICAgICAgICAgICAgICAg
bV9jb2xsZWN0b3JTbG90VmlzaXRvci0+ZHJhaW5JblBhcmFsbGVsKCk7CisgICAgICAgICAgICAg
ICAgc2xvdFZpc2l0b3IuZHJhaW5JblBhcmFsbGVsKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDk4
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDYgQEAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogY2xhc3MgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOwogY2xhc3MgSGVhcDsKIGNsYXNzIEhlYXBQcm9maWxlcjsKLWNsYXNz
IEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIEhlYXBWZXJpZmllcjsKIGNsYXNzIEhlbHBpbmdHQ1Nj
b3BlOwogY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwpAQCAtNDU5LDcgKzQ1OCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKENvbnNlcnZhdGl2ZVJvb3RzJik7
CiAgICAgdm9pZCB2aXNpdENvbXBpbGVyV29ya2xpc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZv
aWQgcmVtb3ZlRGVhZENvbXBpbGVyV29ya2xpc3RFbnRyaWVzKCk7Ci0gICAgdm9pZCBtYXJrVG9G
aXhwb2ludChIZWFwUm9vdFZpc2l0b3ImKTsKICAgICB2b2lkIHVwZGF0ZU9iamVjdENvdW50cyhk
b3VibGUgZ2NTdGFydFRpbWUpOwogICAgIHZvaWQgZW5kTWFya2luZygpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RWaXNpdG9yLmgJKG5v
bmV4aXN0ZW50KQpAQCAtMSw4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU2xvdFZp
c2l0b3IuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLSAgICAvLyBQcml2aWxlZ2VkIGNsYXNzIGZvciBtYXJraW5nIEpTVmFsdWVzIGRpcmVj
dGx5LiBJdCBpcyBvbmx5IHNhZmUgdG8gdXNlCi0gICAgLy8gdGhpcyBjbGFzcyB0byBtYXJrIGRp
cmVjdCBoZWFwIHJvb3RzIHRoYXQgYXJlIG1hcmtlZCBkdXJpbmcgZXZlcnkgR0MgcGFzcy4KLSAg
ICAvLyBBbGwgb3RoZXIgcmVmZXJlbmNlcyBzaG91bGQgYmUgd3JhcHBlZCBpbiBXcml0ZUJhcnJp
ZXJzLgotICAgIGNsYXNzIEhlYXBSb290VmlzaXRvciB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIEhlYXA7Ci0gICAgICAgIEhlYXBSb290VmlzaXRvcihTbG90VmlzaXRvciYp
OwotCi0gICAgcHVibGljOgotICAgICAgICB2b2lkIHZpc2l0KEpTVmFsdWUqKTsKLSAgICAgICAg
dm9pZCB2aXNpdChKU1ZhbHVlKiwgc2l6ZV90KTsKLSAgICAgICAgdm9pZCB2aXNpdChKU1N0cmlu
ZyoqKTsKLSAgICAgICAgdm9pZCB2aXNpdChKU0NlbGwqKik7Ci0KLSAgICAgICAgU2xvdFZpc2l0
b3ImIHZpc2l0b3IoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNsb3RWaXNpdG9yJiBtX3Zp
c2l0b3I7Ci0gICAgfTsKLQotICAgIGlubGluZSBIZWFwUm9vdFZpc2l0b3I6OkhlYXBSb290Vmlz
aXRvcihTbG90VmlzaXRvciYgdmlzaXRvcikKLSAgICAgICAgOiBtX3Zpc2l0b3IodmlzaXRvcikK
LSAgICB7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdChK
U1ZhbHVlKiBzbG90KQotICAgIHsKLSAgICAgICAgbV92aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
VmFsdWUoc2xvdCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVhcFJvb3RWaXNpdG9yOjp2
aXNpdChKU1ZhbHVlKiBzbG90LCBzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgICAgICBtX3Zpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRWYWx1ZSgmc2xvdFtpXSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgSGVh
cFJvb3RWaXNpdG9yOjp2aXNpdChKU1N0cmluZyoqIHNsb3QpCi0gICAgewotICAgICAgICBtX3Zp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKHNsb3QpOwotICAgIH0KLQotICAgIGlubGlu
ZSB2b2lkIEhlYXBSb290VmlzaXRvcjo6dmlzaXQoSlNDZWxsKiogc2xvdCkKLSAgICB7Ci0gICAg
ICAgIG1fdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoc2xvdCk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIFNsb3RWaXNpdG9yJiBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0b3IoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fdmlzaXRvcjsKLSAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFJvb3RW
aXNpdG9yLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMK
LW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBMYXJnZUFsbG9jYXRpb246OnNocmlu
aygpCiAgICAgbV93ZWFrU2V0LnNocmluaygpOwogfQogCi12b2lkIExhcmdlQWxsb2NhdGlvbjo6
dmlzaXRXZWFrU2V0KEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKK3ZvaWQgTGFyZ2VBbGxvY2F0
aW9uOjp2aXNpdFdlYWtTZXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV93ZWFrU2V0
LnZpc2l0KHZpc2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFy
Z2VBbGxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TGFyZ2VBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBTbG90VmlzaXRvcjsKKwogLy8gV2ViS2l0
IGhhcyBhIGdvb2QgbWFsbG9jIHRoYXQgYWxyZWFkeSBrbm93cyB3aGF0IHRvIGRvIGZvciBsYXJn
ZSBhbGxvY2F0aW9ucy4gVGhlIEdDIHNob3VsZG4ndAogLy8gaGF2ZSB0byB0aGluayBhYm91dCBz
dWNoIHRoaW5ncy4gVGhhdCdzIHdoZXJlIExhcmdlQWxsb2NhdGlvbiBjb21lcyBpbi4gV2Ugd2ls
bCBhbGxvY2F0ZSBsYXJnZQogLy8gb2JqZWN0cyBkaXJlY3RseSB1c2luZyBtYWxsb2MsIGFuZCBw
dXQgdGhlIExhcmdlQWxsb2NhdGlvbiBoZWFkZXIganVzdCBiZWZvcmUgdGhlbS4gV2UgY2FuIGRl
dGVjdApAQCAtNjIsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBzaHJpbmsoKTsK
ICAgICAKLSAgICB2b2lkIHZpc2l0V2Vha1NldChIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2b2lk
IHZpc2l0V2Vha1NldChTbG90VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcFdlYWtTZXQoKTsKICAg
ICAKICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKSB7IG1faXNOZXdseUFsbG9jYXRlZCA9
IGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJ
KHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgY2xhc3MgSGVhcDsKIGNsYXNz
IEpTQ2VsbDsKIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKIGNsYXNzIE1hcmtlZFNwYWNlOworY2xh
c3MgU2xvdFZpc2l0b3I7CiAKIHR5cGVkZWYgdWludHB0cl90IEJpdHM7CiB0eXBlZGVmIHVpbnQz
Ml90IEhlYXBWZXJzaW9uOwpAQCAtMTMyLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgdmlz
aXRXZWFrU2V0KEhlYXBSb290VmlzaXRvciYpOworICAgICAgICB1bnNpZ25lZCB2aXNpdFdlYWtT
ZXQoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCByZWFwV2Vha1NldCgpOwogICAgICAgICAg
ICAgCiAgICAgICAgIC8vIFdoaWxlIGFsbG9jYXRpbmcgZnJvbSBhIGZyZWUgbGlzdCwgTWFya2Vk
QmxvY2sgdGVtcG9yYXJpbHkgaGFzIGJvZ3VzCkBAIC00MzEsOSArNDMyLDkgQEAgaW5saW5lIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c2hyaW5rKAogICAgIG1fd2Vha1NldC5zaHJpbmsoKTsK
IH0KIAotaW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnZpc2l0V2Vha1NldChI
ZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKK2lubGluZSB1bnNpZ25lZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjp2aXNpdFdlYWtTZXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
cmV0dXJuIG1fd2Vha1NldC52aXNpdChoZWFwUm9vdFZpc2l0b3IpOworICAgIHJldHVybiBtX3dl
YWtTZXQudmlzaXQodmlzaXRvcik7CiB9CiAKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnJlYXBXZWFrU2V0KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDEwICszNTksMTAgQEAg
dm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogICAgIG1fYWxsb2NhdG9y
Rm9yRW1wdHlBbGxvY2F0aW9uID0gbV9maXJzdEFsbG9jYXRvcjsKIH0KIAotdm9pZCBNYXJrZWRT
cGFjZTo6dmlzaXRXZWFrU2V0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKK3Zv
aWQgTWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgYXV0byB2aXNpdCA9IFsmXSAoV2Vha1NldCogd2Vha1NldCkgewotICAgICAgICB3ZWFrU2V0
LT52aXNpdChoZWFwUm9vdFZpc2l0b3IpOworICAgICAgICB3ZWFrU2V0LT52aXNpdCh2aXNpdG9y
KTsKICAgICB9OwogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCi0gICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBSb290
VmlzaXRvciYpOworICAgIHZvaWQgdmlzaXRXZWFrU2V0cyhTbG90VmlzaXRvciYpOwogICAgIHZv
aWQgcmVhcFdlYWtTZXRzKCk7CiAKICAgICBNYXJrZWRCbG9ja1NldCYgYmxvY2tzKCkgeyByZXR1
cm4gbV9ibG9ja3M7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQg
U2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXIKICAgICB9IH0KIH0KIAotdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kKEpTVmFsdWUgdmFsdWUpCit2b2lkIFNsb3RWaXNpdG9yOjphcHBl
bmRUcnVzdGVkKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXND
ZWxsKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQCBjbGFz
cyBTbG90VmlzaXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKICAgICBmcmll
bmQgY2xhc3MgU2V0Q3VycmVudENlbGxTY29wZTsKLSAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RW
aXNpdG9yOyAvLyBBbGxvd2VkIHRvIG1hcmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3Rs
eS4KICAgICBmcmllbmQgY2xhc3MgSGVhcDsKIAogcHVibGljOgpAQCAtNzAsMjAgKzY5LDI3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJik7CiAgICAgCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiop
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5kSGlkZGVuKFdyaXRlQmFycmll
ckJhc2U8VD4qKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZChjb25zdCBX
cml0ZUJhcnJpZXJCYXNlPFQ+Jik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhcHBl
bmRIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxUPiYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yPiB2b2lkIGFwcGVuZChJdGVyYXRvciBiZWdpbiAsIEl0ZXJhdG9yIGVuZCk7
Ci0gICAgdm9pZCBhcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiosIHNpemVf
dCBjb3VudCk7Ci0gICAgdm9pZCBhcHBlbmRWYWx1ZXNIaWRkZW4oV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiosIHNpemVfdCBjb3VudCk7CisgICAgdm9pZCBhcHBlbmRWYWx1ZXMoY29uc3QgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiosIHNpemVfdCBjb3VudCk7CisgICAgdm9pZCBhcHBlbmRW
YWx1ZXNIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiosIHNpemVfdCBjb3Vu
dCk7CisgICAgCisgICAgLy8gVGhlc2UgZG9uJ3QgcmVxdWlyZSB5b3UgdG8gcHJvdmUgdGhhdCB5
b3UgaGF2ZSBhIFdyaXRlQmFycmllcjw+LiBUaGF0IG1ha2VzIHNlbnNlCisgICAgLy8gZm9yOgor
ICAgIC8vCisgICAgLy8gLSByb290cy4KKyAgICAvLyAtIHNvcGhpc3RpY2F0ZWQgZGF0YSBzdHJ1
Y3R1cmVzIHRoYXQgYmFycmllciB0aHJvdWdoIG90aGVyIG1lYW5zIChsaWtlIERGRzo6UGxhbiBh
bmQKKyAgICAvLyAgIGZyaWVuZHMpLgorICAgIC8vCisgICAgLy8gSWYgeW91IGFyZSBub3QgYSBy
b290IGFuZCB5b3UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb2YgYmFycmllciB5b3UgaGF2ZSwgdGhl
biB5b3UKKyAgICAvLyBzaG91bGRuJ3QgY2FsbCB0aGVzZSBtZXRob2RzLgorICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXBwZW5kVHJ1c3RlZChKU1ZhbHVlKTsKKyAgICB2b2lkIGFwcGVuZFRy
dXN0ZWQoSlNWYWx1ZSosIHNpemVfdCk7CisgICAgdm9pZCBhcHBlbmRUcnVzdGVkKEpTQ2VsbCop
OwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhcHBlbmRVbmJhcnJp
ZXJlZFBvaW50ZXIoVCoqKTsKLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkVmFsdWUoSlNWYWx1
ZSopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhcHBlbmRVbmJhcnJpZXJl
ZFdlYWsoV2VhazxUPiopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBhcHBl
bmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihUKik7Ci0gICAgdm9pZCBhcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5VmFsdWUoSlNWYWx1ZSk7CisgICAgdm9pZCBhcHBlbmRUcnVzdGVkKGNvbnN0
IFdlYWs8VD4mIHdlYWspOwogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkT3Bh
cXVlUm9vdCh2b2lkKik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWluc09wYXF1
ZVJvb3Qodm9pZCopIGNvbnN0OwpAQCAtMTQ5LDcgKzE1NSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFBhcmFsbGVsTW9kZUVuYWJsZXI7CiAgICAgCi0gICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoSlNWYWx1ZSk7IC8vIFRoaXMgaXMgcHJpdmF0ZSB0byBl
bmNvdXJhZ2UgY2xpZW50cyB0byB1c2UgV3JpdGVCYXJyaWVyPFQ+LgogICAgIHZvaWQgYXBwZW5k
SlNDZWxsT3JBdXhpbGlhcnkoSGVhcENlbGwqKTsKICAgICB2b2lkIGFwcGVuZEhpZGRlbihKU1Zh
bHVlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2NiArMzEsNTIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9p
ZCBTbG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKiBzbG90KQotewotICAg
IEFTU0VSVChzbG90KTsKLSAgICBhcHBlbmQoKnNsb3QpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQ
b2ludGVyKFQqIGNlbGwpCi17Ci0gICAgYXBwZW5kKGNlbGwpOwotfQotCi1pbmxpbmUgdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1ZhbHVlKiBzbG90KQoraW5saW5l
IHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0ZWQoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNv
dW50KQogewotICAgIEFTU0VSVChzbG90KTsKLSAgICBhcHBlbmQoKnNsb3QpOworICAgIGZvciAo
c2l6ZV90IGkgPSBjb3VudDsgaS0tOykKKyAgICAgICAgYXBwZW5kVHJ1c3RlZChzbG90W2ldKTsK
IH0KIAotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlW
YWx1ZShKU1ZhbHVlIHZhbHVlKQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0
ZWQoSlNDZWxsKiBjZWxsKQogewotICAgIGFwcGVuZCh2YWx1ZSk7CisgICAgYXBwZW5kVHJ1c3Rl
ZChKU1ZhbHVlKGNlbGwpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lk
IFNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFdlYWsoV2VhazxUPiogd2VhaykKK2lubGlu
ZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUcnVzdGVkKGNvbnN0IFdlYWs8VD4mIHdlYWspCiB7
Ci0gICAgQVNTRVJUKHdlYWspOwotICAgIGFwcGVuZCh3ZWFrLT5nZXQoKSk7CisgICAgYXBwZW5k
VHJ1c3RlZCh3ZWFrLmdldCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2
b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQoV3JpdGVCYXJyaWVyQmFzZTxUPiogc2xvdCkKK2lubGlu
ZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQoY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxUPiYgc2xv
dCkKIHsKLSAgICBhcHBlbmQoc2xvdC0+Z2V0KCkpOworICAgIGFwcGVuZFRydXN0ZWQoc2xvdC5n
ZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBTbG90VmlzaXRv
cjo6YXBwZW5kSGlkZGVuKFdyaXRlQmFycmllckJhc2U8VD4qIHNsb3QpCitpbmxpbmUgdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VD4mIHNsb3Qp
CiB7Ci0gICAgYXBwZW5kSGlkZGVuKHNsb3QtPmdldCgpKTsKKyAgICBhcHBlbmRIaWRkZW4oc2xv
dC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgogaW5saW5lIHZvaWQg
U2xvdFZpc2l0b3I6OmFwcGVuZChJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQogewogICAg
IGZvciAoYXV0byBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGFwcGVuZCgm
Kml0KTsKKyAgICAgICAgYXBwZW5kKCppdCk7CiB9CiAKLWlubGluZSB2b2lkIFNsb3RWaXNpdG9y
OjphcHBlbmRWYWx1ZXMoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVf
dCBjb3VudCkKK2lubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRWYWx1ZXMoY29uc3QgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVfdCBjb3VudCkKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGFwcGVuZCgmYmFycmll
cnNbaV0pOworICAgICAgICBhcHBlbmQoYmFycmllcnNbaV0pOwogfQogCi1pbmxpbmUgdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzSGlkZGVuKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGJhcnJpZXJzLCBzaXplX3QgY291bnQpCitpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5k
VmFsdWVzSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBz
aXplX3QgY291bnQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQot
ICAgICAgICBhcHBlbmRIaWRkZW4oJmJhcnJpZXJzW2ldKTsKKyAgICAgICAgYXBwZW5kSGlkZGVu
KGJhcnJpZXJzW2ldKTsKIH0KIAogaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OnJlcG9ydEV4dHJh
TWVtb3J5VmlzaXRlZChzaXplX3Qgc2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1dlYWtCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vha0Jsb2NrLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAog
CiAjaW5jbHVkZSAiQ2VsbENvbnRhaW5lcklubGluZXMuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0j
aW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCkBAIC05Nywx
MCArOTYsOCBAQCB2b2lkIFdlYWtCbG9jazo6c3dlZXAoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb250YWluZXJUeXBlPgotdm9pZCBXZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFp
bmVyVHlwZSYgY29udGFpbmVyLCBIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKK3Zv
aWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgU2xvdFZpc2l0b3ImIHZpc2l0b3IgPSBoZWFw
Um9vdFZpc2l0b3IudmlzaXRvcigpOwotICAgIAogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uID0gdmlzaXRvci5tYXJraW5nVmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewpAQCAtMTEyLDE4ICsxMDksMTggQEAgdm9pZCBX
ZWFrQmxvY2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAgICBpZiAoIXdlYWtIYW5k
bGVPd25lcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGNvbnN0IEpTVmFsdWUm
IGpzVmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOworICAgICAgICBKU1ZhbHVlIGpzVmFsdWUg
PSB3ZWFrSW1wbC0+anNWYWx1ZSgpOwogICAgICAgICBpZiAoY29udGFpbmVyLmlzTWFya2VkQ29u
Y3VycmVudGx5KG1hcmtpbmdWZXJzaW9uLCBqc1ZhbHVlLmFzQ2VsbCgpKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXItPmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nh
c3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSwgdmlzaXRvcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJmNv
bnN0X2Nhc3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVz
dGVkKGpzVmFsdWUpOwogICAgIH0KIH0KIAotdm9pZCBXZWFrQmxvY2s6OnZpc2l0KEhlYXBSb290
VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQordm9pZCBXZWFrQmxvY2s6OnZpc2l0KFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIC8vIElmIGEgYmxvY2sgaXMgY29tcGxldGVseSBlbXB0eSwg
YSB2aXNpdCB3b24ndCBoYXZlIGFueSBlZmZlY3QuCiAgICAgaWYgKGlzRW1wdHkoKSkKQEAgLTEz
Myw5ICsxMzAsOSBAQCB2b2lkIFdlYWtCbG9jazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJiBoCiAg
ICAgQVNTRVJUKG1fY29udGFpbmVyKTsKICAgICAKICAgICBpZiAobV9jb250YWluZXIuaXNMYXJn
ZUFsbG9jYXRpb24oKSkKLSAgICAgICAgc3BlY2lhbGl6ZWRWaXNpdChtX2NvbnRhaW5lci5sYXJn
ZUFsbG9jYXRpb24oKSwgaGVhcFJvb3RWaXNpdG9yKTsKKyAgICAgICAgc3BlY2lhbGl6ZWRWaXNp
dChtX2NvbnRhaW5lci5sYXJnZUFsbG9jYXRpb24oKSwgdmlzaXRvcik7CiAgICAgZWxzZQotICAg
ICAgICBzcGVjaWFsaXplZFZpc2l0KG1fY29udGFpbmVyLm1hcmtlZEJsb2NrKCksIGhlYXBSb290
VmlzaXRvcik7CisgICAgICAgIHNwZWNpYWxpemVkVmlzaXQobV9jb250YWluZXIubWFya2VkQmxv
Y2soKSwgdmlzaXRvcik7CiB9CiAKIHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7Ci1jbGFzcyBIZWFwUm9v
dFZpc2l0b3I7CitjbGFzcyBTbG90VmlzaXRvcjsKIAogY2xhc3MgV2Vha0Jsb2NrIDogcHVibGlj
IERvdWJseUxpbmtlZExpc3ROb2RlPFdlYWtCbG9jaz4gewogcHVibGljOgpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIFN3ZWVwUmVzdWx0IHRha2VTd2Vl
cFJlc3VsdCgpOwogCi0gICAgdm9pZCB2aXNpdChIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2b2lk
IHZpc2l0KFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwKCk7CiAKICAgICB2b2lkIGxhc3RD
aGFuY2VUb0ZpbmFsaXplKCk7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IEZyZWVDZWxsKiBhc0ZyZWVDZWxsKFdlYWtJbXBsKik7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ29udGFpbmVyVHlwZT4KLSAgICB2b2lkIHNwZWNpYWxpemVkVmlzaXQoQ29udGFpbmVy
VHlwZSYsIEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgc3BlY2lhbGl6ZWRWaXNpdChDb250
YWluZXJUeXBlJiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIGV4cGxpY2l0IFdlYWtCbG9jayhDZWxs
Q29udGFpbmVyKTsKICAgICB2b2lkIGZpbmFsaXplKFdlYWtJbXBsKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICB1bnNpZ25lZCB2
aXNpdChIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB1bnNpZ25lZCB2aXNpdChTbG90VmlzaXRvciYp
OwogICAgIHZvaWQgcmVhcCgpOwogICAgIHZvaWQgc3dlZXAoKTsKICAgICB2b2lkIHNocmluaygp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSB2b2lkIFdlYWtTZXQ6Omxhc3RDaGFuY2VUb0Zp
bmFsaXoKICAgICAgICAgYmxvY2stPmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CiB9CiAKLWlubGlu
ZSB1bnNpZ25lZCBXZWFrU2V0Ojp2aXNpdChIZWFwUm9vdFZpc2l0b3ImIHZpc2l0b3IpCitpbmxp
bmUgdW5zaWduZWQgV2Vha1NldDo6dmlzaXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
dW5zaWduZWQgY291bnQgPSAwOwogICAgIGZvciAoV2Vha0Jsb2NrKiBibG9jayA9IG1fYmxvY2tz
LmhlYWQoKTsgYmxvY2s7IGJsb2NrID0gYmxvY2stPm5leHQoKSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDgsMjMgKzQwOCwyMyBAQCB2b2lkIFNo
YWRvd0NoaWNrZW46OnZpc2l0Q2hpbGRyZW4oU2xvdFZpCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9sb2dDdXJzb3IgLSBtX2xvZzsgaS0tOykgewogICAgICAgICBKU09iamVjdCogY2FsbGVlID0g
bV9sb2dbaV0uY2FsbGVlOwogICAgICAgICBpZiAoY2FsbGVlICE9IFBhY2tldDo6dGFpbE1hcmtl
cigpICYmIGNhbGxlZSAhPSBQYWNrZXQ6OnRocm93TWFya2VyKCkpCi0gICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGNhbGxlZSk7CisgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoY2FsbGVlKTsKICAgICAgICAgaWYgKGNhbGxlZSAhPSBQ
YWNrZXQ6OnRocm93TWFya2VyKCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkUmVhZE9ubHlQb2ludGVyKG1fbG9nW2ldLnNjb3BlKTsKKyAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVHJ1c3RlZChtX2xvZ1tpXS5zY29wZSk7CiAgICAgICAgIGlmIChjYWxsZWUgPT0gUGFj
a2V0Ojp0YWlsTWFya2VyKCkpIHsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWRWYWx1ZSgmbV9sb2dbaV0udGhpc1ZhbHVlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobV9sb2dbaV0uY29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX2xvZ1tpXS50aGlzVmFsdWUpOworICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fbG9nW2ldLmNvZGVCbG9jayk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9zdGFjay5zaXplKCk7IGktLTsg
KSB7CiAgICAgICAgIEZyYW1lJiBmcmFtZSA9IG1fc3RhY2tbaV07Ci0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWRWYWx1ZSgmZnJhbWUudGhpc1ZhbHVlKTsKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihmcmFtZS5jYWxsZWUpOworICAgICAg
ICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoZnJhbWUudGhpc1ZhbHVlKTsKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmRUcnVzdGVkKGZyYW1lLmNhbGxlZSk7CiAgICAgICAgIGlmIChmcmFtZS5zY29wZSkK
LSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoZnJh
bWUuc2NvcGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGZyYW1lLnNjb3Bl
KTsKICAgICAgICAgaWYgKGZyYW1lLmNvZGVCbG9jaykKLSAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoZnJhbWUuY29kZUJsb2NrKTsKKyAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChmcmFtZS5jb2RlQmxvY2spOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3
IEBAIE1hcmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6On5NYXJraW5nR0MKIHZvaWQgTWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2NlbGxzKQotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cnkpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChlbnRy
eSk7CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZTo6dmlzaXRXZQogdm9pZCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6bWFya1Jl
cXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAo
YXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2YXJp
YW50KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodmFyaWFudCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw5ICs2OCw5IEBAIHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hp
bGRyZW4KIHsKICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlRW52aXJvbm1lbnQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZU5hbWVzcGFjZU9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVw
ZW5kZW5jaWVzTWFwKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUVu
dmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVz
cGFjZU9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9kZXBlbmRlbmNp
ZXNNYXApOwogfQogCiB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAot
I2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTU0LDEzICs1
MywxMyBAQCB2b2lkIEFyZ0xpc3Q6OmdldFNsaWNlKGludCBzdGFydEluZGV4LCBBCiAgICAgcmVz
dWx0Lm1fYXJnQ291bnQgPSAgbV9hcmdDb3VudCAtIHN0YXJ0SW5kZXg7CiB9CiAKLXZvaWQgTWFy
a2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290Vmlz
aXRvciwgTGlzdFNldCYgbWFya1NldCkKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtM
aXN0cyhTbG90VmlzaXRvciYgdmlzaXRvciwgTGlzdFNldCYgbWFya1NldCkKIHsKICAgICBMaXN0
U2V0OjppdGVyYXRvciBlbmQgPSBtYXJrU2V0LmVuZCgpOwogICAgIGZvciAoTGlzdFNldDo6aXRl
cmF0b3IgaXQgPSBtYXJrU2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciogbGlzdCA9ICppdDsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsaXN0LT5tX3NpemU7ICsraSkKLSAgICAgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNp
dChyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigmbGlzdC0+c2xvdEZvcihpKSkpOworICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKEpTVmFsdWU6OmRlY29kZShsaXN0LT5zbG90Rm9y
KGkpKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHNsb3RGb3IobV9zaXplIC0gMSkpOwogICAgIH0K
ICAgICAgICAgCi0gICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290VmlzaXRvciYsIExp
c3RTZXQmKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoU2xvdFZpc2l0b3ImLCBMaXN0U2V0
Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBleHBhbmRDYXBhY2l0eSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBDbG9uZWRB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09i
amVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4o
SlNDZQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAg
CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+c3RvcmFnZSgpLCBzdGQ6Om1h
eCh0aGlzT2JqZWN0LT5tX2xlbmd0aCwgdGhpc09iamVjdC0+bV9taW5DYXBhY2l0eSkpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogCiAgICAgaWYgKGJvb2wqIG92ZXJyaWRlID0gdGhp
c09iamVjdC0+bV9vdmVycmlkZXMuZ2V0KCkpCiAgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFy
eShvdmVycmlkZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIEV2
YWxFeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7
CiAgICAgaWYgKEV2YWxDb2RlQmxvY2sqIGV2YWxDb2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX2V2
YWxDb2RlQmxvY2suZ2V0KCkpCiAgICAgICAgIGV2YWxDb2RlQmxvY2stPnZpc2l0V2Vha2x5KHZp
c2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgRXhj
ZXB0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2UKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Zh
bHVlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ZhbHVlKTsKIH0KIAogRXhj
ZXB0aW9uOjpFeGNlcHRpb24oVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKEoKICAgICAgICAgY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRXZWFrbHko
dmlzaXRvcik7CiAgICAgaWYgKEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1
Y3QgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkKICAgICAgICAg
Y29kZUJsb2NrRm9yQ29uc3RydWN0LT52aXNpdFdlYWtseSh2aXNpdG9yKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NpbmdsZXRvbkZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9zaW5nbGV0b25GdW5jdGlvbik7CiB9CiAKIEZ1bmN0aW9uRXhlY3V0
YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEZ1bmN0aW9u
UmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDCiAKICAgICByYXJlRGF0YS0+bV9vYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICByYXJlRGF0YS0+bV9p
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnJhcmVEYXRhLT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUp
OwogfQogCiBGdW5jdGlvblJhcmVEYXRhOjpGdW5jdGlvblJhcmVEYXRhKFZNJiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCB2b2lkIEdldHRlclNldHRl
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dldHRlcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0dGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9zZXR0ZXIpOwogfQogCiBHZXR0ZXJTZXR0ZXIqIEdldHRlclNldHRlcjo6d2l0aEdl
dHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBuZXdH
ZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGwuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAgdm9pZCBI
YXNoTWFwQnVja2V0PERhdGE+Ojp2aXNpdENoaWxkcmVuKAogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJldik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3ByZXYpOwogCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRGF0YSkgJSBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9PSAwLCAiV2UgYXNzdW1lIHRoYXQgdGhlc2UgYXJl
IGZpbGxlZCB3aXRoIFdyaXRlQmFycmllcjxVbmtub3duPiBtZW1iZXJzIG9ubHkuIik7CiAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXMoYml0d2lzZV9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+
KCZ0aGlzT2JqZWN0LT5tX2RhdGEpLCBzaXplb2YoRGF0YSkgLyBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSk7CkBAIC02Nyw4ICs2Nyw4IEBAIHZvaWQgSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldD46OnZpc2l0Q2gKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
IAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2hlYWQpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3RhaWwpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1faGVhZCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWlsKTsKICAg
ICAKICAgICBpZiAoSGFzaE1hcEJ1ZmZlclR5cGUqIGJ1ZmZlciA9IHRoaXNPYmplY3QtPm1fYnVm
ZmVyLmdldCgpKQogICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkoYnVmZmVyKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJs
ZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIEluZmVycmVkVHlwZVRhYmxlOjp2aXNpdENoaWxkcmVuKEpTCiAgICAgICAgIGlmICghZW50
cnkudmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
LT5pc1JlbGV2YW50KCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cnkudmFsdWUp
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBlbnRyeS52YWx1ZS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEludGVybmFs
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CiAgICAgCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3Jp
Z2luYWxOYW1lKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29yaWdpbmFsTmFt
ZSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJldmlz
aW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBJbnRsQ29sbGF0b3I6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
Q29tcGFyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUp
OwogfQogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4gc29ydExvY2FsZURhdGEoY29uc3QgU3RyaW5n
JiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQg
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGQKIAogICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9jb2xsYXRvclN0cnVjdHVyZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEoKIAogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9ib3VuZEZvcm1hdCk7CiB9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRCb3Vu
ZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6dmlzaQogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojp2aXNpdENoaWxkcmVuKEpTQwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
Rm9ybWF0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsK
IH0KIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2Nh
bGUsIHNpemVfdCBrZXlJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdEMKIAogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsy
MDcsOSBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90YXJnZXRGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYm91bmRUaGlzKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9i
b3VuZEFyZ3MpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rp
b24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kQXJncyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNw
cAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNDYWxsZWU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Njb3BlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw4ICsxMTcsNyBAQCBB
TFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1CiAKIGlubGluZSB2b2lkIEpT
Q2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZpc2l0b3Iudm0o
KSk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGNlbGwtPnN0cnVjdHVyZSh2aXNpdG9yLnZtKCkpKTsK
IH0KIAogQUxXQVlTX0lOTElORSBWTSYgRXhlY1N0YXRlOjp2bSgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjp2aXNpdAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyU2V0dGVyKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dldHRlclNldHRlcik7CiB9CiAKIHZvaWQgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBDdXN0b21HZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgY29u
c3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOCArMjA3LDgg
QEAgdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogYwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmFyZURhdGEpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yYXJlRGF0YSk7CiB9CiAKIENhbGxU
eXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU5LDExMSArMTE1
OSwxMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZ2xvYmFsVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9nbG9iYWxUaGlzKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ds
b2JhbExleGljYWxFbnZpcm9ubWVudCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZ2xvYmFsU2NvcGVFeHRlbnNpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dsb2JhbENhbGxlZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwQ29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9y
Q29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9uYXRpdmVFcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZ2xvYmFsU2NvcGVFeHRlbnNpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZ2xvYmFsQ2FsbGVlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jl
Z0V4cENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9y
Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
bmF0aXZlRXJyb3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fZXZhbEVycm9yQ29uc3Ry
dWN0b3IudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdGhpc09iamVjdC0+bV9yZWZlcmVuY2VFcnJv
ckNvbnN0cnVjdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvci52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdGhpc09iamVjdC0+bV9VUklFcnJv
ckNvbnN0cnVjdG9yLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fb2JqZWN0Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X251bGxHZXR0ZXJGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bnVsbFNldHRlckZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251
bGxHZXR0ZXJGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxs
U2V0dGVyRnVuY3Rpb24pOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcGFy
c2VJbnRGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1
bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24p
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbik7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVj
dC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlckdldHRlclNldHRlcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlTG9hZGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93VHlw
ZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CiAKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZXJyb3JQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2l0ZXJhdG9yUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9y
UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
clByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxv
YWRlclByb3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHRo
aXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJl
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Nsb25lZEFyZ3VtZW50
c1N0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0U3Ry
dWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkluZGV4aW5nU2hhcGVzOyArK2kp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1NoYXBlW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtpXSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlv
bltpXSk7CiAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKTsKICNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAogICAgIHRoaXNPYmplY3QtPm1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9vYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICNlbmRpZgogICAgIHRoaXNPYmplY3QtPm1fbnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9lcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxs
ZWVTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25T
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dldHRlclNldHRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0
dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxh
clZNU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm94eU9i
amVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGFi
bGVQcm94eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZUxvYWRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJTdHJ1
Y3R1cmUpOwogICAgIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVm
ZmVyUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1
ZmZlclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2hhcmVk
QXJyYXlCdWZmZXJQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FycmF5QnVmZmVyU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlKTsKIAogI2RlZmluZSBWSVNJ
VF9TSU1QTEVfVFlQRShDYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5j
ZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSkgXAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsgXAotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZSk7IFwKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsg
XAorICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fICMjIHByb3Blck5hbWUgIyMgU3Ry
dWN0dXJlKTsgXAogCiAgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShWSVNJVF9TSU1Q
TEVfVFlQRSkKICAgICAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fd2ViQXNzZW1ibHlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5U3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFz
c2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIEZPUl9FQUNIX1dFQkFTU0VNQkxZX0NPTlNU
UlVDVE9SX1RZUEUoVklTSVRfU0lNUExFX1RZUEUpCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQogCkBAIC0xMjgwLDcgKzEyODAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsCiAgICAgZm9yICh1bnNpZ25lZCBpID0gTlVNQkVSX09GX1RZUEVEX0FSUkFZ
X1RZUEVTOyBpLS07KQogICAgICAgICB0aGlzT2JqZWN0LT5sYXp5VHlwZWRBcnJheVN0cnVjdHVy
ZShpbmRleFRvVHlwZWRBcnJheVR5cGUoaSkpLnZpc2l0KHZpc2l0b3IpOwogICAgIAotICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NwZWNpZXNHZXR0ZXJTZXR0ZXIpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3BlY2llc0dldHRlclNldHRlcik7CiAgICAgdGhp
c09iamVjdC0+bV90eXBlZEFycmF5UHJvdG8udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci52aXNpdCh2aXNpdG9yKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCShy
ZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsOCBAQCB2b2lkIEpTTWFwSXRl
cmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAgICAgSlNNYXBJdGVyYXRvciogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFw
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBKU01hcEl0ZXJhdG9yOjpjcmVhdGVQYWlyKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oCiAgICAgSlNNb2R1bGVFbnZp
cm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7
CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+c2NvcGVTaXplKCkpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tb2R1bGVSZWNvcmRTbG90KCkpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1v
ZHVsZVJlY29yZFNsb3QoKSk7CiB9CiAKIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBA
QCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkCiAgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKIH0KIAogYm9vbCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsCiB7CiAgICAgSlNNb2R1bGVS
ZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKIH0KIAogdm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKAogICAgIEpTTmF0aXZlU3RkRnVuY3Rp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOYXRpdmVTdGRGdW5jdGlvbio+KGNlbGwpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ2VsbCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9mdW5jdGlvbkNlbGwpOwogfQogCiB2b2lkIEpTTmF0aXZlU3RkRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxl
bmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1bmN0aW9u
Q2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIEFMV0FZU19JTkxJTkUg
U3RydWN0dXJlKiBKU09iamVjdDo6dmlzaXQKICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFH
RV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzSGlkZGVu
KGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yLCBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXApCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKKyAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZChidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDExLDcgKzQxMSw3IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6
dmlzaXQKICAgICAgICAgZGVmYXVsdDogLy8gQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQ
RVMKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzSGlkZGVuKGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fdmVjdG9yLCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JM
ZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9z
cGFyc2VNYXApCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDkgKzEyMSw5IEBAIHZvaWQgSlNQcm9taXNlRGVm
ZXJyZWQ6OnZpc2l0Q2hpbGRyZW4oSlMKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9t
aXNlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWplY3QpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fcHJvbWlzZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9yZXNvbHZlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlamVjdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBAIHZvaWQgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjp2aXNpdENoaWwKICAgICBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oY2Vs
bCk7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqdGhpc09iamVjdCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fcHJvcGVydHlOYW1lcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlOYW1lc1tp
XSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90eXBlQ2hhaW4pOwor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5TmFtZXNbaV0pOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvdG90eXBlQ2hhaW4pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsOCBAQCB2b2lkIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faXRlcmF0ZWRPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3Byb3BlcnR5TmFtZUVudW1lcmF0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1faXRlcmF0ZWRPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvcGVydHlOYW1lRW51bWVyYXRvcik7CiB9CiAKIGJvb2wgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG91dHB1dCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCB2b2lkIEpTUHJveHk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3RhcmdldCk7CiB9CiAKIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCB2b2lk
IEpTU2NvcGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsCiAgICAgSlNTY29wZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Njb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV4dCk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0KTsKIH0KIAogLy8gUmV0dXJu
cyB0cnVlIGlmIHdlIGZvdW5kIGVub3VnaCBpbmZvcm1hdGlvbiB0byB0ZXJtaW5hdGUgb3B0aW1p
emF0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJ
dGVyYXRvci5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBA
IHZvaWQgSlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwKICAgICBKU1NldEl0ZXJh
dG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU2V0SXRlcmF0b3IqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zZXQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXIp
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0KTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXIpOwogfQogCiBKU1ZhbHVlIEpTU2V0SXRlcmF0b3I6OmNy
ZWF0ZVBhaXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCB2b2lkIEpTU3RyaW5nOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiB2b2lkIEpTUm9wZVN0cmluZzo6dmlzaXRGaWJlcnMo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnN1YnN0cmluZ0Jhc2UoKSk7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHN1YnN0cmluZ0Jhc2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzX21heEludGVybmFsUm9wZUxlbmd0aCAmJiBmaWJlcihpKTsgKytp
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZmliZXIoaSkpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZChmaWJlcihpKSk7CiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhMZW5ndGhGb3JP
blN0YWNrUmVzb2x2ZSA9IDIwNDg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKAogICAgIEpTU3ltYm9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNTeW1ib2xUYWJsZU9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5
bWJvbFRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxl
KTsKIH0KIAogYm9vbCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEpTV2Vha01hcDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9y
KTsKICAgICBKU1dlYWtNYXAqIHRoaXNPYmogPSBqc0Nhc3Q8SlNXZWFrTWFwKj4oY2VsbCk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmotPm1fd2Vha01hcERhdGEpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmotPm1fd2Vha01hcERhdGEpOwogfQogCiBTdHJpbmcgSlNXZWFrTWFwOjp0
b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3QqLCBFeGVjU3RhdGUqKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtTZXQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtTZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgSlNXZWFrU2V0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2UKIHsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwogICAgIEpT
V2Vha1NldCogdGhpc09iaiA9IGpzQ2FzdDxKU1dlYWtTZXQqPihjZWxsKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iai0+bV93ZWFrTWFwRGF0YSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iai0+bV93ZWFrTWFwRGF0YSk7CiB9CiAKIFN0cmluZyBKU1dlYWtTZXQ6OnRvU3RyaW5nTmFt
ZShjb25zdCBKU0M6OkpTT2JqZWN0KiwgRXhlY1N0YXRlKikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhTY29wZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIEpTV2l0aFNjb3BlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogCiAgICAgSlNXaXRoU2NvcGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXaXRoU2NvcGUq
PihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fb2JqZWN0KTsKIH0KIAogU3RydWN0dXJlKiBKU1dpdGhTY29wZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90bykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNX
cmFwcGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyAr
MzMsNyBAQCB2b2lkIEpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgSlNX
cmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV3JhcHBlck9iamVjdCo+KGNlbGwp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbFZhbHVlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2ludGVybmFsVmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xhenlDbGFzc1N0cnVjdHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eUNs
YXNzU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGF6eUNsYXNzU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXI6OnNlCiB2b2lk
IExhenlDbGFzc1N0cnVjdHVyZTo6dmlzaXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAg
bV9zdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fY29uc3Ry
dWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKG1fY29uc3RydWN0b3IpOwogfQogCiB2b2lkIExh
enlDbGFzc1N0cnVjdHVyZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eVByb3BlcnR5SW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMu
aAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6
eVByb3BlcnR5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgRWwKIHZvaWQgTGF6eVByb3BlcnR5PE93
bmVyVHlwZSwgRWxlbWVudFR5cGU+Ojp2aXNpdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAg
ICBpZiAobV9wb2ludGVyICYmICEobV9wb2ludGVyICYgbGF6eVRhZykpCi0gICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoYml0d2lzZV9jYXN0PEVsZW1lbnRU
eXBlKj4obV9wb2ludGVyKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChiaXR3aXNl
X2Nhc3Q8RWxlbWVudFR5cGUqPihtX3BvaW50ZXIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3duZXJUeXBlLCB0eXBlbmFtZSBFbGVtZW50VHlwZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcEJhc2UuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyAr
MzUsNyBAQCB2b2lkIE1hcEJhc2U8SGFzaE1hcEJ1Y2tldFR5cGU+Ojp2aXNpdENoCiB7CiAgICAg
TWFwQmFzZSogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PE1hcEJhc2UqPihjZWxsKTsKICAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21hcCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9tYXApOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcEJ1Y2tldFR5cGU+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkxLDggKzkxLDggQEAgdm9pZCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGls
ZAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRh
YmxlKTsKICAgICBpZiAoTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogbW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayA9IHRoaXNPYmplY3QtPm1fbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkKICAgICAg
ICAgbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+dmlzaXRXZWFrbHkodmlzaXRvcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJv
ckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDcgKzU4LDcgQEAgdm9pZCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcgog
ICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRlcnByZXRlcjo6Y29uc3RydWN0V2l0
aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKUwogICAgIFByb2dyYW1FeGVjdXRhYmxlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIFNjcmlwdEV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVCbG9jayk7CiAgICAg
aWYgKFByb2dyYW1Db2RlQmxvY2sqIHByb2dyYW1Db2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX3By
b2dyYW1Db2RlQmxvY2suZ2V0KCkpCiAgICAgICAgIHByb2dyYW1Db2RlQmxvY2stPnZpc2l0V2Vh
a2x5KHZpc2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU3LDggKzEx
NTcsOCBAQCB2b2lkIFByb3h5T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90YXJnZXQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2hhbmRsZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2hhbmRsZXIpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJl
dm9rZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5UmV2b2tlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lk
IFByb3h5UmV2b2tlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogCiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9wcm94eSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgUmVn
RXhwQ2FjaGVkUmVzdWx0Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewot
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2xhc3RJbnB1dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1f
bGFzdFJlZ0V4cCk7CisgICAgdmlzaXRvci5hcHBlbmQobV9sYXN0SW5wdXQpOworICAgIHZpc2l0
b3IuYXBwZW5kKG1fbGFzdFJlZ0V4cCk7CiAgICAgaWYgKG1fcmVpZmllZCkgewotICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkSW5wdXQpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
bV9yZWlmaWVkUmVzdWx0KTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZExlZnRD
b250ZXh0KTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZFJpZ2h0Q29udGV4dCk7
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fcmVpZmllZElucHV0KTsKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQobV9yZWlmaWVkUmVzdWx0KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9yZWlm
aWVkTGVmdENvbnRleHQpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3JlaWZpZWRSaWdodENv
bnRleHQpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4
ICs1Niw4IEBAIHZvaWQgUmVnRXhwT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCoKICAgICBS
ZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9sYXN0SW5kZXgpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhw
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2xhc3RJbmRleCk7CiB9CiAKIGJv
b2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2VtcHR5UmVnRXhwKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2VtcHR5UmVnRXhwKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgU2FtcGxpbmdQ
cm9maWxlcjo6dmlzaXQoU2xvdFZpc2l0b3IKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2xvY2su
aXNMb2NrZWQoKSk7CiAgICAgZm9yIChKU0NlbGwqIGNlbGwgOiBtX2xpdmVDZWxsUG9pbnRlcnMp
Ci0gICAgICAgIHNsb3RWaXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGNl
bGwpOworICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRUcnVzdGVkKGNlbGwpOwogfQogCiB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnNodXRkb3duKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDkgKzEwMyw5IEBAIHZvaWQgU2NvcGVkQXJndW1lbnRzOjp2aXNp
dENoaWxkcmVuKEpTQ2UKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
IAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZSk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX3Njb3BlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxl
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9zY29wZSk7CiAgICAgCiAgICAgaWYgKHRoaXNPYmplY3Qt
Pm1fdG90YWxMZW5ndGggPiB0aGlzT2JqZWN0LT5tX3RhYmxlLT5sZW5ndGgoKSkgewogICAgICAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5n
cy5oIgogCi0jaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
QEAgLTkzLDE1ICs5MiwxNSBAQCB2b2lkIFNtYWxsU3RyaW5nczo6aW5pdGlhbGl6ZUNvbW1vblN0
cmluCiB2b2lkIFNtYWxsU3RyaW5nczo6dmlzaXRTdHJvbmdSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewogICAgIG1fbmVlZHNUb0JlVmlzaXRlZCA9IGZhbHNlOwotICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtX2VtcHR5U3RyaW5nKTsKKyAgICB2aXNpdG9y
LmFwcGVuZFRydXN0ZWQoJm1fZW1wdHlTdHJpbmcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKG1fc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncyArIGkpOwotI2Rl
ZmluZSBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUKG5hbWUpIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtXyMjbmFtZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworI2RlZmluZSBKU0NfQ09NTU9O
X1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUKG5hbWUpIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtXyMj
bmFtZSk7CiAgICAgSlNDX0NPTU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShKU0NfQ09NTU9OX1NUUklO
R1NfQVRUUklCVVRFX1ZJU0lUKQogI3VuZGVmIEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVf
VklTSVQKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9vYmplY3RTdHJp
bmdTdGFydCk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fbnVsbE9i
amVjdFN0cmluZyk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fdW5k
ZWZpbmVkT2JqZWN0U3RyaW5nKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9vYmplY3RT
dHJpbmdTdGFydCk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fbnVsbE9iamVjdFN0cmlu
Zyk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fdW5kZWZpbmVkT2JqZWN0U3RyaW5nKTsK
IH0KIAogU21hbGxTdHJpbmdzOjp+U21hbGxTdHJpbmdzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgU3Bh
cnNlQXJyYXlWYWx1ZU1hcDo6dmlzaXRDaGlsZHJlbigKICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKCp0aGlzTWFwKTsKICAgICBpdGVyYXRvciBlbmQgPSB0aGlzTWFwLT5tX21hcC5lbmQoKTsK
ICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGhpc01hcC0+bV9tYXAuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnZhbHVlKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoaXQtPnZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNjAsMjUgKzEwNjAsMjUgQEAgdm9pZCBTdHJ1Y3R1cmU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZQogICAgIAogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
dGhpc09iamVjdC0+bV9sb2NrKTsKICAgICAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9nbG9iYWxPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2xv
YmFsT2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmlzT2JqZWN0KCkpCiAgICAgICAgIHRo
aXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uY2xlYXIoKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90eXBlKTsKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOworICAg
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3RvdHlwZSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pOwogICAgIH0K
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2aW91c09yUmFyZURhdGEpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJldmlvdXNPclJhcmVEYXRhKTsKIAog
ICAgIGlmICh0aGlzT2JqZWN0LT5pc1Bpbm5lZFByb3BlcnR5VGFibGUoKSB8fCB0aGlzT2JqZWN0
LT5pc0FkZGluZ1Byb3BlcnR5Rm9yVHJhbnNpdGlvbigpKSB7CiAgICAgICAgIC8vIE5PVEU6IFRo
aXMgY2FuIGludGVybGVhdmUgaW4gcGluKCksIGluIHdoaWNoIGNhc2UgaXQgbWF5IHNlZSBhIG51
bGwgcHJvcGVydHkgdGFibGUuCiAgICAgICAgIC8vIFRoYXQncyBmaW5lLCBiZWNhdXNlIHRoZW4g
dGhlIGJhcnJpZXIgd2lsbCBmaXJlIGFuZCB3ZSB3aWxsIHNjYW4gdGhpcyBhZ2Fpbi4KLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZVVuc2FmZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZVVuc2FmZSk7
CiAgICAgfSBlbHNlIGlmICh2aXNpdG9yLmlzQnVpbGRpbmdIZWFwU25hcHNob3QoKSkKLSAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZVVuc2FmZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJsZVVuc2FmZSk7
CiAgICAgZWxzZSBpZiAodGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKQogICAgICAg
ICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGVVbnNhZmUuY2xlYXIoKTsKIAotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luZmVycmVkVHlwZVRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luZmVycmVkVHlwZVRhYmxlKTsKIH0KIAogYm9vbCBTdHJ1
Y3R1cmU6OmlzQ2hlYXBEdXJpbmdHQygpCkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBib29sIFN0cnVj
dHVyZTo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImCiAgICAgaWYgKCFpc0NoZWFwRHVyaW5nR0Mo
KSkKICAgICAgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KHRoaXMpOwogICAg
IAotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIodGhpcyk7Cisg
ICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHRoaXMpOwogICAgIHJldHVybiB0cnVlOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBT
dHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIGlmIChXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiogdmVjdG9yID0gdGhpc09iamVjdC0+bV92ZWN0b3IuZ2V0KCkpIHsKICAgICAg
ICAgc2l6ZV90IGkgPSAwOwogICAgICAgICB3aGlsZSAodmVjdG9yW2ldKQotICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQoJnZlY3RvcltpKytdKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KHZlY3RvcltpKytdKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsOSBAQCB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjp2
aXNpdENoaWxkcmVuKEpTCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RUb1N0cmluZ1ZhbHVlKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ByZXZpb3VzKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFRvU3RyaW5nVmFsdWUpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcik7CiB9
CiAKIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogU3RydWN0dXJlUmFyZURhdGE6OmNhY2hlZFBy
b3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsMTEgKzEwMSwxMSBAQCB2b2lkIFN5bWJvbFRhYmxlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogCiB7CiAgICAgU3ltYm9sVGFibGUqIHRoaXNTeW1ib2xUYWJsZSA9IGpzQ2FzdDxTeW1ib2xU
YWJsZSo+KHRoaXNDZWxsKTsKICAgICAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc1N5bWJvbFRh
YmxlLT5tX2FyZ3VtZW50cyk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNTeW1ib2xUYWJsZS0+
bV9zaW5nbGV0b25TY29wZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc1N5bWJvbFRhYmxlLT5t
X2FyZ3VtZW50cyk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc1N5bWJvbFRhYmxlLT5tX3Npbmds
ZXRvblNjb3BlKTsKICAgICAKICAgICBpZiAodGhpc1N5bWJvbFRhYmxlLT5tX3JhcmVEYXRhKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc1N5bWJvbFRhYmxlLT5tX3JhcmVEYXRhLT5tX2Nv
ZGVCbG9jayk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNTeW1ib2xUYWJsZS0+bV9yYXJl
RGF0YS0+bV9jb2RlQmxvY2spOwogICAgIAogICAgIC8vIFNhdmUgc29tZSBtZW1vcnkuIFRoaXMg
aXMgTyhuKSB0byByZWJ1aWxkIGFuZCB3ZSBkbyBzbyBvbiB0aGUgZmx5LgogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIodGhpc1N5bWJvbFRhYmxlLT5tX2xvY2spOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAgKzEwNCwxMCBAQCB2b2lkIFR5cGVQ
cm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoCiB2b2lkIFR5cGVQcm9maWxlckxvZzo6dmlz
aXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChMb2dFbnRyeSogZW50cnkgPSBt
X2xvZ1N0YXJ0UHRyOyBlbnRyeSAhPSBtX2N1cnJlbnRMb2dFbnRyeVB0cjsgKytlbnRyeSkgewot
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1ZShlbnRyeS0+dmFs
dWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoZW50cnktPnZhbHVlKTsKICAgICAg
ICAgaWYgKFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlEKSB7CiAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZpc2l0b3IuaGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KGlkKTsgCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9u
bHlQb2ludGVyKHN0cnVjdHVyZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQo
c3RydWN0dXJlKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgV2Vha01hcERhdGE6OkRlYWRLZXlDbGVhbmVyOjp2
aXNpdFcKICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChpdC0+a2V5KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBtX2xpdmVLZXlDb3VudCsrOwotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmaXQtPnZhbHVlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaXQtPnZhbHVlKTsKICAg
ICB9CiAgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291bnQgPD0gbV90YXJnZXQtPm1fbWFw
LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZTo6dmlzaXRDaGlsZHJlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0
LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGUpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdCk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWVtb3J5KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9t
b2R1bGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21lbW9yeSk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7CiAgICAgdmlzaXRvci5yZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bW9kdWxlKCktPm1vZHVsZUluZm9ybWF0aW9u
KCkuZ2xvYmFscy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2Jq
ZWN0LT5tX251bUltcG9ydEZ1bmN0aW9uczsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCp0
aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CiB9CiAKIGNvbnN0IENsYXNzSW5mbyBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lkluc3RhbmNlIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5SW5zdGFuY2Up
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TWVtb3J5LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg4LDcgKzg4LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp2aXNpdENoaWxkcmVuKAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fYnVmZmVyV3JhcHBlcik7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9idWZmZXJXcmFwcGVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TW9kdWxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5TW9kdWxlOjp2aXNpdENoaWxkcmVuKAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKIAogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZXhwb3J0U3ltYm9sVGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fZXhwb3J0U3ltYm9sVGFibGUpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0aGlzT2JqZWN0LT5tX2NhbGxlZUNvdW50ICogMjsgaSsrKSB7CiAgICAgICAgIFdyaXRl
QmFycmllcjxKU1dlYkFzc2VtYmx5Q2FsbGVlPiogY2FsbGVlID0gJnRoaXNPYmplY3QtPmNhbGxl
ZXMoKVtpXTsKICAgICAgICAgdmlzaXRvci5hcHBlbmQoY2FsbGVlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpT
V2ViQXNzZW1ibHlUYWJsZTo6dmlzaXRDaGlsZHJlbihKCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
aGlzT2JqZWN0LT5tX3NpemU7ICsraSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fanNGdW5jdGlvbnMuZ2V0KClbaV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2pzRnVuY3Rpb25zLmdldCgpW2ldKTsKIH0KIAogYm9vbCBKU1dlYkFzc2VtYmx5
VGFibGU6Omdyb3codWludDMyX3QgbmV3U2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAy
MDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDkgKzE2NSw5IEBAIHZvaWQgV2ViQXNzZW1i
bHlGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbigKICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihjZWxsKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9pbnN0YW5jZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fanNF
bnRyeXBvaW50KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93YXNtRW50cnlw
b2ludCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnN0YW5jZSk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9qc0VudHJ5cG9pbnQpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fd2FzbUVudHJ5cG9pbnQpOwogfQogCiB2b2lkIFdlYkFzc2Vt
Ymx5RnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdGFuY2UsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIGpzRW50cnlwb2ludCwg
SlNXZWJBc3NlbWJseUNhbGxlZSogd2FzbUVudHJ5cG9pbnQsIFdhc206OlNpZ25hdHVyZSogc2ln
bmF0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OnZpc2l0Q2hpbGQKIHsKICAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCogdGhpc09iamVj
dCA9IGpzQ2FzdDxXZWJBc3NlbWJseU1vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1faW5zdGFuY2UpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3N0YXJ0RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3RhcnRGdW5jdGlvbik7CiB9
CiAKIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297223</attachid>
            <date>2016-12-15 14:19:32 -0800</date>
            <delta_ts>2016-12-15 15:08:23 -0800</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>135916</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MCBA
QAorMjAxNi0xMi0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEdldCByaWQgb2YgSGVhcFJvb3RWaXNpdG9yIGFuZCBtYWtlIFNsb3RWaXNpdG9yIGxlc3MgcGFp
bmZ1bCB0byB1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUHJldmlvdXNseSB3ZSBoYWQgdHdvIHdheXMgb2YgYWRkaW5nIGEgcmF3IHBv
aW50ZXIgdG8gdGhlIEdDJ3MgbWFyayBzdGFjazoKKyAgICAgICAgCisgICAgICAgIC0gU2xvdFZp
c2l0b3I6OmFwcGVuZFVuYmFycmllcmVkWFlaKCkgbWV0aG9kcworICAgICAgICAtIEhlYXBSb290
VmlzaXRvcjo6dmlzaXQoKSBtZXRob2RzCisgICAgICAgIAorICAgICAgICBIZWFwUm9vdFZpc2l0
b3IgZXhpc3RlZCBvbmx5IHRvIHByZXZlbnQgeW91IGZyb20gY2FsbGluZyBpdHMgbm9uLVdyaXRl
QmFycmllcjw+IG1ldGhvZHMKKyAgICAgICAgdW5sZXNzIHlvdSBoYWQgcGVybWlzc2lvbi4gQnV0
IFNsb3RWaXNpdG9yIHdvdWxkIGxldCB5b3UgZG8gaXQgYW55d2F5LCBiZWNhdXNlIHRoYXQgd2Fz
CisgICAgICAgIGEgbG90IG1vcmUgcHJhY3RpY2FsLgorICAgICAgICAKKyAgICAgICAgSSB0aGlu
ayB0aGF0IHdlIHNob3VsZCBqdXN0IGhhdmUgb25lIHdheSB0byBkbyBpdC4gVGhpcyByZW1vdmVz
IEhlYXBSb290VmlzaXRvci4gSXQKKyAgICAgICAgYWxzbyByZW5hbWVzIGFwcGVuZFVuYmFycmll
cmVkWFlaIHRvIGFwcGVuZFRydXN0ZWQsIGFuZCBpdCByZW1vdmVzIHRoZSB1c2Ugb2YgZXh0cmEK
KyAgICAgICAgaW5kaXJlY3Rpb24gKHNvIHlvdSBub3cgcGFzcyBjb25zdCBXcml0ZUJhcnJpZXI8
PiYgaW5zdGVhZCBvZiBXcml0ZUJhcnJpZXI8PiopLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0
ZVByb3BlcnR5TWFwOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRXZWFrbHkpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVz
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRPU1JFeGl0VGFyZ2V0cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkRp
cmVjdEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29w
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZFRyYW5zaXRpb246OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBs
YW46Om1hcmtDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVu
ZXNzQW5kVmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9IYW5kbGVTZXQuY3BwOgorICAg
ICAgICAoSlNDOjpIYW5kbGVTZXQ6OnZpc2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgICogaGVh
cC9IYW5kbGVTZXQuaDoKKyAgICAgICAgKiBoZWFwL0hhbmRsZVN0YWNrLmNwcDoKKyAgICAgICAg
KEpTQzo6SGFuZGxlU3RhY2s6OnZpc2l0KToKKyAgICAgICAgKiBoZWFwL0hhbmRsZVN0YWNrLmg6
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1RvRml4
cG9pbnQpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcFJvb3RW
aXNpdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OnZpc2l0V2Vha1NldCk6CisgICAgICAgICog
aGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnZpc2l0V2Vha1NldCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp2aXNp
dFdlYWtTZXRzKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogaGVh
cC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRUcnVz
dGVkKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9TbG90
VmlzaXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0
ZWQpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjph
cHBlbmRWYWx1ZXMpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzSGlk
ZGVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRl
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJl
ZFJlYWRPbmx5UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjph
cHBlbmRVbmJhcnJpZXJlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0
b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFdlYWspOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpzcGVjaWFs
aXplZFZpc2l0KToKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjp2aXNpdCk6CisgICAgICAgICog
aGVhcC9XZWFrQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha1NldDo6dmlzaXQpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4u
Y3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKToKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFs
KToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpFbGVtZW50Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKFdURjo6SW1wdXJlR2V0dGVyOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKFdURjo6U2ltcGxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVS
ZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFy
Z3VtZW50czo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvbjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uUmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzaE1hcEJ1
Y2tldDxEYXRhPjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhh
c2hNYXBCdWNrZXQ+Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVk
VHlwZVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU05hdGl2ZVN0ZEZ1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0QnV0dGVyZmx5SW1wbCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZURl
ZmVycmVkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94
eTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTY29wZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1NldEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmlu
Zzo6dmlzaXRGaWJlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNXZWFrTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFw
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha1NldC5jcHA6CisgICAg
ICAgIChKU0M6OkpTV2Vha1NldDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9K
U1dpdGhTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2l0aFNjb3BlOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9MYXp5
Q2xhc3NTdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpMYXp5Q2xhc3NTdHJ1Y3R1cmU6OnZp
c2l0KToKKyAgICAgICAgKiBydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6RWxlbWVudFR5cGU+Ojp2aXNpdCk6CisgICAgICAgICogcnVudGltZS9NYXBCYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFwQmFzZTxIYXNoTWFwQnVja2V0VHlwZT46OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvUHJveHlSZXZva2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOgorICAgICAg
ICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxl
cjo6dmlzaXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dmlzaXRT
dHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0lmQ2hlYXAp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjp2aXNpdCk6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5jcHA6CisgICAgICAgIChKU0M6OldlYWtNYXBE
YXRhOjpEZWFkS2V5Q2xlYW5lcjo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4p
OgorCiAyMDE2LTEyLTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJBc3NlbWJseSBBUEk6IGltcHJvdmUgZGF0YSBzZWN0aW9uIGVycm9ycywgaW5pdGlh
bGl6ZSBhZnRlciBFbGVtZW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEVsZW1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RWxlbWVudCo+KGNlbGwpOwogICAgICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jv
b3QpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jvb3QpOwogICAgIH0K
IAogICAgIHN0YXRpYyBFbGVtZW50SGFuZGxlT3duZXIqIGhhbmRsZU93bmVyKCk7CkBAIC0zMzAs
NyArMzMwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKICAgICAgICAgSW1wdXJlR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEltcHVyZUdldHRlcio+KGNlbGwpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kZWxlZ2F0ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZGVs
ZWdhdGUpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RGVsZWdhdGUoVk0mIHZtLCBKU09iamVjdCog
ZGVsZWdhdGUpCkBAIC01MjEsNyArNTIxLDcgQEAgcHVibGljOgogICAgICAgICBTaW1wbGVPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2ltcGxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICAgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faGlkZGVuVmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2hpZGRlblZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgICAgIGZvciAoUHJpdmF0ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5
TWFwLmJlZ2luKCk7IHB0ciAhPSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewogICAgICAg
ICAgICAgICAgIGlmIChwdHItPnZhbHVlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmcHRyLT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0
ci0+dmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTIwMiw3ICsxMjAyLDYgQEAKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0RjcyNTY1MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFr
SGFuZGxlT3duZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi87
IH07CiAJCTE0RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjcyNTY0MTRFRTI2
NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVh
cFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEyOEQ0QTgxNzdC
NzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpT
U3RyaW5nUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBODgyNkIxNjUzQzRDRDFBNjQyOTgzQiAvKiBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOEI0N0YyMzQzNjZDNEI3MkFDODUyQTdFIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5j
cHAgKi87IH07CiAJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIw
MEM5QkIxRSAvKiBXZWFrLmNwcCAqLzsgfTsKQEAgLTM1NzksNyArMzU3OCw2IEBACiAJCTE0RjI1
MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU0Vudmlyb25tZW50UmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW52aXJvbm1lbnRSZWNvcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVP
d25lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxl
T3duZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVF
MDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtIYW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
NEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODc5NTEwNjE0
QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY5Myw3ICs1NjkxLDYgQEAKIAkJCQlB
NTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCiAJCQkJQTUzOThG
QTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUEx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAotCQkJCTE0Rjk3NDQ2MTM4Qzg1
M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKIAkJCQlBNTRDMkFBRTFDNjU0NEQx
MDBBMThENzggLyogSGVhcFNuYXBzaG90LmNwcCAqLywKIAkJCQlBNTRDMkFBRjFDNjU0NEQxMDBB
MThENzggLyogSGVhcFNuYXBzaG90LmggKi8sCiAJCQkJQTUzMTFDMzQxQzc3Q0VBQzAwRTZCMUI2
IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwICovLApAQCAtODM3MSw3ICs4MzY4LDYgQEAKIAkJ
CQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcg
LyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJF
MTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JB
NjEwMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxh
dGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENv
cHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoYykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIHZvaWQgJHtvYmplY3ROYW1l
fUJ1aWx0aW5GdW5jdGlvbgogCiBpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0
aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSNkZWZpbmUgVklTSVRf
RlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisjZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKG1fIyNuYW1lIyNGdW5jdGlv
bik7CiAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCiAjdW5kZWYgVklTSVRfRlVOQ1RJT04KIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2MSw3ICsyNDYxLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OnZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc2hv
dWxkVmlzaXRTdHJvbmdseShsb2NrZXIpKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWRSZWFkT25seVBvaW50ZXIodGhpcyk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3Rl
ZCh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI0NzYsNyArMjQ3Niw3
IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdFdlYWtseShTbG90VmlzaXRvciYKIAogICAgIC8vIElm
IHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28g
bWFrZSBzdXJlIHRoYXQgaXQKICAgICAvLyBzdXJ2aXZlcyBHQyBldmVuIGlmIHdlIGRvbid0Lgot
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2FsdGVybmF0aXZlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCht
X2FsdGVybmF0aXZlKTsKICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIHRoaW5ncyB0aGF0IHdl
IHVzZSB3ZWFrIHJlZmVyZW5jZSBoYXJ2ZXN0ZXJzIGZvcjogREZHIGZpeHBvaW50IGZvcgogICAg
IC8vIGpldHRpc29uaW5nLCBhbmQgdHJ5aW5nIHRvIGZpbmQgc3RydWN0dXJlcyB0aGF0IHdvdWxk
IGJlIGxpdmUgYmFzZWQgb24gc29tZQpAQCAtMjUyOCw3ICsyNTI4LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0bwogICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25h
bEZpbmFsaXplcigmbV91bmNvbmRpdGlvbmFsRmluYWxpemVyKTsKIAogICAgIGlmIChDb2RlQmxv
Y2sqIG90aGVyQmxvY2sgPSBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpKQotICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG90aGVyQmxvY2spOworICAg
ICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQob3RoZXJCbG9jayk7CiAKICAgICBpZiAobV9qaXRD
b2RlKQogICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2ppdENvZGUt
PnNpemUoKSk7CkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMoY29uCiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PQogICAgICAgICAgICAgICAgICAgICBtX3ZtLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
bmV3U3RydWN0dXJlSUQpOwogICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZENvbmN1
cnJlbnRseShvbGRTdHJ1Y3R1cmUpKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYWxsQXJlTWFya2VkU29GYXIgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2OTksNyArMjY5OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICAgICAgICAgICAgICAgICAvLyB0byBtYXJr
IChpLmUuIGl0cyBnbG9iYWwgb2JqZWN0IGFuZCBwcm90b3R5cGUgYXJlIGJvdGggYWxyZWFkeQog
ICAgICAgICAgICAgICAgIC8vIGxpdmUpLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fdG8pOworICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90
byk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBhbGxBcmVNYXJrZWRTb0Zh
ciA9IGZhbHNlOwogICAgICAgICB9CkBAIC0yNzQ3LDcgKzI3NDcsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gQWxsIHdlYWsgcmVmZXJlbmNlcyBh
cmUgbGl2ZS4gUmVjb3JkIHRoaXMgaW5mb3JtYXRpb24gc28gd2UgZG9uJ3QKICAgICAvLyBjb21l
IGJhY2sgaGVyZSBhZ2FpbiwgYW5kIHNjYW4gdGhlIHN0cm9uZyByZWZlcmVuY2VzLgogICAgIGRm
Z0NvbW1vbi0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkID0gdHJ1ZTsKLSAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKHRoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1
c3RlZCh0aGlzKTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIH0KIApAQCAtMzA0NSwxNCAr
MzA0NSwxNCBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRPU1JFeGl0VGFyZ2V0cyhjb25zCiAgICAg
Ly8gZ3VhcmFudGVlaW5nIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGV0YWlscyBvZiB0aGUgQ29kZUJs
b2NrIHdlIGNvbXBpbGVkCiAgICAgLy8gdGhlIE9TUiBleGl0IGFnYWluc3QuCiAKLSAgICB2aXNp
dG9yLmFwcGVuZCgmbV9hbHRlcm5hdGl2ZSk7CisgICAgdmlzaXRvci5hcHBlbmQobV9hbHRlcm5h
dGl2ZSk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgaWYgKGRmZ0NvbW1vbi0+aW5saW5l
Q2FsbEZyYW1lcykgewogICAgICAgICBmb3IgKGF1dG8qIGlubGluZUNhbGxGcmFtZSA6ICpkZmdD
b21tb24tPmlubGluZUNhbGxGcmFtZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZp
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2spOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCkBAIC0zMDYyLDIyICszMDYyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJv
bmdseVZpc2l0U3Ryb25nUmVmZXIKIHsKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICAK
LSAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZtX293bmVyRXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fdW5saW5rZWRDb2Rl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2dsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBl
bmQobV9vd25lckV4ZWN1dGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKG1fdW5saW5rZWRDb2Rl
KTsKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9kaXJlY3RFdmFs
Q29kZUNhY2hlLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKG1fY29uc3RhbnRSZWdpc3RlcnMuZGF0YSgpLCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRXhwcnMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRXhwcnNbaV0pOworICAgICAg
ICB2aXNpdG9yLmFwcGVuZChtX2Z1bmN0aW9uRXhwcnNbaV0pOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9mdW5j
dGlvbkRlY2xzW2ldKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVzW2ldLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZChieVZhbEluZm8tPmNhY2hlZFN5bWJvbCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMzA5OCwxNiArMzA5OCwxNiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNp
dFdlYWtSZWZlcmVuCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZnQ29tbW9uLT50
cmFuc2l0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoISFkZmdDb21tb24tPnRyYW5z
aXRpb25zW2ldLm1fY29kZU9yaWdpbikKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdD
b21tb24tPnRyYW5zaXRpb25zW2ldLm1fY29kZU9yaWdpbik7IC8vIEFsbW9zdCBjZXJ0YWlubHkg
bm90IG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNvZGUgb3JpZ2luIHNob3VsZCBhbHNvIGJlIGEgd2Vh
ayByZWZlcmVuY2UuIEJldHRlciB0byBiZSBzYWZlLCB0aG91Z2guCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fZnJvbSk7Ci0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fdG8pOworICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQoZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXS5tX2NvZGVPcmlnaW4pOyAv
LyBBbG1vc3QgY2VydGFpbmx5IG5vdCBuZWNlc3NhcnksIHNpbmNlIHRoZSBjb2RlIG9yaWdpbiBz
aG91bGQgYWxzbyBiZSBhIHdlYWsgcmVmZXJlbmNlLiBCZXR0ZXIgdG8gYmUgc2FmZSwgdGhvdWdo
LgorICAgICAgICB2aXNpdG9yLmFwcGVuZChkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fZnJv
bSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90
byk7CiAgICAgfQogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmdDb21tb24t
PndlYWtSZWZlcmVuY2VzLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZGZn
Q29tbW9uLT53ZWFrUmVmZXJlbmNlc1tpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0Nv
bW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRmZ0NvbW1vbi0+d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzW2ldKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNl
c1tpXSk7CiAKICAgICBkZmdDb21tb24tPmxpdmVuZXNzSGFzQmVlblByb3ZlZCA9IHRydWU7CiAj
ZW5kaWYgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZh
bENvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFn
Z3JlZ2F0ZQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgRXZhbENhY2hlTWFw
OjppdGVyYXRvciBlbmQgPSBtX2NhY2hlTWFwLmVuZCgpOwogICAgIGZvciAoRXZhbENhY2hlTWFw
OjppdGVyYXRvciBwdHIgPSBtX2NhY2hlTWFwLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT52YWx1ZSk7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHB0ci0+dmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJl
KiBjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBK
U09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2UpOwogCiAgICAgdm9pZCBjbGVhcigp
IHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQotICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpIHsgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsgfQorICAgIHZv
aWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIHsgdmlzaXRvci5hcHBlbmQo
bV9zdHJ1Y3R1cmUpOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9zdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7
CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzUsNyArNTc1LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVU
cmFuc2l0aW9ucyhTbAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9u
OgogICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9u
bHlQb2ludGVyKG1fc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTUgKzk0LDE1IEBAIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKnRoaXNPYmplY3QpOwog
ICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uRGVjbHMuYmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkRlY2xzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
cHRyKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoKnB0cik7CiAgICAgZm9yIChGdW5jdGlvbkV4
cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBy
cy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuZW5kKCk7IHB0ciAh
PSBlbmQ7ICsrcHRyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZChwdHIpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZCgqcHRyKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5t
X2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwgdGhpc09iamVjdC0+bV9jb25zdGFudFJlZ2lzdGVy
cy5zaXplKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zKQog
ICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX3Vu
bGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpKTsKICAgICBpZiAodGhpc09iamVjdC0+
bV9yYXJlRGF0YSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgZW5kID0gdGhpc09iamVj
dC0+bV9yYXJlRGF0YS0+bV9yZWdleHBzLnNpemUoKTsgaSAhPSBlbmQ7IGkrKykKLSAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0p
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yYXJlRGF0YS0+bV9y
ZWdleHBzW2ldKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2gKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKIH0KIAogRnVuY3Rpb25FeGVjdXRhYmxl
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHBhc3NlZFBhcmVudFNvdXJjZSwgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51
bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIERlYnVnZ2VyU2NvcGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsCiAgICAgRGVidWdnZXJTY29wZSogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlclNj
b3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXh0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3Njb3BlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25leHQpOwog
fQogCiBTdHJpbmcgRGVidWdnZXJTY29wZTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
VHJhbnNpdGlvbnMuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMs
OSArNTMsOSBAQCB2b2lkIERlc2lyZWRUcmFuc2l0aW9uOjpyZWFsbHlBZGQoVk0mIHZtCiAKIHZv
aWQgRGVzaXJlZFRyYW5zaXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fY29kZU9yaWdpbk93
bmVyKTsKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9vbGRTdHJ1Y3R1
cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtX25ld1N0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fY29kZU9yaWdpbk93bmVyKTsKKyAgICB2
aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9vbGRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChtX25ld1N0cnVjdHVyZSk7CiB9CiAKIERlc2lyZWRUcmFuc2l0aW9uczo6RGVzaXJl
ZFRyYW5zaXRpb25zKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBEZXNpcmVkV2Vha1JlZmVyZW5jZXM6
OnJlYWxseUFkZChWTQogdm9pZCBEZXNpcmVkV2Vha1JlZmVyZW5jZXM6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChKU0NlbGwqIHRhcmdldCA6IG1fcmVm
ZXJlbmNlcykKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnRhcmdl
dCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZCh0YXJnZXQpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTAsOCArMTQxMCw4IEBAIHZvaWQgR3JhcGg6
OnJlZ2lzdGVyRnJvemVuVmFsdWVzKCkKIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChGcm96ZW5WYWx1ZSogdmFsdWUgOiBtX2Zyb3pl
blZhbHVlcykgewotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1
ZSh2YWx1ZS0+dmFsdWUoKSk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIodmFsdWUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRU
cnVzdGVkKHZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHZh
bHVlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAogICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTE0MjUsMjggKzE0MjUs
MjYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVjdHVyZVNldCgp
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7CisgICAgICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIE5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAg
ICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChub2RlLT5zdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IFB1dFN0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcigKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7Ci0gICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcigKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKKyAgICAgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZFRydXN0ZWQobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7CisgICAgICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBNdWx0aUdl
dEJ5T2Zmc2V0Q2FzZSYgZ2V0Q2FzZSA6IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuY2Fz
ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IGdl
dENhc2Uuc2V0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMTQ1NSw5ICsx
NDUzLDkgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAg
ICAgICAgICAgICAgICBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlP
ZmZzZXREYXRhKCkudmFyaWFudHNbaV07CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0ID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gc2V0LnNpemUoKTsgai0tOykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoc2V0W2pdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChzZXRbal0pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6
OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDEwICs2MTksMTAgQEAgdm9pZCBQbGFuOjptYXJrQ29kZUJsb2Nr
cyhTbG90VmlzaXRvciYgcwogICAgIC8vIGFuIGV4cGxpY2l0IGJhcnJpZXIuIFNvLCB3ZSBuZWVk
IHRvIGJlIHBlc3NpbWlzdGljIGFuZCBhc3N1bWUgdGhhdAogICAgIC8vIGFsbCBvdXIgQ29kZUJs
b2NrcyBtdXN0IGJlIHZpc2l0ZWQgZHVyaW5nIEdDLgogCi0gICAgc2xvdFZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoY29kZUJsb2NrKTsKLSAgICBzbG90VmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkp
OworICAgIHNsb3RWaXNpdG9yLmFwcGVuZFRydXN0ZWQoY29kZUJsb2NrKTsKKyAgICBzbG90Vmlz
aXRvci5hcHBlbmRUcnVzdGVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgaWYgKHBy
b2ZpbGVkREZHQ29kZUJsb2NrKQotICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZFJlYWRPbmx5UG9pbnRlcihwcm9maWxlZERGR0NvZGVCbG9jayk7CisgICAgICAgIHNsb3RWaXNp
dG9yLmFwcGVuZFRydXN0ZWQocHJvZmlsZWRERkdDb2RlQmxvY2spOwogfQogCiB2b2lkIFBsYW46
OnJlbWVtYmVyQ29kZUJsb2NrcyhWTSYgdm0pCkBAIC02NDcsMTYgKzY0NywxNiBAQCB2b2lkIFBs
YW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAKICAgICBjbGVhbk11c3RIYW5kbGVW
YWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1
ZXMuc2l6ZSgpOyBpLS07KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkVmFsdWUo
Jm11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobXVz
dEhhbmRsZVZhbHVlc1tpXSk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9u
bHlQb2ludGVyKGNvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRP
bmx5UG9pbnRlcihjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwotICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIocHJvZmlsZWRERkdDb2RlQmxvY2spOworICAgIHZp
c2l0b3IuYXBwZW5kVHJ1c3RlZChjb2RlQmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3Rl
ZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChw
cm9maWxlZERGR0NvZGVCbG9jayk7CiAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lcykgewogICAg
ICAgICBmb3IgKGF1dG8qIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSk7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVy
KGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOworICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRUcnVzdGVkKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2su
Z2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hhbmRsZVNldC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogCiAj
aW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKICNpbmNsdWRlICJIYW5kbGVCbG9ja0lubGluZXMuaCIK
LSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAtNTksMTQg
KzU4LDE0IEBAIHZvaWQgSGFuZGxlU2V0Ojpncm93KCkKICAgICB9CiB9CiAKLXZvaWQgSGFuZGxl
U2V0Ojp2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3Ip
Cit2b2lkIEhhbmRsZVNldDo6dmlzaXRTdHJvbmdIYW5kbGVzKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIE5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5u
ZXh0KCkpIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNMaXZlTm9kZShub2RlKSk7CiAjZW5kaWYKLSAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZp
c2l0KG5vZGUtPnNsb3QoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZCgqbm9kZS0+
c2xvdCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVNldC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
YW5kbGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEhhbmRsZVNldDsKLWNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIFZN
OwogY2xhc3MgSlNWYWx1ZTsKK2NsYXNzIFNsb3RWaXNpdG9yOwogCiBjbGFzcyBIYW5kbGVOb2Rl
IHsKIHB1YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIEhhbmRsZVNsb3QgYWxs
b2NhdGUoKTsKICAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xvdCk7CiAKLSAgICB2b2lkIHZp
c2l0U3Ryb25nSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2b2lkIHZpc2l0U3Ryb25n
SGFuZGxlcyhTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0
ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNr
LmgiCiAKLSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtNDAsNyArMzksNyBAQCBIYW5kbGVTdGFj
azo6SGFuZGxlU3RhY2soKQogICAgIGdyb3coKTsKIH0KIAotdm9pZCBIYW5kbGVTdGFjazo6dmlz
aXQoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCit2b2lkIEhhbmRsZVN0YWNrOjp2
aXNpdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBjb25zdCBWZWN0b3I8SGFuZGxlU2xv
dD4mIGJsb2NrcyA9IG1fYmxvY2tTdGFjay5ibG9ja3MoKTsKICAgICBzaXplX3QgYmxvY2tMZW5n
dGggPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGg7CkBAIC00OCwxMCArNDcsMTAgQEAgdm9pZCBI
YW5kbGVTdGFjazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJgogICAgIGludCBlbmQgPSBibG9ja3Mu
c2l6ZSgpIC0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAg
IEhhbmRsZVNsb3QgYmxvY2sgPSBibG9ja3NbaV07Ci0gICAgICAgIGhlYXBSb290VmlzaXRvci52
aXNpdChibG9jaywgYmxvY2tMZW5ndGgpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQo
YmxvY2ssIGJsb2NrTGVuZ3RoKTsKICAgICB9CiAgICAgSGFuZGxlU2xvdCBibG9jayA9IGJsb2Nr
c1tlbmRdOwotICAgIGhlYXBSb290VmlzaXRvci52aXNpdChibG9jaywgbV9mcmFtZS5tX25leHQg
LSBibG9jayk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGJsb2NrLCBtX2ZyYW1lLm1fbmV4
dCAtIGJsb2NrKTsKIH0KIAogdm9pZCBIYW5kbGVTdGFjazo6Z3JvdygpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExvY2FsU2NvcGU7Ci1jbGFzcyBI
ZWFwUm9vdFZpc2l0b3I7CitjbGFzcyBTbG90VmlzaXRvcjsKIAogY2xhc3MgSGFuZGxlU3RhY2sg
ewogcHVibGljOgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBIYW5kbGVTbG90IHB1
c2goKTsKIAotICAgIHZvaWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgdm9pZCB2aXNp
dChTbG90VmlzaXRvciYpOwogCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
Z3JvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNp
bmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNv
bWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgiCkBAIC0zNSw3ICszNiw2IEBACiAjaW5jbHVkZSAi
SGVhcEhlbHBlclBvb2wuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJIZWFwUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNs
dWRlICJIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIkhlYXBWZXJpZmllci5oIgpAQCAtNTE1LDggKzUxNSw2IEBAIHZvaWQgSGVhcDo6bWFya1Rv
Rml4cG9pbnQoZG91YmxlIGdjU3RhcnQKIHsKICAgICBUaW1pbmdTY29wZSBtYXJrVG9GaXhwb2lu
dFRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1RvRml4cG9pbnQiKTsKICAgICAKLSAgICBI
ZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsK
LSAgICAKICAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxs
KSB7CiAgICAgICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICAgICAgICAgbV9jb2xsZWN0b3JT
bG90VmlzaXRvci0+Y2xlYXJNYXJrU3RhY2tzKCk7CkBAIC01NTksNyArNTU3LDggQEAgdm9pZCBI
ZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKIAotICAgIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmRpZFN0YXJ0TWFya2luZygpOwor
ICAgIFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvciA9ICptX2NvbGxlY3RvclNsb3RWaXNpdG9yOwor
ICAgIHNsb3RWaXNpdG9yLmRpZFN0YXJ0TWFya2luZygpOwogCiAgICAgU3BhY2VUaW1lU2NoZWR1
bGVyIHNjaGVkdWxlcigqdGhpcyk7CiAgICAgCkBAIC01ODAsNTUgKzU3OSw1MyBAQCB2b2lkIEhl
YXA6Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIC8vIE5vdyB3ZSB2aXNp
dCByb290cyB0aGF0IGRvbid0IGdldCBiYXJyaWVyZWQsIHNvIGVhY2ggZml4cG9pbnQgaXRlcmF0
aW9uIGp1c3QgcmV2aXNpdHMKICAgICAgICAgLy8gYWxsIG9mIHRoZW0uCiAjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKLSAgICAgICAgc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldCgqbV92bSwgKm1f
Y29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICBzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0
KCptX3ZtLCBzbG90VmlzaXRvcik7CiAjZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICBpZiAo
bV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQoKm1fY29sbGVjdGlvblNjb3BlKSkK
LSAgICAgICAgICAgIG1fdm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMoKm1f
Y29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgbV92bS0+c21hbGxTdHJpbmdzLnZp
c2l0U3Ryb25nUmVmZXJlbmNlcyhzbG90VmlzaXRvcik7CiAgICAgICAgICAgICAKICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCi0gICAgICAgICAgICBoZWFwUm9v
dFZpc2l0b3IudmlzaXQoJnBhaXIua2V5KTsKKyAgICAgICAgICAgIHNsb3RWaXNpdG9yLmFwcGVu
ZFRydXN0ZWQocGFpci5rZXkpOwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX21hcmtMaXN0
U2V0ICYmIG1fbWFya0xpc3RTZXQtPnNpemUoKSkKLSAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyOjptYXJrTGlzdHMoaGVhcFJvb3RWaXNpdG9yLCAqbV9tYXJrTGlzdFNldCk7CisgICAg
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKHNsb3RWaXNpdG9yLCAqbV9t
YXJrTGlzdFNldCk7CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKG1fdm0tPmV4Y2VwdGlvbigp
KQotICAgICAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0KG1fdm0tPmFkZHJlc3NPZkV4Y2Vw
dGlvbigpKTsKLSAgICAgICAgaWYgKG1fdm0tPmxhc3RFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
IGhlYXBSb290VmlzaXRvci52aXNpdChtX3ZtLT5hZGRyZXNzT2ZMYXN0RXhjZXB0aW9uKCkpOwor
ICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fdm0tPmV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3ZtLT5sYXN0RXhjZXB0aW9uKCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25nSGFuZGxlcyhoZWFw
Um9vdFZpc2l0b3IpOwotICAgICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KGhlYXBSb290VmlzaXRv
cik7CisgICAgICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25nSGFuZGxlcyhzbG90VmlzaXRvcik7
CisgICAgICAgIG1faGFuZGxlU3RhY2sudmlzaXQoc2xvdFZpc2l0b3IpOwogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICBpZiAoU2FtcGxpbmdQcm9maWxlciogc2FtcGxp
bmdQcm9maWxlciA9IG1fdm0tPnNhbXBsaW5nUHJvZmlsZXIoKSkgewogICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpKTsKICAgICAgICAgICAg
IHNhbXBsaW5nUHJvZmlsZXItPnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKTsKLSAgICAg
ICAgICAgIHNhbXBsaW5nUHJvZmlsZXItPnZpc2l0KCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsK
KyAgICAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXItPnZpc2l0KHNsb3RWaXNpdG9yKTsKICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJTYW1wbGluZyBQcm9maWxlciBkYXRhOlxuIiwgKm1fY29sbGVj
dG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIlNhbXBsaW5nIFByb2Zp
bGVyIGRhdGE6XG4iLCBzbG90VmlzaXRvcik7CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
U0FNUExJTkdfUFJPRklMRVIpCiAgICAgICAgIAogICAgICAgICBpZiAobV92bS0+dHlwZVByb2Zp
bGVyKCkpCi0gICAgICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJMb2coKS0+dmlzaXQoKm1fY29s
bGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgbV92bS0+dHlwZVByb2ZpbGVyTG9nKCkt
PnZpc2l0KHNsb3RWaXNpdG9yKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgbV92bS0+c2hh
ZG93Q2hpY2tlbigpLnZpc2l0Q2hpbGRyZW4oKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAg
ICAgICBtX3ZtLT5zaGFkb3dDaGlja2VuKCkudmlzaXRDaGlsZHJlbihzbG90VmlzaXRvcik7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgIG1faml0U3R1YlJvdXRpbmVzLT50cmFjZU1hcmtlZFN0
dWJSb3V0aW5lcygqbV9jb2xsZWN0b3JTbG90VmlzaXRvcik7CisgICAgICAgIG1faml0U3R1YlJv
dXRpbmVzLT50cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhzbG90VmlzaXRvcik7CiAKLSAgICAgICAg
bV9jb2xsZWN0b3JTbG90VmlzaXRvci0+bWVyZ2VPcGFxdWVSb290c0lmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIHNsb3RWaXNpdG9yLm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgpOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhcmFsbGVsVmlzaXRvciA6IG1fcGFyYWxsZWxTbG90VmlzaXRvcnMpCiAg
ICAgICAgICAgICBwYXJhbGxlbFZpc2l0b3ItPm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgp
OwogCi0gICAgICAgIG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0cyhoZWFwUm9vdFZpc2l0b3Ip
OworICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHMoc2xvdFZpc2l0b3IpOwogICAg
ICAgICBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICAgICAgdmlzaXRDb21waWxlcldvcmts
aXN0V2Vha1JlZmVyZW5jZXMoKTsKLSAgICAgICAgREZHOjptYXJrQ29kZUJsb2NrcygqbV92bSwg
Km1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOwotICAgICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9
IG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmlzRW1wdHkoKSAmJiBtX211dGF0b3JNYXJrU3RhY2st
PmlzRW1wdHkoKTsKKyAgICAgICAgREZHOjptYXJrQ29kZUJsb2NrcygqbV92bSwgc2xvdFZpc2l0
b3IpOworICAgICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9IHNsb3RWaXNpdG9yLmlzRW1wdHko
KSAmJiBtX211dGF0b3JNYXJrU3RhY2stPmlzRW1wdHkoKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChPcHRpb25zOjpsb2dHQygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKG1fY29sbGVjdG9yU2xv
dFZpc2l0b3ItPmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJr
U3RhY2stPnNpemUoKSArIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm11dGF0b3JNYXJrU3RhY2so
KS5zaXplKCksICIsIGE9IiwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSAvIDEwMjQsICIga2Is
IGI9IiwgbV9iYXJyaWVyc0V4ZWN1dGVkLCAiLCBtdT0iLCBzY2hlZHVsZXIuY3VycmVudERlY2lz
aW9uKCkudGFyZ2V0TXV0YXRvclV0aWxpemF0aW9uKCksICIgIik7CisgICAgICAgICAgICBkYXRh
TG9nKHNsb3RWaXNpdG9yLmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0
b3JNYXJrU3RhY2stPnNpemUoKSArIHNsb3RWaXNpdG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXpl
KCksICIsIGE9IiwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSAvIDEwMjQsICIga2IsIGI9Iiwg
bV9iYXJyaWVyc0V4ZWN1dGVkLCAiLCBtdT0iLCBzY2hlZHVsZXIuY3VycmVudERlY2lzaW9uKCku
dGFyZ2V0TXV0YXRvclV0aWxpemF0aW9uKCksICIgIik7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gZG8gdGhpcyB0byBjb25zZXJ2YXRpdmVseSBlbnN1cmUgdGhh
dCB3ZSByZXNjYW4gYW55IGNvZGUgYmxvY2tzIHRoYXQgYXJlCkBAIC02NDUsMTQgKzY0MiwxNCBA
QCB2b2lkIEhlYXA6Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGUgU2xvdFZpc2l0b3IncyBtYXJrIHN0YWNrcyBhcmUgYWNjZXNzZWQgYnkgdGhl
IGNvbGxlY3RvciB0aHJlYWQgKGkuZS4gdGhpcyB0aHJlYWQpCiAgICAgICAgIC8vIHdpdGhvdXQg
bG9ja3MuIFRoYXQncyB3aHkgd2UgZG91YmxlLWJ1ZmZlci4KLSAgICAgICAgbV9tdXRhdG9yTWFy
a1N0YWNrLT50cmFuc2ZlclRvKG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm11dGF0b3JNYXJrU3Rh
Y2soKSk7CisgICAgICAgIG1fbXV0YXRvck1hcmtTdGFjay0+dHJhbnNmZXJUbyhzbG90VmlzaXRv
ci5tdXRhdG9yTWFya1N0YWNrKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiTGl2ZSBX
ZWFrIEhhbmRsZXM6XG4iLCAqbV9jb2xsZWN0b3JTbG90VmlzaXRvcik7CisgICAgICAgICAgICBk
YXRhTG9nKCJMaXZlIFdlYWsgSGFuZGxlczpcbiIsIHNsb3RWaXNpdG9yKTsKICAgICAgICAgCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFRpbWluZ1Njb3BlIHRyYWNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrVG9GaXhwb2ludCB0cmFjaW5nIik7Ci0gICAgICAgICAgICBQYXJhbGxlbE1v
ZGVFbmFibGVyIGVuYWJsZXIoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAg
UGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNpdG9yKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbGxlY3RvclRpbWVzbGljaW5nKCkpIHsKICAg
ICAgICAgICAgICAgICBzY2hlZHVsZXIuc25hcFBoYXNlKCk7CkBAIC02NjMsNyArNjYwLDcgQEAg
dm9pZCBIZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgICAg
ICAgICBpZiAoZGVjaXNpb24uc2hvdWxkQmVSZXN1bWVkKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bWVUaGVXb3JsZFNjb3Bl
IHJlc3VtZVRoZVdvcmxkU2NvcGUoKnRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRyYWluUmVzdWx0ID0gbV9jb2xsZWN0b3JTbG90VmlzaXRvci0+ZHJhaW5JblBhcmFsbGVsUGFz
c2l2ZWx5KGRlY2lzaW9uLnRpbWVUb1N0b3AoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhaW5SZXN1bHQgPSBzbG90VmlzaXRvci5kcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkoZGVj
aXNpb24udGltZVRvU3RvcCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHJh
aW5SZXN1bHQgPT0gU2xvdFZpc2l0b3I6OlNoYXJlZERyYWluUmVzdWx0OjpEb25lKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ugd2lsbCBzdG9w
LiBCdXQgbWF5YmUgdGhlIHNjaGVkdWxlciBkb2VzIG5vdCB3YW50CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoYXQuCkBAIC02ODAsMTMgKzY3NywxMyBAQCB2b2lkIEhlYXA6
Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coInd1bCE9Iiwgd2FrZVVwTGF0ZW5jeS5taWxsaXNlY29uZHMoKSwgIiBt
cyAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBkcmFpblJlc3VsdCA9IG1fY29sbGVjdG9yU2xv
dFZpc2l0b3ItPmRyYWluSW5QYXJhbGxlbChkZWNpc2lvbi50aW1lVG9SZXN1bWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkcmFpblJlc3VsdCA9IHNsb3RWaXNpdG9yLmRyYWluSW5QYXJh
bGxlbChkZWNpc2lvbi50aW1lVG9SZXN1bWUoKSk7CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAo
ZHJhaW5SZXN1bHQgIT0gU2xvdFZpc2l0b3I6OlNoYXJlZERyYWluUmVzdWx0OjpEb25lKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gRGlzYWJsaW5nIGNvbGxlY3Rv
ciB0aW1lc2xpY2luZyBpcyBtZWFudCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKICAgICAgICAg
ICAgICAgICAvLyAtLWNvbGxlY3RDb250aW51b3VzbHk9dHJ1ZSB0byBtYXhpbWl6ZSB0aGUgb3Bw
b3J0dW5pdHkgZm9yIGhhcm1mdWwgcmFjZXMuCiAgICAgICAgICAgICAgICAgUmVzdW1lVGhlV29y
bGRTY29wZSByZXN1bWVUaGVXb3JsZFNjb3BlKCp0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2Nv
bGxlY3RvclNsb3RWaXNpdG9yLT5kcmFpbkluUGFyYWxsZWwoKTsKKyAgICAgICAgICAgICAgICBz
bG90VmlzaXRvci5kcmFpbkluUGFyYWxsZWwoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNiBAQCBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmU7CiBjbGFzcyBIZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSGVh
cFJvb3RWaXNpdG9yOwogY2xhc3MgSGVhcFZlcmlmaWVyOwogY2xhc3MgSGVscGluZ0dDU2NvcGU7
CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CkBAIC00NTksNyArNDU4LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAg
ICB2b2lkIHZpc2l0Q29tcGlsZXJXb3JrbGlzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBy
ZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMoKTsKLSAgICB2b2lkIG1hcmtUb0ZpeHBv
aW50KEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgdXBkYXRlT2JqZWN0Q291bnRzKGRvdWJs
ZSBnY1N0YXJ0VGltZSk7CiAgICAgdm9pZCBlbmRNYXJraW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTbG90VmlzaXRv
ci5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotICAgIC8vIFByaXZpbGVnZWQgY2xhc3MgZm9yIG1hcmtpbmcgSlNWYWx1ZXMgZGlyZWN0bHku
IEl0IGlzIG9ubHkgc2FmZSB0byB1c2UKLSAgICAvLyB0aGlzIGNsYXNzIHRvIG1hcmsgZGlyZWN0
IGhlYXAgcm9vdHMgdGhhdCBhcmUgbWFya2VkIGR1cmluZyBldmVyeSBHQyBwYXNzLgotICAgIC8v
IEFsbCBvdGhlciByZWZlcmVuY2VzIHNob3VsZCBiZSB3cmFwcGVkIGluIFdyaXRlQmFycmllcnMu
Ci0gICAgY2xhc3MgSGVhcFJvb3RWaXNpdG9yIHsKLSAgICBwcml2YXRlOgotICAgICAgICBmcmll
bmQgY2xhc3MgSGVhcDsKLSAgICAgICAgSGVhcFJvb3RWaXNpdG9yKFNsb3RWaXNpdG9yJik7Ci0K
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgdmlzaXQoSlNWYWx1ZSopOwotICAgICAgICB2b2lk
IHZpc2l0KEpTVmFsdWUqLCBzaXplX3QpOwotICAgICAgICB2b2lkIHZpc2l0KEpTU3RyaW5nKiop
OwotICAgICAgICB2b2lkIHZpc2l0KEpTQ2VsbCoqKTsKLQotICAgICAgICBTbG90VmlzaXRvciYg
dmlzaXRvcigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU2xvdFZpc2l0b3ImIG1fdmlzaXRv
cjsKLSAgICB9OwotCi0gICAgaW5saW5lIEhlYXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9y
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotICAgICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQotICAg
IHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0KEpTVmFs
dWUqIHNsb3QpCi0gICAgewotICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRWYWx1
ZShzbG90KTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0
KEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIG1fdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZFZhbHVlKCZzbG90W2ldKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9v
dFZpc2l0b3I6OnZpc2l0KEpTU3RyaW5nKiogc2xvdCkKLSAgICB7Ci0gICAgICAgIG1fdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoc2xvdCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZv
aWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdChKU0NlbGwqKiBzbG90KQotICAgIHsKLSAgICAgICAg
bV92aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihzbG90KTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgU2xvdFZpc2l0b3ImIEhlYXBSb290VmlzaXRvcjo6dmlzaXRvcigpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV92aXNpdG9yOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0
b3IuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0
aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6c2hyaW5rKCkK
ICAgICBtX3dlYWtTZXQuc2hyaW5rKCk7CiB9CiAKLXZvaWQgTGFyZ2VBbGxvY2F0aW9uOjp2aXNp
dFdlYWtTZXQoSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBMYXJnZUFsbG9jYXRpb246
OnZpc2l0V2Vha1NldChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBtX3dlYWtTZXQudmlz
aXQodmlzaXRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFs
bG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJn
ZUFsbG9jYXRpb24uaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFNsb3RWaXNpdG9yOworCiAvLyBXZWJLaXQgaGFz
IGEgZ29vZCBtYWxsb2MgdGhhdCBhbHJlYWR5IGtub3dzIHdoYXQgdG8gZG8gZm9yIGxhcmdlIGFs
bG9jYXRpb25zLiBUaGUgR0Mgc2hvdWxkbid0CiAvLyBoYXZlIHRvIHRoaW5rIGFib3V0IHN1Y2gg
dGhpbmdzLiBUaGF0J3Mgd2hlcmUgTGFyZ2VBbGxvY2F0aW9uIGNvbWVzIGluLiBXZSB3aWxsIGFs
bG9jYXRlIGxhcmdlCiAvLyBvYmplY3RzIGRpcmVjdGx5IHVzaW5nIG1hbGxvYywgYW5kIHB1dCB0
aGUgTGFyZ2VBbGxvY2F0aW9uIGhlYWRlciBqdXN0IGJlZm9yZSB0aGVtLiBXZSBjYW4gZGV0ZWN0
CkBAIC02Miw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNocmluaygpOwogICAg
IAotICAgIHZvaWQgdmlzaXRXZWFrU2V0KEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgdmlz
aXRXZWFrU2V0KFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwV2Vha1NldCgpOwogICAgIAog
ICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZCgpIHsgbV9pc05ld2x5QWxsb2NhdGVkID0gZmFs
c2U7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIZWFwOwogY2xhc3MgSlND
ZWxsOwogY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogY2xhc3MgTWFya2VkU3BhY2U7CitjbGFzcyBT
bG90VmlzaXRvcjsKIAogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3Qg
SGVhcFZlcnNpb247CkBAIC0xMzIsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgdm9pZCBzaHJpbmsoKTsKICAgICAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCB2aXNpdFdl
YWtTZXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgICAgIHVuc2lnbmVkIHZpc2l0V2Vha1NldChT
bG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIHJlYXBXZWFrU2V0KCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gV2hpbGUgYWxsb2NhdGluZyBmcm9tIGEgZnJlZSBsaXN0LCBNYXJrZWRCbG9j
ayB0ZW1wb3JhcmlseSBoYXMgYm9ndXMKQEAgLTQzMSw5ICs0MzIsOSBAQCBpbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzaHJpbmsoCiAgICAgbV93ZWFrU2V0LnNocmluaygpOwogfQog
Ci1pbmxpbmUgdW5zaWduZWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dmlzaXRXZWFrU2V0KEhlYXBS
b290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnZpc2l0V2Vha1NldChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICByZXR1
cm4gbV93ZWFrU2V0LnZpc2l0KGhlYXBSb290VmlzaXRvcik7CisgICAgcmV0dXJuIG1fd2Vha1Nl
dC52aXNpdCh2aXNpdG9yKTsKIH0KIAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
cmVhcFdlYWtTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMTAgKzM1OSwxMCBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV9hbGxvY2F0b3JGb3JF
bXB0eUFsbG9jYXRpb24gPSBtX2ZpcnN0QWxsb2NhdG9yOwogfQogCi12b2lkIE1hcmtlZFNwYWNl
Ojp2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQordm9pZCBN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBh
dXRvIHZpc2l0ID0gWyZdIChXZWFrU2V0KiB3ZWFrU2V0KSB7Ci0gICAgICAgIHdlYWtTZXQtPnZp
c2l0KGhlYXBSb290VmlzaXRvcik7CisgICAgICAgIHdlYWtTZXQtPnZpc2l0KHZpc2l0b3IpOwog
ICAgIH07CiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAKLSAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNp
dG9yJik7CisgICAgdm9pZCB2aXNpdFdlYWtTZXRzKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBy
ZWFwV2Vha1NldHMoKTsKIAogICAgIE1hcmtlZEJsb2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBt
X2Jsb2NrczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTbG90
VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgIH0gfQogfQogCi12b2lkIFNsb3RW
aXNpdG9yOjphcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKK3ZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRy
dXN0ZWQoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIFNs
b3RWaXNpdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogICAgIGZyaWVuZCBj
bGFzcyBTZXRDdXJyZW50Q2VsbFNjb3BlOwotICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0
b3I7IC8vIEFsbG93ZWQgdG8gbWFyayBhIEpTVmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5Lgog
ICAgIGZyaWVuZCBjbGFzcyBIZWFwOwogCiBwdWJsaWM6CkBAIC03MCwyMCArNjksMjcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhcHBlbmRIaWRkZW4oV3JpdGVCYXJyaWVyQmFz
ZTxUPiopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5kKGNvbnN0IFdyaXRl
QmFycmllckJhc2U8VD4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZEhp
ZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQ+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmF0b3I+IHZvaWQgYXBwZW5kKEl0ZXJhdG9yIGJlZ2luICwgSXRlcmF0b3IgZW5kKTsKLSAg
ICB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNv
dW50KTsKLSAgICB2b2lkIGFwcGVuZFZhbHVlc0hpZGRlbihXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+Kiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIGFwcGVuZFZhbHVlcyhjb25zdCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIGFwcGVuZFZhbHVl
c0hpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsK
KyAgICAKKyAgICAvLyBUaGVzZSBkb24ndCByZXF1aXJlIHlvdSB0byBwcm92ZSB0aGF0IHlvdSBo
YXZlIGEgV3JpdGVCYXJyaWVyPD4uIFRoYXQgbWFrZXMgc2Vuc2UKKyAgICAvLyBmb3I6CisgICAg
Ly8KKyAgICAvLyAtIHJvb3RzLgorICAgIC8vIC0gc29waGlzdGljYXRlZCBkYXRhIHN0cnVjdHVy
ZXMgdGhhdCBiYXJyaWVyIHRocm91Z2ggb3RoZXIgbWVhbnMgKGxpa2UgREZHOjpQbGFuIGFuZAor
ICAgIC8vICAgZnJpZW5kcykuCisgICAgLy8KKyAgICAvLyBJZiB5b3UgYXJlIG5vdCBhIHJvb3Qg
YW5kIHlvdSBkb24ndCBrbm93IHdoYXQga2luZCBvZiBiYXJyaWVyIHlvdSBoYXZlLCB0aGVuIHlv
dQorICAgIC8vIHNob3VsZG4ndCBjYWxsIHRoZXNlIG1ldGhvZHMuCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhcHBlbmRUcnVzdGVkKEpTVmFsdWUpOworICAgIHZvaWQgYXBwZW5kVHJ1c3Rl
ZChKU1ZhbHVlKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZFRydXN0ZWQoSlNDZWxsKik7CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVk
UG9pbnRlcihUKiopOwotICAgIHZvaWQgYXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1ZhbHVlKik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkV2Vh
ayhXZWFrPFQ+Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlQb2ludGVyKFQqKTsKLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVk
UmVhZE9ubHlWYWx1ZShKU1ZhbHVlKTsKKyAgICB2b2lkIGFwcGVuZFRydXN0ZWQoY29uc3QgV2Vh
azxUPiYgd2Vhayk7CiAgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRPcGFxdWVS
b290KHZvaWQqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zT3BhcXVlUm9v
dCh2b2lkKikgY29uc3Q7CkBAIC0xNDksNyArMTU1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUGFyYWxsZWxNb2RlRW5hYmxlcjsKICAgICAKLSAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFwcGVuZChKU1ZhbHVlKTsgLy8gVGhpcyBpcyBwcml2YXRlIHRvIGVuY291
cmFnZSBjbGllbnRzIHRvIHVzZSBXcml0ZUJhcnJpZXI8VD4uCiAgICAgdm9pZCBhcHBlbmRKU0Nl
bGxPckF1eGlsaWFyeShIZWFwQ2VsbCopOwogICAgIHZvaWQgYXBwZW5kSGlkZGVuKEpTVmFsdWUp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklu
bGluZXMuaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNjYgKzMx
LDUyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5l
IHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihUKiogc2xvdCkKLXsK
LSAgICBBU1NFUlQoc2xvdCk7Ci0gICAgYXBwZW5kKCpzbG90KTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFJlYWRP
bmx5UG9pbnRlcihUKiBjZWxsKQotewotICAgIGFwcGVuZChjZWxsKTsKLX0KLQotaW5saW5lIHZv
aWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkVmFsdWUoSlNWYWx1ZSogc2xvdCkKK2lu
bGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRUcnVzdGVkKEpTVmFsdWUqIHNsb3QsIHNpemVf
dCBjb3VudCkKIHsKLSAgICBBU1NFUlQoc2xvdCk7Ci0gICAgYXBwZW5kKCpzbG90KTsKKyAgICBm
b3IgKHNpemVfdCBpID0gY291bnQ7IGktLTspCisgICAgICAgIGFwcGVuZFRydXN0ZWQoc2xvdFtp
XSk7CiB9CiAKLWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFJlYWRP
bmx5VmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK2lubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRU
cnVzdGVkKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBhcHBlbmQodmFsdWUpOworICAgIGFwcGVuZFRy
dXN0ZWQoSlNWYWx1ZShjZWxsKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
dm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRXZWFrKFdlYWs8VD4qIHdlYWspCitp
bmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVHJ1c3RlZChjb25zdCBXZWFrPFQ+JiB3ZWFr
KQogewotICAgIEFTU0VSVCh3ZWFrKTsKLSAgICBhcHBlbmQod2Vhay0+Z2V0KCkpOworICAgIGFw
cGVuZFRydXN0ZWQod2Vhay5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kKFdyaXRlQmFycmllckJhc2U8VD4qIHNsb3QpCitp
bmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VD4m
IHNsb3QpCiB7Ci0gICAgYXBwZW5kKHNsb3QtPmdldCgpKTsKKyAgICBhcHBlbmRUcnVzdGVkKHNs
b3QuZ2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgU2xvdFZp
c2l0b3I6OmFwcGVuZEhpZGRlbihXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQoraW5saW5lIHZv
aWQgU2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQ+JiBz
bG90KQogewotICAgIGFwcGVuZEhpZGRlbihzbG90LT5nZXQoKSk7CisgICAgYXBwZW5kSGlkZGVu
KHNsb3QuZ2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KIGlubGluZSB2
b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKIHsK
ICAgICBmb3IgKGF1dG8gaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBhcHBl
bmQoJippdCk7CisgICAgICAgIGFwcGVuZCgqaXQpOwogfQogCi1pbmxpbmUgdm9pZCBTbG90Vmlz
aXRvcjo6YXBwZW5kVmFsdWVzKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBz
aXplX3QgY291bnQpCitpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzKGNvbnN0
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGJhcnJpZXJzLCBzaXplX3QgY291bnQpCiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBhcHBlbmQoJmJh
cnJpZXJzW2ldKTsKKyAgICAgICAgYXBwZW5kKGJhcnJpZXJzW2ldKTsKIH0KIAotaW5saW5lIHZv
aWQgU2xvdFZpc2l0b3I6OmFwcGVuZFZhbHVlc0hpZGRlbihXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50KQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFw
cGVuZFZhbHVlc0hpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBiYXJyaWVy
cywgc2l6ZV90IGNvdW50KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgYXBwZW5kSGlkZGVuKCZiYXJyaWVyc1tpXSk7CisgICAgICAgIGFwcGVuZEhp
ZGRlbihiYXJyaWVyc1tpXSk7CiB9CiAKIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjpyZXBvcnRF
eHRyYU1lbW9yeVZpc2l0ZWQoc2l6ZV90IHNpemUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtCbG9jay5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2luY2x1ZGUgIkNlbGxDb250YWluZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgotI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgpAQCAt
OTcsMTAgKzk2LDggQEAgdm9pZCBXZWFrQmxvY2s6OnN3ZWVwKCkKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ29udGFpbmVyVHlwZT4KLXZvaWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENv
bnRhaW5lclR5cGUmIGNvbnRhaW5lciwgSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3Ip
Cit2b2lkIFdlYWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdChDb250YWluZXJUeXBlJiBjb250YWlu
ZXIsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFNsb3RWaXNpdG9yJiB2aXNpdG9yID0g
aGVhcFJvb3RWaXNpdG9yLnZpc2l0b3IoKTsKLSAgICAKICAgICBIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbiA9IHZpc2l0b3IubWFya2luZ1ZlcnNpb24oKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2Vha0ltcGxDb3VudCgpOyArK2kpIHsKQEAgLTExMiwxOCArMTA5LDE4IEBAIHZv
aWQgV2Vha0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRhaW4KICAgICAgICAgaWYgKCF3ZWFr
SGFuZGxlT3duZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBjb25zdCBKU1Zh
bHVlJiBqc1ZhbHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSBqc1Zh
bHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsKICAgICAgICAgaWYgKGNvbnRhaW5lci5pc01hcmtl
ZENvbmN1cnJlbnRseShtYXJraW5nVmVyc2lvbiwganNWYWx1ZS5hc0NlbGwoKSkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5p
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZjb25z
dF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3Ip
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0
KCZjb25zdF9jYXN0PEpTVmFsdWUmPihqc1ZhbHVlKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChqc1ZhbHVlKTsKICAgICB9CiB9CiAKLXZvaWQgV2Vha0Jsb2NrOjp2aXNpdChIZWFw
Um9vdFZpc2l0b3ImIGhlYXBSb290VmlzaXRvcikKK3ZvaWQgV2Vha0Jsb2NrOjp2aXNpdChTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICAvLyBJZiBhIGJsb2NrIGlzIGNvbXBsZXRlbHkgZW1w
dHksIGEgdmlzaXQgd29uJ3QgaGF2ZSBhbnkgZWZmZWN0LgogICAgIGlmIChpc0VtcHR5KCkpCkBA
IC0xMzMsOSArMTMwLDkgQEAgdm9pZCBXZWFrQmxvY2s6OnZpc2l0KEhlYXBSb290VmlzaXRvciYg
aAogICAgIEFTU0VSVChtX2NvbnRhaW5lcik7CiAgICAgCiAgICAgaWYgKG1fY29udGFpbmVyLmlz
TGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIHNwZWNpYWxpemVkVmlzaXQobV9jb250YWluZXIu
bGFyZ2VBbGxvY2F0aW9uKCksIGhlYXBSb290VmlzaXRvcik7CisgICAgICAgIHNwZWNpYWxpemVk
VmlzaXQobV9jb250YWluZXIubGFyZ2VBbGxvY2F0aW9uKCksIHZpc2l0b3IpOwogICAgIGVsc2UK
LSAgICAgICAgc3BlY2lhbGl6ZWRWaXNpdChtX2NvbnRhaW5lci5tYXJrZWRCbG9jaygpLCBoZWFw
Um9vdFZpc2l0b3IpOworICAgICAgICBzcGVjaWFsaXplZFZpc2l0KG1fY29udGFpbmVyLm1hcmtl
ZEJsb2NrKCksIHZpc2l0b3IpOwogfQogCiB2b2lkIFdlYWtCbG9jazo6cmVhcCgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suaAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwotY2xhc3MgSGVh
cFJvb3RWaXNpdG9yOworY2xhc3MgU2xvdFZpc2l0b3I7CiAKIGNsYXNzIFdlYWtCbG9jayA6IHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxXZWFrQmxvY2s+IHsKIHB1YmxpYzoKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3dlZXAoKTsKICAgICBTd2VlcFJlc3VsdCB0YWtl
U3dlZXBSZXN1bHQoKTsKIAotICAgIHZvaWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAg
dm9pZCB2aXNpdChTbG90VmlzaXRvciYpOwogICAgIHZvaWQgcmVhcCgpOwogCiAgICAgdm9pZCBs
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBGcmVlQ2VsbCogYXNGcmVlQ2VsbChXZWFrSW1wbCopOwogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENvbnRhaW5lclR5cGU+Ci0gICAgdm9pZCBzcGVjaWFsaXplZFZpc2l0KENvbnRh
aW5lclR5cGUmLCBIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2b2lkIHNwZWNpYWxpemVkVmlzaXQo
Q29udGFpbmVyVHlwZSYsIFNsb3RWaXNpdG9yJik7CiAKICAgICBleHBsaWNpdCBXZWFrQmxvY2so
Q2VsbENvbnRhaW5lcik7CiAgICAgdm9pZCBmaW5hbGl6ZShXZWFrSW1wbCopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgdW5zaWdu
ZWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgdW5zaWduZWQgdmlzaXQoU2xvdFZpc2l0
b3ImKTsKICAgICB2b2lkIHJlYXAoKTsKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgdm9pZCBzaHJp
bmsoKTsKQEAgLTEwNiw3ICsxMDYsNyBAQCBpbmxpbmUgdm9pZCBXZWFrU2V0OjpsYXN0Q2hhbmNl
VG9GaW5hbGl6CiAgICAgICAgIGJsb2NrLT5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwogfQogCi1p
bmxpbmUgdW5zaWduZWQgV2Vha1NldDo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQor
aW5saW5lIHVuc2lnbmVkIFdlYWtTZXQ6OnZpc2l0KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKFdlYWtCbG9jayogYmxvY2sgPSBtX2Js
b2Nrcy5oZWFkKCk7IGJsb2NrOyBibG9jayA9IGJsb2NrLT5uZXh0KCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAJ
KHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
aGFkb3dDaGlja2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDIzICs0MDgsMjMgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjp2aXNpdENoaWxkcmVuKFNsb3RWaQogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fbG9nQ3Vyc29yIC0gbV9sb2c7IGktLTspIHsKICAgICAgICAgSlNPYmplY3QqIGNhbGxl
ZSA9IG1fbG9nW2ldLmNhbGxlZTsKICAgICAgICAgaWYgKGNhbGxlZSAhPSBQYWNrZXQ6OnRhaWxN
YXJrZXIoKSAmJiBjYWxsZWUgIT0gUGFja2V0Ojp0aHJvd01hcmtlcigpKQotICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihjYWxsZWUpOworICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGNhbGxlZSk7CiAgICAgICAgIGlmIChjYWxsZWUg
IT0gUGFja2V0Ojp0aHJvd01hcmtlcigpKQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZFJlYWRPbmx5UG9pbnRlcihtX2xvZ1tpXS5zY29wZSk7CisgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZFRydXN0ZWQobV9sb2dbaV0uc2NvcGUpOwogICAgICAgICBpZiAoY2FsbGVlID09
IFBhY2tldDo6dGFpbE1hcmtlcigpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkVmFsdWUoJm1fbG9nW2ldLnRoaXNWYWx1ZSk7Ci0gICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG1fbG9nW2ldLmNvZGVCbG9jayk7CisgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9sb2dbaV0udGhpc1ZhbHVlKTsKKyAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX2xvZ1tpXS5jb2RlQmxvY2spOwogICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fc3RhY2suc2l6ZSgpOyBp
LS07ICkgewogICAgICAgICBGcmFtZSYgZnJhbWUgPSBtX3N0YWNrW2ldOwotICAgICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkVmFsdWUoJmZyYW1lLnRoaXNWYWx1ZSk7Ci0gICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoZnJhbWUuY2FsbGVlKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGZyYW1lLnRoaXNWYWx1ZSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kVHJ1c3RlZChmcmFtZS5jYWxsZWUpOwogICAgICAgICBpZiAoZnJhbWUuc2Nv
cGUpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVy
KGZyYW1lLnNjb3BlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChmcmFtZS5z
Y29wZSk7CiAgICAgICAgIGlmIChmcmFtZS5jb2RlQmxvY2spCi0gICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGZyYW1lLmNvZGVCbG9jayk7CisgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoZnJhbWUuY29kZUJsb2NrKTsKICAgICB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRT
dHViUm91dGluZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNyBAQCBNYXJraW5nR0NBd2FyZUpJVFN0dWJSb3V0aW5lOjp+TWFya2luZ0dDCiB2b2lkIE1h
cmtpbmdHQ0F3YXJlSklUU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9jZWxscykK
LSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmVudHJ5KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
ZW50cnkpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMjksNyArMTI5LDcgQEAgYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZTo6dmlzaXRXZQogdm9pZCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6bWFya1Jl
cXVpcmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAo
YXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ2YXJp
YW50KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodmFyaWFudCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw5ICs2OCw5IEBAIHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hp
bGRyZW4KIHsKICAgICBBYnN0cmFjdE1vZHVsZVJlY29yZCogdGhpc09iamVjdCA9IGpzQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlRW52aXJvbm1lbnQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVs
ZU5hbWVzcGFjZU9iamVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGVw
ZW5kZW5jaWVzTWFwKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUVu
dmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVz
cGFjZU9iamVjdCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9kZXBlbmRlbmNp
ZXNNYXApOwogfQogCiB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFyZ0xpc3QuaCIKIAot
I2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTU0LDEzICs1
MywxMyBAQCB2b2lkIEFyZ0xpc3Q6OmdldFNsaWNlKGludCBzdGFydEluZGV4LCBBCiAgICAgcmVz
dWx0Lm1fYXJnQ291bnQgPSAgbV9hcmdDb3VudCAtIHN0YXJ0SW5kZXg7CiB9CiAKLXZvaWQgTWFy
a2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290Vmlz
aXRvciwgTGlzdFNldCYgbWFya1NldCkKK3ZvaWQgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtM
aXN0cyhTbG90VmlzaXRvciYgdmlzaXRvciwgTGlzdFNldCYgbWFya1NldCkKIHsKICAgICBMaXN0
U2V0OjppdGVyYXRvciBlbmQgPSBtYXJrU2V0LmVuZCgpOwogICAgIGZvciAoTGlzdFNldDo6aXRl
cmF0b3IgaXQgPSBtYXJrU2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciogbGlzdCA9ICppdDsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBsaXN0LT5tX3NpemU7ICsraSkKLSAgICAgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNp
dChyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPigmbGlzdC0+c2xvdEZvcihpKSkpOworICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKEpTVmFsdWU6OmRlY29kZShsaXN0LT5zbG90Rm9y
KGkpKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
TGlzdC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHNsb3RGb3IobV9zaXplIC0gMSkpOwogICAgIH0K
ICAgICAgICAgCi0gICAgc3RhdGljIHZvaWQgbWFya0xpc3RzKEhlYXBSb290VmlzaXRvciYsIExp
c3RTZXQmKTsKKyAgICBzdGF0aWMgdm9pZCBtYXJrTGlzdHMoU2xvdFZpc2l0b3ImLCBMaXN0U2V0
Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBleHBhbmRDYXBhY2l0eSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBDbG9uZWRB
cmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09i
amVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RBcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4o
SlNDZQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAg
CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+c3RvcmFnZSgpLCBzdGQ6Om1h
eCh0aGlzT2JqZWN0LT5tX2xlbmd0aCwgdGhpc09iamVjdC0+bV9taW5DYXBhY2l0eSkpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9jYWxsZWUpOwogCiAgICAgaWYgKGJvb2wqIG92ZXJyaWRlID0gdGhp
c09iamVjdC0+bV9vdmVycmlkZXMuZ2V0KCkpCiAgICAgICAgIHZpc2l0b3IubWFya0F1eGlsaWFy
eShvdmVycmlkZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FdmFsRXhl
Y3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FdmFsRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBFdmFsRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIEV2
YWxFeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7
CiAgICAgaWYgKEV2YWxDb2RlQmxvY2sqIGV2YWxDb2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX2V2
YWxDb2RlQmxvY2suZ2V0KCkpCiAgICAgICAgIGV2YWxDb2RlQmxvY2stPnZpc2l0V2Vha2x5KHZp
c2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b24uY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgRXhj
ZXB0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2UKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Zh
bHVlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ZhbHVlKTsKIH0KIAogRXhj
ZXB0aW9uOjpFeGNlcHRpb24oVk0mIHZtKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw4ICs4OSw4IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKEoKICAgICAgICAgY29kZUJsb2NrRm9yQ2FsbC0+dmlzaXRXZWFrbHko
dmlzaXRvcik7CiAgICAgaWYgKEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3JDb25zdHJ1
Y3QgPSB0aGlzT2JqZWN0LT5tX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC5nZXQoKSkKICAgICAgICAg
Y29kZUJsb2NrRm9yQ29uc3RydWN0LT52aXNpdFdlYWtseSh2aXNpdG9yKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV91bmxpbmtlZEV4ZWN1dGFibGUpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NpbmdsZXRvbkZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9zaW5nbGV0b25GdW5jdGlvbik7CiB9CiAKIEZ1bmN0aW9uRXhlY3V0
YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEZ1bmN0aW9u
UmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4oSlNDCiAKICAgICByYXJlRGF0YS0+bV9vYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICByYXJlRGF0YS0+bV9p
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnJhcmVEYXRhLT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmUp
OwogfQogCiBGdW5jdGlvblJhcmVEYXRhOjpGdW5jdGlvblJhcmVEYXRhKFZNJiB2bSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCB2b2lkIEdldHRlclNldHRl
cjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dldHRlcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0dGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9zZXR0ZXIpOwogfQogCiBHZXR0ZXJTZXR0ZXIqIEdldHRlclNldHRlcjo6d2l0aEdl
dHRlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBuZXdH
ZXR0ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGwuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAgdm9pZCBI
YXNoTWFwQnVja2V0PERhdGE+Ojp2aXNpdENoaWxkcmVuKAogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bmV4dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJldik7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3ByZXYpOwogCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRGF0YSkgJSBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSA9PSAwLCAiV2UgYXNzdW1lIHRoYXQgdGhlc2UgYXJl
IGZpbGxlZCB3aXRoIFdyaXRlQmFycmllcjxVbmtub3duPiBtZW1iZXJzIG9ubHkuIik7CiAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXMoYml0d2lzZV9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+
KCZ0aGlzT2JqZWN0LT5tX2RhdGEpLCBzaXplb2YoRGF0YSkgLyBzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KSk7CkBAIC02Nyw4ICs2Nyw4IEBAIHZvaWQgSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldD46OnZpc2l0Q2gKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
IAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2hlYWQpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3RhaWwpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1faGVhZCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWlsKTsKICAg
ICAKICAgICBpZiAoSGFzaE1hcEJ1ZmZlclR5cGUqIGJ1ZmZlciA9IHRoaXNPYmplY3QtPm1fYnVm
ZmVyLmdldCgpKQogICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkoYnVmZmVyKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luZmVycmVkVHlwZVRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJs
ZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luZmVycmVkVHlwZVRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIEluZmVycmVkVHlwZVRhYmxlOjp2aXNpdENoaWxkcmVuKEpTCiAgICAgICAgIGlmICghZW50
cnkudmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
LT5pc1JlbGV2YW50KCkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZW50cnkudmFsdWUp
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoZW50cnkudmFsdWUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBlbnRyeS52YWx1ZS5jbGVhcigpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEludGVybmFs
RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7CiAgICAgCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb3Jp
Z2luYWxOYW1lKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29yaWdpbmFsTmFt
ZSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgSW50ZXJuYWxGdW5jdGlvbjo6bmFtZSgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJldmlz
aW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBJbnRsQ29sbGF0b3I6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKgogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
Q29tcGFyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUp
OwogfQogCiBzdGF0aWMgVmVjdG9yPFN0cmluZz4gc29ydExvY2FsZURhdGEoY29uc3QgU3RyaW5n
JiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
ckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQg
SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGQKIAogICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9jb2xsYXRvclN0cnVjdHVyZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEoKIAogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9ib3VuZEZvcm1hdCk7CiB9CiAKIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRCb3Vu
ZEZvcm1hdChWTSYgdm0sIEpTQm91bmRGdW5jdGlvbiogZm9ybWF0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcjo6dmlzaQogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0
U3RydWN0dXJlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojp2aXNpdENoaWxkcmVuKEpTQwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
Rm9ybWF0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kRm9ybWF0KTsK
IH0KIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2Nh
bGUsIHNpemVfdCBrZXlJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBA
IHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNpdEMKIAogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91
bmRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw5ICsy
MDcsOSBAQCB2b2lkIEpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90YXJnZXRGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYm91bmRUaGlzKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9i
b3VuZEFyZ3MpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rp
b24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRUaGlzKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kQXJncyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYWxsZWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNw
cAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
YWxsZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgSlNDYWxsZWU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Njb3BlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw4ICsxMTcsNyBAQCBB
TFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1CiAKIGlubGluZSB2b2lkIEpT
Q2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZpc2l0b3Iudm0o
KSk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnN0cnVjdHVyZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGNlbGwtPnN0cnVjdHVyZSh2aXNpdG9yLnZtKCkpKTsK
IH0KIAogQUxXQVlTX0lOTElORSBWTSYgRXhlY1N0YXRlOjp2bSgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdl
dHRlclNldHRlckZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjp2aXNpdAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2V0dGVyU2V0dGVyKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dldHRlclNldHRlcik7CiB9CiAKIHZvaWQgSlNDdXN0
b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBDdXN0b21HZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciwgY29u
c3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOCArMjA3LDgg
QEAgdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogYwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmFyZURhdGEpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXhlY3V0YWJsZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yYXJlRGF0YSk7CiB9CiAKIENhbGxU
eXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCogY2VsbCwgQ2FsbERhdGEmIGNhbGxE
YXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU5LDExMSArMTE1
OSwxMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fZ2xvYmFsVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9nbG9iYWxUaGlzKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ds
b2JhbExleGljYWxFbnZpcm9ubWVudCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fZ2xvYmFsU2NvcGVFeHRlbnNpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dsb2JhbENhbGxlZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwQ29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9y
Q29uc3RydWN0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25hdGl2ZUVy
cm9yUHJvdG90eXBlU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9uYXRpdmVFcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZ2xvYmFsU2NvcGVFeHRlbnNpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZ2xvYmFsQ2FsbGVlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jl
Z0V4cENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9y
Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmF0aXZlRXJy
b3JQcm90b3R5cGVTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
bmF0aXZlRXJyb3JTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fZXZhbEVycm9yQ29uc3Ry
dWN0b3IudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cmFuZ2VFcnJvckNvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3JhbmdlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdGhpc09iamVjdC0+bV9yZWZlcmVuY2VFcnJv
ckNvbnN0cnVjdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fc3ludGF4RXJy
b3JDb25zdHJ1Y3Rvci52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV90eXBlRXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgdGhpc09iamVjdC0+bV9VUklFcnJv
ckNvbnN0cnVjdG9yLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX29iamVjdENvbnN0cnVjdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm9taXNlQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fb2JqZWN0Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvbWlzZUNvbnN0cnVjdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X251bGxHZXR0ZXJGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bnVsbFNldHRlckZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251
bGxHZXR0ZXJGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxs
U2V0dGVyRnVuY3Rpb24pOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcGFy
c2VJbnRGdW5jdGlvbik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1
bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24p
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yRnVuY3Rpb24pOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcGFyc2VJbnRGdW5jdGlvbik7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvVG9TdHJpbmdGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X2luaXRpYWxpemVQcm9taXNlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmV3UHJv
bWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVj
dC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFu
ZENhbGxlckdldHRlclNldHRlcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlTG9hZGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93VHlw
ZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CiAKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9hcnJheVByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZXJyb3JQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2l0ZXJhdG9yUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9n
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9hc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2FycmF5UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Vycm9y
UHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJv
dG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
clByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1bmN0
aW9uUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZUxv
YWRlclByb3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV93aXRoU2NvcGVTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2xleGljYWxFbnZpcm9ubWVudFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUpOwogICAgIHRo
aXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJl
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZWRBcmd1bWVudHNTdHJ1
Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Nsb25lZEFyZ3VtZW50
c1N0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0U3Ry
dWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3Njb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkluZGV4aW5nU2hhcGVzOyArK2kp
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1NoYXBlW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtpXSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mSW5kZXhpbmdTaGFwZXM7ICsraSkKLSAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlvbltpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBlRHVyaW5nQWxsb2NhdGlv
bltpXSk7CiAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKTsKICNpZiBKU0NfT0JKQ19BUElf
RU5BQkxFRAogICAgIHRoaXNPYmplY3QtPm1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9vYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICNlbmRpZgogICAgIHRoaXNPYmplY3QtPm1fbnVsbFByb3Rv
dHlwZU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9mdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9lcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWxs
ZWVTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25T
dHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fY3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25T
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9ib3VuZEZ1bmN0aW9u
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dldHRlclNldHRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUpOwogICAgIHRoaXNPYmplY3QtPm1fbmF0aXZlU3Rk
RnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9uYW1l
ZEZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3N5bWJvbE9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0
dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxh
clZNU3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm94eU9i
amVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGFi
bGVQcm94eU9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX21vZHVsZUxvYWRlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUp
OworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0cnVj
dHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJTdHJ1
Y3R1cmUpOwogICAgIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVm
ZmVyUHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1
ZmZlclN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2hhcmVk
QXJyYXlCdWZmZXJQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FycmF5QnVmZmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2FycmF5QnVmZmVyU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlKTsKIAogI2RlZmluZSBWSVNJ
VF9TSU1QTEVfVFlQRShDYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5j
ZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSkgXAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsgXAotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZSk7IFwKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsg
XAorICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fICMjIHByb3Blck5hbWUgIyMgU3Ry
dWN0dXJlKTsgXAogCiAgICAgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRShWSVNJVF9TSU1Q
TEVfVFlQRSkKICAgICAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fd2ViQXNzZW1ibHlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkU3RydWN0dXJlKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV93ZWJBc3NlbWJseUZ1bmN0aW9uU3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5U3RydWN0
dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dlYkFz
c2VtYmx5RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIEZPUl9FQUNIX1dFQkFTU0VNQkxZX0NPTlNU
UlVDVE9SX1RZUEUoVklTSVRfU0lNUExFX1RZUEUpCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VN
QkxZKQogCkBAIC0xMjgwLDcgKzEyODAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsCiAgICAgZm9yICh1bnNpZ25lZCBpID0gTlVNQkVSX09GX1RZUEVEX0FSUkFZ
X1RZUEVTOyBpLS07KQogICAgICAgICB0aGlzT2JqZWN0LT5sYXp5VHlwZWRBcnJheVN0cnVjdHVy
ZShpbmRleFRvVHlwZWRBcnJheVR5cGUoaSkpLnZpc2l0KHZpc2l0b3IpOwogICAgIAotICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NwZWNpZXNHZXR0ZXJTZXR0ZXIpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3BlY2llc0dldHRlclNldHRlcik7CiAgICAgdGhp
c09iamVjdC0+bV90eXBlZEFycmF5UHJvdG8udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV90eXBlZEFycmF5U3VwZXJDb25zdHJ1Y3Rvci52aXNpdCh2aXNpdG9yKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWFwSXRlcmF0b3IuY3BwCShy
ZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsOCBAQCB2b2lkIEpTTWFwSXRl
cmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAgICAgSlNNYXBJdGVyYXRvciogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU01hcEl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFw
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21hcCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBKU01hcEl0ZXJhdG9yOjpjcmVhdGVQYWlyKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUVudmlyb25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnZpc2l0Q2hpbGRyZW4oCiAgICAgSlNNb2R1bGVFbnZp
cm9ubWVudCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7
CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT52YXJpYWJsZXMoKSwgdGhpc09iamVjdC0+c3lt
Ym9sVGFibGUoKS0+c2NvcGVTaXplKCkpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tb2R1bGVSZWNvcmRTbG90KCkpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1v
ZHVsZVJlY29yZFNsb3QoKSk7CiB9CiAKIGJvb2wgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBA
QCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkCiAgICAgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKIH0KIAogYm9vbCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsCiB7CiAgICAgSlNNb2R1bGVS
ZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBC
YXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKIH0KIAogdm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRp
dmVTdGRGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBK
U05hdGl2ZVN0ZEZ1bmN0aW9uOjp2aXNpdENoaWxkcmVuKAogICAgIEpTTmF0aXZlU3RkRnVuY3Rp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOYXRpdmVTdGRGdW5jdGlvbio+KGNlbGwpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ2VsbCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9mdW5jdGlvbkNlbGwpOwogfQogCiB2b2lkIEpTTmF0aXZlU3RkRnVuY3Rpb246OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgaW50IGxl
bmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIGZ1bmN0aW9u
Q2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSw3IEBAIEFMV0FZU19JTkxJTkUg
U3RydWN0dXJlKiBKU09iamVjdDo6dmlzaXQKICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFH
RV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzSGlkZGVu
KGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yLCBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoYnV0dGVyZmx5LT5hcnJh
eVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXApCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKKyAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZChidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDExLDcgKzQxMSw3IEBAIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBKU09iamVjdDo6
dmlzaXQKICAgICAgICAgZGVmYXVsdDogLy8gQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQ
RVMKICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzSGlkZGVuKGJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fdmVjdG9yLCBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT52ZWN0b3JM
ZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9z
cGFyc2VNYXApCi0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmJ1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKKyAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZChidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZURlZmVycmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDkgKzEyMSw5IEBAIHZvaWQgSlNQcm9taXNlRGVm
ZXJyZWQ6OnZpc2l0Q2hpbGRyZW4oSlMKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9t
aXNlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZXNvbHZlKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWplY3QpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fcHJvbWlzZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9yZXNvbHZlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlamVjdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw4IEBAIHZvaWQgSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjp2aXNpdENoaWwKICAgICBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKj4oY2Vs
bCk7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jaygqdGhpc09iamVjdCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fcHJvcGVydHlOYW1lcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlOYW1lc1tp
XSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90eXBlQ2hhaW4pOwor
ICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5TmFtZXNbaV0pOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvdG90eXBlQ2hhaW4pOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsOCArODIsOCBAQCB2b2lkIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faXRlcmF0ZWRPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3Byb3BlcnR5TmFtZUVudW1lcmF0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1faXRlcmF0ZWRPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
cHJvcGVydHlOYW1lRW51bWVyYXRvcik7CiB9CiAKIGJvb2wgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUmIG91dHB1dCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCB2b2lkIEpTUHJveHk6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3RhcmdldCk7CiB9CiAKIHZvaWQgSlNQcm94eTo6c2V0VGFyZ2V0KFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCB2b2lk
IEpTU2NvcGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsCiAgICAgSlNTY29wZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Njb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmV4dCk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9uZXh0KTsKIH0KIAogLy8gUmV0dXJu
cyB0cnVlIGlmIHdlIGZvdW5kIGVub3VnaCBpbmZvcm1hdGlvbiB0byB0ZXJtaW5hdGUgb3B0aW1p
emF0aW9uLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGkKICAgICAvLyByZWxhdGl2ZWx5IGVhc2lseS4KICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKHRoaXNPYmplY3QtPm1fbG9jayk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gdGhpc09iamVjdC0+bV92YXJpYWJsZXMuc2l6ZSgpOyBpLS07KQotICAgICAgICBzbG90
VmlzaXRvci5hcHBlbmRIaWRkZW4oJnRoaXNPYmplY3QtPm1fdmFyaWFibGVzW2ldKTsKKyAgICAg
ICAgc2xvdFZpc2l0b3IuYXBwZW5kSGlkZGVuKHRoaXNPYmplY3QtPm1fdmFyaWFibGVzW2ldKTsK
IH0KIAogdm9pZCBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0OjpoZWFwU25hcHNob3QoSlNDZWxs
KiBjZWxsLCBIZWFwU25hcHNob3RCdWlsZGVyJiBidWlsZGVyKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHZvaWQgSlNTZXRJdGVyYXRvcjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwKICAgICBKU1NldEl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
U2V0SXRlcmF0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zZXQpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fc2V0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXIpOwog
fQogCiBKU1ZhbHVlIEpTU2V0SXRlcmF0b3I6OmNyZWF0ZVBhaXIoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQs
MTEgKzEwNCwxMSBAQCB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiB2
b2lkIEpTUm9wZVN0cmluZzo6dmlzaXRGaWJlcnMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgaWYgKGlzU3Vic3RyaW5nKCkpIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnN1YnN0cmlu
Z0Jhc2UoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHN1YnN0cmluZ0Jhc2UoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzX21heEludGVy
bmFsUm9wZUxlbmd0aCAmJiBmaWJlcihpKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
ZmliZXIoaSkpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChmaWJlcihpKSk7CiB9CiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhMZW5ndGhGb3JPblN0YWNrUmVzb2x2ZSA9IDIwNDg7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxl
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQx
LDcgQEAgdm9pZCBKU1N5bWJvbFRhYmxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKAogICAgIEpTU3lt
Ym9sVGFibGVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNTeW1ib2xUYWJsZU9iamVjdCo+
KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlKTsKIH0KIAogYm9vbCBKU1N5bWJvbFRhYmxl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV2Vha01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNXZWFrTWFwLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNXZWFrTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
NyBAQCB2b2lkIEpTV2Vha01hcDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlCiB7CiAgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKICAgICBKU1dlYWtNYXAqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNXZWFrTWFwKj4oY2VsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmot
Pm1fd2Vha01hcERhdGEpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmotPm1fd2Vha01hcERh
dGEpOwogfQogCiBTdHJpbmcgSlNXZWFrTWFwOjp0b1N0cmluZ05hbWUoY29uc3QgSlNPYmplY3Qq
LCBFeGVjU3RhdGUqKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFr
U2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dl
YWtTZXQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1dlYWtTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQg
SlNXZWFrU2V0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2UKIHsKICAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKGNlbGwsIHZpc2l0b3IpOwogICAgIEpTV2Vha1NldCogdGhpc09iaiA9IGpzQ2FzdDxK
U1dlYWtTZXQqPihjZWxsKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iai0+bV93ZWFrTWFw
RGF0YSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iai0+bV93ZWFrTWFwRGF0YSk7CiB9CiAK
IFN0cmluZyBKU1dlYWtTZXQ6OnRvU3RyaW5nTmFtZShjb25zdCBKU0M6OkpTT2JqZWN0KiwgRXhl
Y1N0YXRlKikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2l0aFNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhT
Y29wZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTV2l0aFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lk
IEpTV2l0aFNjb3BlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogCiAgICAgSlNXaXRoU2NvcGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNXaXRoU2NvcGUqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9vYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0KTsKIH0K
IAogU3RydWN0dXJlKiBKU1dpdGhTY29wZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXcmFwcGVyT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCB2b2lkIEpTV3JhcHBlck9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgSlNXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTV3JhcHBlck9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9p
bnRlcm5hbFZhbHVlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2ludGVybmFs
VmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xhenlDbGFzc1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eUNsYXNzU3RydWN0dXJlLmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eUNsYXNzU3RydWN0
dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIExhenlDbGFzc1N0
cnVjdHVyZTo6SW5pdGlhbGl6ZXI6OnNlCiB2b2lkIExhenlDbGFzc1N0cnVjdHVyZTo6dmlzaXQo
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgbV9zdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fY29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5k
KG1fY29uc3RydWN0b3IpOwogfQogCiB2b2lkIExhenlDbGFzc1N0cnVjdHVyZTo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TGF6eVByb3BlcnR5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMuaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGF6eVByb3BlcnR5SW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlw
ZW5hbWUgRWwKIHZvaWQgTGF6eVByb3BlcnR5PE93bmVyVHlwZSwgRWxlbWVudFR5cGU+Ojp2aXNp
dChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBpZiAobV9wb2ludGVyICYmICEobV9wb2lu
dGVyICYgbGF6eVRhZykpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25s
eVBvaW50ZXIoYml0d2lzZV9jYXN0PEVsZW1lbnRUeXBlKj4obV9wb2ludGVyKSk7CisgICAgICAg
IHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChiaXR3aXNlX2Nhc3Q8RWxlbWVudFR5cGUqPihtX3BvaW50
ZXIpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBFbGVtZW50
VHlwZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEJhc2UuY3BwCShy
ZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCB2b2lkIE1hcEJhc2U8SGFzaE1h
cEJ1Y2tldFR5cGU+Ojp2aXNpdENoCiB7CiAgICAgTWFwQmFzZSogdGhpc09iamVjdCA9IHN0YXRp
Y19jYXN0PE1hcEJhc2UqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcCk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tYXApOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSGFzaE1hcEJ1Y2tldFR5cGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDggKzkxLDggQEAgdm9pZCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3VubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKICAgICBpZiAoTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogbW9kdWxlUHJvZ3JhbUNvZGVCbG9jayA9IHRoaXNPYmplY3QtPm1fbW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5nZXQoKSkKICAgICAgICAgbW9kdWxlUHJvZ3JhbUNvZGVCbG9jay0+
dmlzaXRXZWFrbHkodmlzaXRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcgogICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3Iq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRlcnByZXRlcjo6Y29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3Jh
bUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
bihKUwogICAgIFByb2dyYW1FeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb2dyYW1F
eGVjdXRhYmxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIFNjcmlwdEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Vu
bGlua2VkUHJvZ3JhbUNvZGVCbG9jayk7CiAgICAgaWYgKFByb2dyYW1Db2RlQmxvY2sqIHByb2dy
YW1Db2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX3Byb2dyYW1Db2RlQmxvY2suZ2V0KCkpCiAgICAg
ICAgIHByb2dyYW1Db2RlQmxvY2stPnZpc2l0V2Vha2x5KHZpc2l0b3IpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTU3LDggKzExNTcsOCBAQCB2b2lkIFByb3h5T2JqZWN0Ojp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90YXJnZXQpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2hhbmRsZXIpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2hhbmRsZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIFByb3h5UmV2b2tlOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm94eSk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9wcm94eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1
bHQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgUmVnRXhwQ2FjaGVkUmVzdWx0Ojp2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYXBwZW5kKCZtX2xhc3RJ
bnB1dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fbGFzdFJlZ0V4cCk7CisgICAgdmlzaXRvci5h
cHBlbmQobV9sYXN0SW5wdXQpOworICAgIHZpc2l0b3IuYXBwZW5kKG1fbGFzdFJlZ0V4cCk7CiAg
ICAgaWYgKG1fcmVpZmllZCkgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkSW5w
dXQpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkUmVzdWx0KTsKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZExlZnRDb250ZXh0KTsKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fcmVpZmllZFJpZ2h0Q29udGV4dCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1f
cmVpZmllZElucHV0KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9yZWlmaWVkUmVzdWx0KTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9yZWlmaWVkTGVmdENvbnRleHQpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZChtX3JlaWZpZWRSaWdodENvbnRleHQpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgUmVnRXhwT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCoKICAgICBSZWdFeHBPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sYXN0SW5kZXgpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2xhc3RJbmRleCk7CiB9CiAKIGJvb2wgUmVnRXhwT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OnZp
c2l0Q2hpbGRyZW4oSlNDZQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogICAgIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2VtcHR5UmVnRXhwKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2VtcHR5UmVnRXhwKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTE5LDcgKzUxOSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6dmlzaXQoU2xvdFZpc2l0b3IK
IHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7CiAgICAgZm9yIChKU0Nl
bGwqIGNlbGwgOiBtX2xpdmVDZWxsUG9pbnRlcnMpCi0gICAgICAgIHNsb3RWaXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGNlbGwpOworICAgICAgICBzbG90VmlzaXRvci5h
cHBlbmRUcnVzdGVkKGNlbGwpOwogfQogCiB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnNodXRkb3du
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDkgKzEwMyw5
IEBAIHZvaWQgU2NvcGVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2UKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2NhbGxlZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGFi
bGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zY29w
ZSk7CiAgICAgCiAgICAgaWYgKHRoaXNPYmplY3QtPm1fdG90YWxMZW5ndGggPiB0aGlzT2JqZWN0
LT5tX3RhYmxlLT5sZW5ndGgoKSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxT
dHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgogCi0jaW5jbHVkZSAiSGVhcFJvb3RW
aXNpdG9yLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTkzLDE1ICs5MiwxNSBAQCB2b2lkIFNt
YWxsU3RyaW5nczo6aW5pdGlhbGl6ZUNvbW1vblN0cmluCiB2b2lkIFNtYWxsU3RyaW5nczo6dmlz
aXRTdHJvbmdSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIG1fbmVlZHNU
b0JlVmlzaXRlZCA9IGZhbHNlOwotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVy
KCZtX2VtcHR5U3RyaW5nKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9lbXB0eVN0cmlu
Zyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJp
bmc7ICsraSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIobV9zaW5n
bGVDaGFyYWN0ZXJTdHJpbmdzICsgaSk7Ci0jZGVmaW5lIEpTQ19DT01NT05fU1RSSU5HU19BVFRS
SUJVVEVfVklTSVQobmFtZSkgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fIyNu
YW1lKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nc1tpXSk7CisjZGVmaW5lIEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfVklTSVQobmFt
ZSkgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fIyNuYW1lKTsKICAgICBKU0NfQ09NTU9OX1NUUklO
R1NfRUFDSF9OQU1FKEpTQ19DT01NT05fU1RSSU5HU19BVFRSSUJVVEVfVklTSVQpCiAjdW5kZWYg
SlNDX0NPTU1PTl9TVFJJTkdTX0FUVFJJQlVURV9WSVNJVAotICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWRQb2ludGVyKCZtX29iamVjdFN0cmluZ1N0YXJ0KTsKLSAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUG9pbnRlcigmbV9udWxsT2JqZWN0U3RyaW5nKTsKLSAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV91bmRlZmluZWRPYmplY3RTdHJpbmcpOworICAgIHZp
c2l0b3IuYXBwZW5kVHJ1c3RlZChtX29iamVjdFN0cmluZ1N0YXJ0KTsKKyAgICB2aXNpdG9yLmFw
cGVuZFRydXN0ZWQobV9udWxsT2JqZWN0U3RyaW5nKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRydXN0
ZWQobV91bmRlZmluZWRPYmplY3RTdHJpbmcpOwogfQogCiBTbWFsbFN0cmluZ3M6On5TbWFsbFN0
cmluZ3MoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBTcGFyc2VBcnJheVZhbHVlTWFwOjp2aXNpdENoaWxk
cmVuKAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKnRoaXNNYXApOwogICAgIGl0ZXJhdG9y
IGVuZCA9IHRoaXNNYXAtPm1fbWFwLmVuZCgpOwogICAgIGZvciAoaXRlcmF0b3IgaXQgPSB0aGlz
TWFwLT5tX21hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpdC0+dmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChpdC0+dmFsdWUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2MCwyNSArMTA2
MCwyNSBAQCB2b2lkIFN0cnVjdHVyZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlCiAgICAgCiAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih0aGlzT2JqZWN0LT5tX2xvY2spOwogICAgIAot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dsb2JhbE9iamVjdCk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpOwogICAgIGlmICghdGhpc09i
amVjdC0+aXNPYmplY3QoKSkKICAgICAgICAgdGhpc09iamVjdC0+bV9jYWNoZWRQcm90b3R5cGVD
aGFpbi5jbGVhcigpOwogICAgIGVsc2UgewotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9wcm90b3R5cGUpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9jYWNoZWRQcm90b3R5cGVDaGFpbik7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fcHJvdG90eXBlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9j
YWNoZWRQcm90b3R5cGVDaGFpbik7CiAgICAgfQotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3ByZXZpb3VzT3JSYXJlRGF0YSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9wcmV2aW91c09yUmFyZURhdGEpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzUGlubmVk
UHJvcGVydHlUYWJsZSgpIHx8IHRoaXNPYmplY3QtPmlzQWRkaW5nUHJvcGVydHlGb3JUcmFuc2l0
aW9uKCkpIHsKICAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gaW50ZXJsZWF2ZSBpbiBwaW4oKSwg
aW4gd2hpY2ggY2FzZSBpdCBtYXkgc2VlIGEgbnVsbCBwcm9wZXJ0eSB0YWJsZS4KICAgICAgICAg
Ly8gVGhhdCdzIGZpbmUsIGJlY2F1c2UgdGhlbiB0aGUgYmFycmllciB3aWxsIGZpcmUgYW5kIHdl
IHdpbGwgc2NhbiB0aGlzIGFnYWluLgotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKTsKICAgICB9IGVsc2UgaWYgKHZpc2l0b3IuaXNC
dWlsZGluZ0hlYXBTbmFwc2hvdCgpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9wcm9wZXJ0eVRhYmxlVW5zYWZlKTsKICAgICBlbHNlIGlmICh0aGlzT2JqZWN0LT5t
X3Byb3BlcnR5VGFibGVVbnNhZmUpCiAgICAgICAgIHRoaXNPYmplY3QtPm1fcHJvcGVydHlUYWJs
ZVVuc2FmZS5jbGVhcigpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW5m
ZXJyZWRUeXBlVGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5mZXJy
ZWRUeXBlVGFibGUpOwogfQogCiBib29sIFN0cnVjdHVyZTo6aXNDaGVhcER1cmluZ0dDKCkKQEAg
LTEwOTYsNyArMTA5Niw3IEBAIGJvb2wgU3RydWN0dXJlOjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYKICAgICBpZiAoIWlzQ2hlYXBEdXJpbmdHQygpKQogICAgICAgICByZXR1cm4gSGVhcDo6aXNN
YXJrZWRDb25jdXJyZW50bHkodGhpcyk7CiAgICAgCi0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5UG9pbnRlcih0aGlzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQodGhp
cyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFN0cnVjdHVyZUNoYWluOjp2aXNpdENoaWxkcmVu
KEpTQ2VsCiAgICAgaWYgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiB2ZWN0b3IgPSB0aGlzT2Jq
ZWN0LT5tX3ZlY3Rvci5nZXQoKSkgewogICAgICAgICBzaXplX3QgaSA9IDA7CiAgICAgICAgIHdo
aWxlICh2ZWN0b3JbaV0pCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdmVjdG9yW2krK10p
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQodmVjdG9yW2krK10pOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5
IEBAIHZvaWQgU3RydWN0dXJlUmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBKU0NlbGw6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fcHJldmlvdXMpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X29iamVjdFRvU3RyaW5nVmFsdWUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2NhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcHJldmlvdXMpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2Jq
ZWN0VG9TdHJpbmdWYWx1ZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jYWNo
ZWRQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKTsKIH0KIAogSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9y
KiBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y2FjaGVkUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMSArMTAxLDExIEBAIHZvaWQgU3lt
Ym9sVGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiAKIHsKICAgICBTeW1ib2xUYWJsZSogdGhp
c1N5bWJvbFRhYmxlID0ganNDYXN0PFN5bWJvbFRhYmxlKj4odGhpc0NlbGwpOwogICAgIAotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzU3ltYm9sVGFibGUtPm1fYXJndW1lbnRzKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc1N5bWJvbFRhYmxlLT5tX3NpbmdsZXRvblNjb3BlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzU3ltYm9sVGFibGUtPm1fYXJndW1lbnRzKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzU3ltYm9sVGFibGUtPm1fc2luZ2xldG9uU2NvcGUpOwogICAgIAogICAgIGlmICh0
aGlzU3ltYm9sVGFibGUtPm1fcmFyZURhdGEpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
U3ltYm9sVGFibGUtPm1fcmFyZURhdGEtPm1fY29kZUJsb2NrKTsKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQodGhpc1N5bWJvbFRhYmxlLT5tX3JhcmVEYXRhLT5tX2NvZGVCbG9jayk7CiAgICAgCiAg
ICAgLy8gU2F2ZSBzb21lIG1lbW9yeS4gVGhpcyBpcyBPKG4pIHRvIHJlYnVpbGQgYW5kIHdlIGRv
IHNvIG9uIHRoZSBmbHkuCiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih0aGlzU3ltYm9s
VGFibGUtPm1fbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
UHJvZmlsZXJMb2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVQcm9maWxlckxvZy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCwxMCArMTA0LDEwIEBAIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjpwcm9jZXNzTG9nRW50cmll
cygKIHZvaWQgVHlwZVByb2ZpbGVyTG9nOjp2aXNpdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBmb3IgKExvZ0VudHJ5KiBlbnRyeSA9IG1fbG9nU3RhcnRQdHI7IGVudHJ5ICE9IG1fY3Vy
cmVudExvZ0VudHJ5UHRyOyArK2VudHJ5KSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWRSZWFkT25seVZhbHVlKGVudHJ5LT52YWx1ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChlbnRyeS0+dmFsdWUpOwogICAgICAgICBpZiAoU3RydWN0dXJlSUQgaWQgPSBlbnRy
eS0+c3RydWN0dXJlSUQpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmlz
aXRvci5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoaWQpOyAKLSAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAg
fQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRh
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBX
ZWFrTWFwRGF0YTo6RGVhZEtleUNsZWFuZXI6OnZpc2l0VwogICAgICAgICBpZiAoIUhlYXA6Omlz
TWFya2VkKGl0LT5rZXkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIG1fbGl2ZUtl
eUNvdW50Kys7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpdC0+dmFsdWUpOworICAgICAgICB2
aXNpdG9yLmFwcGVuZChpdC0+dmFsdWUpOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChtX2xp
dmVLZXlDb3VudCA8PSBtX3RhcmdldC0+bV9tYXAuc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNl
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseUluc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDEz
IEBAIHZvaWQgSlNXZWJBc3NlbWJseUluc3RhbmNlOjp2aXNpdENoaWxkcmUKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX21vZHVsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlTmFtZXNwYWNlT2JqZWN0KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
ZW1vcnkpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3RhYmxlKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX21vZHVsZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fbWVtb3J5KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3RhYmxlKTsKICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0
LT5tb2R1bGUoKS0+bW9kdWxlSW5mb3JtYXRpb24oKS5nbG9iYWxzLnNpemUoKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNPYmplY3QtPm1fbnVtSW1wb3J0RnVuY3Rpb25zOyAr
K2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkp
KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoKnRoaXNPYmplY3QtPmltcG9ydEZ1bmN0aW9uKGkp
KTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6c19pbmZvID0g
eyAiV2ViQXNzZW1ibHkuSW5zdGFuY2UiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSkgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TWVtb3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCB2b2lkIEpTV2ViQXNz
ZW1ibHlNZW1vcnk6OnZpc2l0Q2hpbGRyZW4oCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9idWZmZXJX
cmFwcGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2J1ZmZlcldyYXBwZXIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCShyZXZpc2lvbiAyMDk4
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDkgQEAgdm9pZCBKU1dlYkFzc2VtYmx5
TW9kdWxlOjp2aXNpdENoaWxkcmVuKAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXhwb3J0U3ltYm9s
VGFibGUpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX2NhbGxl
ZUNvdW50ICogMjsgaSsrKSB7Ci0gICAgICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5Q2Fs
bGVlPiogY2FsbGVlID0gJnRoaXNPYmplY3QtPmNhbGxlZXMoKVtpXTsKLSAgICAgICAgdmlzaXRv
ci5hcHBlbmQoY2FsbGVlKTsKLSAgICB9CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+
bV9leHBvcnRTeW1ib2xUYWJsZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPm1fY2FsbGVlQ291bnQgKiAyOyBpKyspCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPmNhbGxlZXMoKVtpXSk7CiAKICAgICB2aXNpdG9yLmFkZFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIoJnRoaXNPYmplY3QtPm1fdW5jb25kaXRpb25hbEZpbmFsaXplcik7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlU
YWJsZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcg
QEAgdm9pZCBKU1dlYkFzc2VtYmx5VGFibGU6OnZpc2l0Q2hpbGRyZW4oSgogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdGhpc09iamVjdC0+bV9zaXplOyArK2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2pzRnVuY3Rpb25zLmdldCgpW2ldKTsKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9qc0Z1bmN0aW9ucy5nZXQoKVtpXSk7CiB9CiAKIGJvb2wgSlNX
ZWJBc3NlbWJseVRhYmxlOjpncm93KHVpbnQzMl90IG5ld1NpemUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw5ICsxNjUsOSBAQCB2b2lk
IFdlYkFzc2VtYmx5RnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oCiAgICAgV2ViQXNzZW1ibHlGdW5j
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0aW9uKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1faW5zdGFuY2UpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2pzRW50cnlwb2ludCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
d2FzbUVudHJ5cG9pbnQpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fanNFbnRyeXBvaW50KTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3dhc21FbnRyeXBvaW50KTsKIH0KIAogdm9p
ZCBXZWJBc3NlbWJseUZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBK
U1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlLCBKU1dlYkFzc2VtYmx5Q2FsbGVlKiBqc0Vu
dHJ5cG9pbnQsIEpTV2ViQXNzZW1ibHlDYWxsZWUqIHdhc21FbnRyeXBvaW50LCBXYXNtOjpTaWdu
YXR1cmUqIHNpZ25hdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsOCArNzgsOCBAQCB2b2lkIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkCiB7CiAgICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2luc3RhbmNlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3N0YXJ0RnVu
Y3Rpb24pOwogfQogCiB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0
ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNi0xMi0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2YgSGVhcFJvb3RWaXNpdG9yIGFuZCBtYWtl
IFNsb3RWaXNpdG9yIGxlc3MgcGFpbmZ1bCB0byB1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBiZWhh
dmlvci4KKyAgICAgICAgCisgICAgICAgIFRoaXMgdXBkYXRlcyBXZWJDb3JlIGNvZGUgdG8gbmV3
IEpTQyBBUEkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVk
UHJvbWlzZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDE2
LTEyLTE1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdh
eXMgY2xlYXIgUmVuZGVyTGF5ZXIgYmFja2luZyBzdG9yZXMgd2hlbiBnb2luZyBpbnRvIHBhZ2Ug
Y2FjaGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMTMsNyArMTAxMyw3IEBAIHZvaWQgRE9N
Q29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0g
anNDYXN0PERPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1faW5pdGlhbGl6ZUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2luaXRpYWxpemVGdW5jdGlvbik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSwxMCArMTkxLDEwIEBAIHZvaWQgSlNE
T01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayh0aGlzT2JqZWN0LT5tX2djTG9jayk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1
dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmplY3QtPnN0cnVjdHVyZXMobG9ja2VyKS52YWx1ZXMoKSkK
LSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZzdHJ1Y3R1cmUpOworICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoc3RydWN0dXJlKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byYgY29u
c3RydWN0b3IgOiB0aGlzT2JqZWN0LT5jb25zdHJ1Y3RvcnMobG9ja2VyKS52YWx1ZXMoKSkKLSAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZjb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZChjb25zdHJ1Y3Rvcik7CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8mIGRl
ZmVycmVkUHJvbWlzZSA6IHRoaXNPYmplY3QtPmRlZmVycmVkUHJvbWlzZXMobG9ja2VyKSkKICAg
ICAgICAgICAgIGRlZmVycmVkUHJvbWlzZS0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdXNwZW5kZWQo
KSB7IHJldHVybiAhbV9kZWZlcnJlZCB8fCAhY2FuSW52b2tlQ2FsbGJhY2soKTsgfSAvLyBUaGUg
d3JhcHBlciB3b3JsZCBoYXMgZ29uZSBhd2F5IG9yIGFjdGl2ZSBET00gb2JqZWN0cyBoYXZlIGJl
ZW4gc3VzcGVuZGVkLgogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJl
dHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQogCi0gICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKSB7IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRXZWFr
KCZtX2RlZmVycmVkKTsgfQorICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoSlNDOjpTbG90VmlzaXRv
ciYgdmlzaXRvcikgeyB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9kZWZlcnJlZCk7IH0KIAogcHJp
dmF0ZToKICAgICBEZWZlcnJlZFByb21pc2UoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJv
bWlzZURlZmVycmVkJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZTo6dmlzaXRDaGlsZAogICAgIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcHJveHkpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHkpOwogfQog
CiB2b2lkIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzk3Nyw3ICszOTc3LDcg
QEAgRU5ECiAgICAgICAgICAgICBmb3JlYWNoIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7
CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOwogICAgICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tXyIgLiAkYXR0cmlidXRlLT5uYW1lIC4gIik7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICIpO1xuIik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297229</attachid>
            <date>2016-12-15 15:08:23 -0800</date>
            <delta_ts>2016-12-15 15:17:51 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>136439</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MCBA
QAorMjAxNi0xMi0xNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEdldCByaWQgb2YgSGVhcFJvb3RWaXNpdG9yIGFuZCBtYWtlIFNsb3RWaXNpdG9yIGxlc3MgcGFp
bmZ1bCB0byB1c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgUHJldmlvdXNseSB3ZSBoYWQgdHdvIHdheXMgb2YgYWRkaW5nIGEgcmF3IHBv
aW50ZXIgdG8gdGhlIEdDJ3MgbWFyayBzdGFjazoKKyAgICAgICAgCisgICAgICAgIC0gU2xvdFZp
c2l0b3I6OmFwcGVuZFVuYmFycmllcmVkWFlaKCkgbWV0aG9kcworICAgICAgICAtIEhlYXBSb290
VmlzaXRvcjo6dmlzaXQoKSBtZXRob2RzCisgICAgICAgIAorICAgICAgICBIZWFwUm9vdFZpc2l0
b3IgZXhpc3RlZCBvbmx5IHRvIHByZXZlbnQgeW91IGZyb20gY2FsbGluZyBpdHMgbm9uLVdyaXRl
QmFycmllcjw+IG1ldGhvZHMKKyAgICAgICAgdW5sZXNzIHlvdSBoYWQgcGVybWlzc2lvbi4gQnV0
IFNsb3RWaXNpdG9yIHdvdWxkIGxldCB5b3UgZG8gaXQgYW55d2F5LCBiZWNhdXNlIHRoYXQgd2Fz
CisgICAgICAgIGEgbG90IG1vcmUgcHJhY3RpY2FsLgorICAgICAgICAKKyAgICAgICAgSSB0aGlu
ayB0aGF0IHdlIHNob3VsZCBqdXN0IGhhdmUgb25lIHdheSB0byBkbyBpdC4gVGhpcyByZW1vdmVz
IEhlYXBSb290VmlzaXRvci4gSXQKKyAgICAgICAgYWxzbyByZW5hbWVzIGFwcGVuZFVuYmFycmll
cmVkWFlaIHRvIGFwcGVuZFRydXN0ZWQsIGFuZCBpdCByZW1vdmVzIHRoZSB1c2Ugb2YgZXh0cmEK
KyAgICAgICAgaW5kaXJlY3Rpb24gKHNvIHlvdSBub3cgcGFzcyBjb25zdCBXcml0ZUJhcnJpZXI8
PiYgaW5zdGVhZCBvZiBXcml0ZUJhcnJpZXI8PiopLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0
ZVByb3BlcnR5TWFwOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRXZWFrbHkpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVz
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRPU1JFeGl0VGFyZ2V0cyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkRp
cmVjdEV2YWxDb2RlQ2FjaGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Q
b2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJTY29w
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZFRyYW5zaXRpb246OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6dmlzaXRDaGlsZHJlbik6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBs
YW46Om1hcmtDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVu
ZXNzQW5kVmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9IYW5kbGVTZXQuY3BwOgorICAg
ICAgICAoSlNDOjpIYW5kbGVTZXQ6OnZpc2l0U3Ryb25nSGFuZGxlcyk6CisgICAgICAgICogaGVh
cC9IYW5kbGVTZXQuaDoKKyAgICAgICAgKiBoZWFwL0hhbmRsZVN0YWNrLmNwcDoKKyAgICAgICAg
KEpTQzo6SGFuZGxlU3RhY2s6OnZpc2l0KToKKyAgICAgICAgKiBoZWFwL0hhbmRsZVN0YWNrLmg6
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1RvRml4
cG9pbnQpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcFJvb3RW
aXNpdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogaGVhcC9MYXJnZUFsbG9jYXRpb24uY3BwOgor
ICAgICAgICAoSlNDOjpMYXJnZUFsbG9jYXRpb246OnZpc2l0V2Vha1NldCk6CisgICAgICAgICog
aGVhcC9MYXJnZUFsbG9jYXRpb24uaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnZpc2l0V2Vha1NldCk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjp2aXNp
dFdlYWtTZXRzKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogaGVh
cC9TbG90VmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRUcnVz
dGVkKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9TbG90
VmlzaXRvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0
ZWQpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6
U2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlbik6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjph
cHBlbmRWYWx1ZXMpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kVmFsdWVzSGlk
ZGVuKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUG9pbnRl
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJl
ZFJlYWRPbmx5UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjph
cHBlbmRVbmJhcnJpZXJlZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0
b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OlNsb3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFdlYWspOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpzcGVjaWFs
aXplZFZpc2l0KToKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjp2aXNpdCk6CisgICAgICAgICog
aGVhcC9XZWFrQmxvY2suaDoKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoKKyAgICAgICAgKEpT
Qzo6V2Vha1NldDo6dmlzaXQpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4u
Y3BwOgorICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBqaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKToKKyAg
ICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlND
OjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFs
KToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoV1RGOjpFbGVtZW50Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKFdURjo6SW1wdXJlR2V0dGVyOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKFdURjo6U2ltcGxlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1l
L0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVS
ZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKiBydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFy
Z3VtZW50czo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9FdmFsRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkV4Y2VwdGlvbjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uUmFyZURhdGE6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0
dGVyLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmNwcDoKKyAgICAgICAgKEpTQzo6SGFzaE1hcEJ1
Y2tldDxEYXRhPjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsPEhh
c2hNYXBCdWNrZXQ+Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0luZmVycmVk
VHlwZVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SW5mZXJyZWRUeXBlVGFibGU6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkludGVybmFsRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bERhdGVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHA6CisgICAg
ICAgIChKU0M6OkpTQm91bmRGdW5jdGlvbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9KU0NhbGxlZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ2FsbGVlOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0
aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpTTWFwSXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9kdWxlRW52aXJv
bm1lbnQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU05hdGl2ZVN0ZEZ1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0QnV0dGVyZmx5SW1wbCk6CisgICAgICAgICog
cnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZURl
ZmVycmVkOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94
eTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTY29wZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU1NldEl0ZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTZXRJdGVyYXRvcjo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTUm9wZVN0cmlu
Zzo6dmlzaXRGaWJlcnMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTU3ltYm9sVGFibGVPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNXZWFrTWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWFrTWFw
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTV2Vha1NldC5jcHA6CisgICAg
ICAgIChKU0M6OkpTV2Vha1NldDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9K
U1dpdGhTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTV2l0aFNjb3BlOjp2aXNpdENoaWxkcmVu
KToKKyAgICAgICAgKiBydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9MYXp5
Q2xhc3NTdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpMYXp5Q2xhc3NTdHJ1Y3R1cmU6OnZp
c2l0KToKKyAgICAgICAgKiBydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6RWxlbWVudFR5cGU+Ojp2aXNpdCk6CisgICAgICAgICogcnVudGltZS9NYXBCYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFwQmFzZTxIYXNoTWFwQnVja2V0VHlwZT46OnZpc2l0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxl
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvUHJveHlSZXZva2UuY3BwOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOgorICAgICAg
ICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxl
cjo6dmlzaXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6U2NvcGVkQXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL1NtYWxsU3RyaW5ncy5jcHA6CisgICAgICAgIChKU0M6OlNtYWxsU3RyaW5nczo6dmlzaXRT
dHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKiBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwOgorICAgICAgICAoSlNDOjpTcGFyc2VBcnJheVZhbHVlTWFwOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6bWFya0lmQ2hlYXAp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVSYXJlRGF0YS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVJhcmVEYXRhOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjp2aXNpdCk6Cisg
ICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5jcHA6CisgICAgICAgIChKU0M6OldlYWtNYXBE
YXRhOjpEZWFkS2V5Q2xlYW5lcjo6dmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHdhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4p
OgorCiAyMDE2LTEyLTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWJBc3NlbWJseSBBUEk6IGltcHJvdmUgZGF0YSBzZWN0aW9uIGVycm9ycywgaW5pdGlh
bGl6ZSBhZnRlciBFbGVtZW50CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEVsZW1lbnQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8RWxlbWVudCo+KGNlbGwpOwogICAgICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Jv
b3QpOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Jvb3QpOwogICAgIH0K
IAogICAgIHN0YXRpYyBFbGVtZW50SGFuZGxlT3duZXIqIGhhbmRsZU93bmVyKCk7CkBAIC0zMzAs
NyArMzMwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKICAgICAgICAgSW1wdXJlR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEltcHVyZUdldHRlcio+KGNlbGwpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9kZWxlZ2F0ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZGVs
ZWdhdGUpOwogICAgIH0KIAogICAgIHZvaWQgc2V0RGVsZWdhdGUoVk0mIHZtLCBKU09iamVjdCog
ZGVsZWdhdGUpCkBAIC01MjEsNyArNTIxLDcgQEAgcHVibGljOgogICAgICAgICBTaW1wbGVPYmpl
Y3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U2ltcGxlT2JqZWN0Kj4oY2VsbCk7CiAgICAgICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICAgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faGlkZGVuVmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tX2hpZGRlblZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDgsNyArMTA4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgICAgIGZvciAoUHJpdmF0ZVByb3BlcnR5TWFwOjppdGVyYXRvciBwdHIgPSBtX3Byb3BlcnR5
TWFwLmJlZ2luKCk7IHB0ciAhPSBtX3Byb3BlcnR5TWFwLmVuZCgpOyArK3B0cikgewogICAgICAg
ICAgICAgICAgIGlmIChwdHItPnZhbHVlKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmcHRyLT52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHB0
ci0+dmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTIwMiw3ICsxMjAyLDYgQEAKIAkJMTRFOUQxN0IxMDdFQzQ2OTAwNEREQTIxIC8qIEpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0dsb2JhbE9iamVj
dEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCTE0RjcyNTY1MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFr
SGFuZGxlT3duZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVPd25lci5jcHAgKi87
IH07CiAJCTE0RjcyNTY2MTRFRTI2NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjcyNTY0MTRFRTI2
NUUwMEIxNjUyQiAvKiBXZWFrSGFuZGxlT3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcgLyogSGVh
cFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUEyOEQ0QTgxNzdC
NzFDODAwMDdGQTNDIC8qIEpTU3RyaW5nUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyOEQ0QTcxNzdCNzFDODAwMDdGQTNDIC8qIEpT
U3RyaW5nUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBODgyNkIxNjUzQzRDRDFBNjQyOTgzQiAvKiBUZW1wbGF0ZVJlZ2lzdHJ5
S2V5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOEI0N0YyMzQzNjZDNEI3MkFDODUyQTdFIC8qIFRlbXBsYXRlUmVnaXN0cnlLZXlUYWJsZS5j
cHAgKi87IH07CiAJCTFBQ0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIw
MEM5QkIxRSAvKiBXZWFrLmNwcCAqLzsgfTsKQEAgLTM1NzksNyArMzU3OCw2IEBACiAJCTE0RjI1
MjU2MEQwOEREOEQwMDRFQ0ZGRiAvKiBKU0Vudmlyb25tZW50UmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRW52aXJvbm1lbnRSZWNvcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTRGNzI1NjMxNEVFMjY1RTAwQjE2NTJCIC8qIFdlYWtIYW5kbGVP
d25lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrSGFuZGxl
T3duZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEY3MjU2NDE0RUUyNjVF
MDBCMTY1MkIgLyogV2Vha0hhbmRsZU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtIYW5kbGVPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
NEY5NzQ0NjEzOEM4NTNFMDBEQTFDNjcgLyogSGVhcFJvb3RWaXNpdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBSb290VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNjk5NDhFREU2OEQ0MDU0QjAxRUY3OTcgLyogRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmluZVByb3Bl
cnR5QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxODc5NTEwNjE0
QzU0MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTI4RDRBNzE3N0I3MUM4MDAwN0ZBM0MgLyogSlNTdHJpbmdSZWZQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nUmVmUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY5Myw3ICs1NjkxLDYgQEAKIAkJCQlB
NTMzOUVDODFCQjRCNDUxMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmggKi8sCiAJCQkJQTUzOThG
QTkxQzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5jcHAgKi8sCiAJCQkJQTUzOThGQUEx
Qzc1MEQ5NTAwNjBBOTYzIC8qIEhlYXBQcm9maWxlci5oICovLAotCQkJCTE0Rjk3NDQ2MTM4Qzg1
M0UwMERBMUM2NyAvKiBIZWFwUm9vdFZpc2l0b3IuaCAqLywKIAkJCQlBNTRDMkFBRTFDNjU0NEQx
MDBBMThENzggLyogSGVhcFNuYXBzaG90LmNwcCAqLywKIAkJCQlBNTRDMkFBRjFDNjU0NEQxMDBB
MThENzggLyogSGVhcFNuYXBzaG90LmggKi8sCiAJCQkJQTUzMTFDMzQxQzc3Q0VBQzAwRTZCMUI2
IC8qIEhlYXBTbmFwc2hvdEJ1aWxkZXIuY3BwICovLApAQCAtODM3MSw3ICs4MzY4LDYgQEAKIAkJ
CQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTMzOUVDOTFCQjRCNDYwMDA1NEYwMDUgLyogSGVhcE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBRDJGQ0JFQjFEQjU4REFEMDBCM0U3MzYgLyogSlNXZWJBc3Nl
bWJseVRhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNEY5NzQ0NzEzOEM4NTNFMDBEQTFDNjcg
LyogSGVhcFJvb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRTUyNkJF
MTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFN0JB
NjEwMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxh
dGVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjCi0jIENv
cHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoYykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIHZvaWQgJHtvYmplY3ROYW1l
fUJ1aWx0aW5GdW5jdGlvbgogCiBpbmxpbmUgdm9pZCAke29iamVjdE5hbWV9QnVpbHRpbkZ1bmN0
aW9uczo6dmlzaXQoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSNkZWZpbmUgVklTSVRf
RlVOQ1RJT04obmFtZSkgdmlzaXRvci5hcHBlbmQoJm1fIyNuYW1lIyNGdW5jdGlvbik7CisjZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKG1fIyNuYW1lIyNGdW5jdGlv
bik7CiAgICAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoVklTSVRfRlVOQ1RJT04pCiAjdW5kZWYgVklTSVRfRlVOQ1RJT04KIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2MSw3ICsyNDYxLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OnZpc2l0V2Vha2x5KFNsb3RWaXNpdG9yJgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc2hv
dWxkVmlzaXRTdHJvbmdseShsb2NrZXIpKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWRSZWFkT25seVBvaW50ZXIodGhpcyk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3Rl
ZCh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI0NzYsNyArMjQ3Niw3
IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNpdFdlYWtseShTbG90VmlzaXRvciYKIAogICAgIC8vIElm
IHdlIGpldHRpc29uIG91cnNlbHZlcyB3ZSdsbCBpbnN0YWxsIG91ciBhbHRlcm5hdGl2ZSwgc28g
bWFrZSBzdXJlIHRoYXQgaXQKICAgICAvLyBzdXJ2aXZlcyBHQyBldmVuIGlmIHdlIGRvbid0Lgot
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2FsdGVybmF0aXZlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCht
X2FsdGVybmF0aXZlKTsKICAgICAKICAgICAvLyBUaGVyZSBhcmUgdHdvIHRoaW5ncyB0aGF0IHdl
IHVzZSB3ZWFrIHJlZmVyZW5jZSBoYXJ2ZXN0ZXJzIGZvcjogREZHIGZpeHBvaW50IGZvcgogICAg
IC8vIGpldHRpc29uaW5nLCBhbmQgdHJ5aW5nIHRvIGZpbmQgc3RydWN0dXJlcyB0aGF0IHdvdWxk
IGJlIGxpdmUgYmFzZWQgb24gc29tZQpAQCAtMjUyOCw3ICsyNTI4LDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0bwogICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25h
bEZpbmFsaXplcigmbV91bmNvbmRpdGlvbmFsRmluYWxpemVyKTsKIAogICAgIGlmIChDb2RlQmxv
Y2sqIG90aGVyQmxvY2sgPSBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpKQotICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG90aGVyQmxvY2spOworICAg
ICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQob3RoZXJCbG9jayk7CiAKICAgICBpZiAobV9qaXRD
b2RlKQogICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZChtX2ppdENvZGUt
PnNpemUoKSk7CkBAIC0yNjU0LDcgKzI2NTQsNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRl
VHJhbnNpdGlvbnMoY29uCiAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PQogICAgICAgICAgICAgICAgICAgICBtX3ZtLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQo
bmV3U3RydWN0dXJlSUQpOwogICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZENvbmN1
cnJlbnRseShvbGRTdHJ1Y3R1cmUpKQotICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKG5ld1N0cnVjdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYWxsQXJlTWFya2VkU29GYXIgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2OTksNyArMjY5OSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICAgICAgICAgICAgICAgICAvLyB0byBtYXJr
IChpLmUuIGl0cyBnbG9iYWwgb2JqZWN0IGFuZCBwcm90b3R5cGUgYXJlIGJvdGggYWxyZWFkeQog
ICAgICAgICAgICAgICAgIC8vIGxpdmUpLgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fdG8pOworICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90
byk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBhbGxBcmVNYXJrZWRTb0Zh
ciA9IGZhbHNlOwogICAgICAgICB9CkBAIC0yNzQ3LDcgKzI3NDcsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZGV0ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gQWxsIHdlYWsgcmVmZXJlbmNlcyBh
cmUgbGl2ZS4gUmVjb3JkIHRoaXMgaW5mb3JtYXRpb24gc28gd2UgZG9uJ3QKICAgICAvLyBjb21l
IGJhY2sgaGVyZSBhZ2FpbiwgYW5kIHNjYW4gdGhlIHN0cm9uZyByZWZlcmVuY2VzLgogICAgIGRm
Z0NvbW1vbi0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkID0gdHJ1ZTsKLSAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKHRoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1
c3RlZCh0aGlzKTsKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIH0KIApAQCAtMzA0NSwxNCAr
MzA0NSwxNCBAQCB2b2lkIENvZGVCbG9jazo6dmlzaXRPU1JFeGl0VGFyZ2V0cyhjb25zCiAgICAg
Ly8gZ3VhcmFudGVlaW5nIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGV0YWlscyBvZiB0aGUgQ29kZUJs
b2NrIHdlIGNvbXBpbGVkCiAgICAgLy8gdGhlIE9TUiBleGl0IGFnYWluc3QuCiAKLSAgICB2aXNp
dG9yLmFwcGVuZCgmbV9hbHRlcm5hdGl2ZSk7CisgICAgdmlzaXRvci5hcHBlbmQobV9hbHRlcm5h
dGl2ZSk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgaWYgKGRmZ0NvbW1vbi0+aW5saW5l
Q2FsbEZyYW1lcykgewogICAgICAgICBmb3IgKGF1dG8qIGlubGluZUNhbGxGcmFtZSA6ICpkZmdD
b21tb24tPmlubGluZUNhbGxGcmFtZXMpIHsKICAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZp
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrKTsKKyAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2spOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCkBAIC0zMDYyLDIyICszMDYyLDIyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJv
bmdseVZpc2l0U3Ryb25nUmVmZXIKIHsKICAgICBVTlVTRURfUEFSQU0obG9ja2VyKTsKICAgICAK
LSAgICB2aXNpdG9yLmFwcGVuZCgmbV9nbG9iYWxPYmplY3QpOwotICAgIHZpc2l0b3IuYXBwZW5k
KCZtX293bmVyRXhlY3V0YWJsZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJm1fdW5saW5rZWRDb2Rl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2dsb2JhbE9iamVjdCk7CisgICAgdmlzaXRvci5hcHBl
bmQobV9vd25lckV4ZWN1dGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKG1fdW5saW5rZWRDb2Rl
KTsKICAgICBpZiAobV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJlRGF0YS0+bV9kaXJlY3RFdmFs
Q29kZUNhY2hlLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKG1fY29uc3RhbnRSZWdpc3RlcnMuZGF0YSgpLCBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRXhwcnMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRXhwcnNbaV0pOworICAgICAg
ICB2aXNpdG9yLmFwcGVuZChtX2Z1bmN0aW9uRXhwcnNbaV0pOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9mdW5j
dGlvbkRlY2xzW2ldKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVzW2ldLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmYnlWYWxJbmZvLT5jYWNoZWRTeW1ib2wpOworICAgICAgICB2aXNpdG9yLmFw
cGVuZChieVZhbEluZm8tPmNhY2hlZFN5bWJvbCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMzA5OCwxNiArMzA5OCwxNiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNp
dFdlYWtSZWZlcmVuCiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZnQ29tbW9uLT50
cmFuc2l0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoISFkZmdDb21tb24tPnRyYW5z
aXRpb25zW2ldLm1fY29kZU9yaWdpbikKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZkZmdD
b21tb24tPnRyYW5zaXRpb25zW2ldLm1fY29kZU9yaWdpbik7IC8vIEFsbW9zdCBjZXJ0YWlubHkg
bm90IG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNvZGUgb3JpZ2luIHNob3VsZCBhbHNvIGJlIGEgd2Vh
ayByZWZlcmVuY2UuIEJldHRlciB0byBiZSBzYWZlLCB0aG91Z2guCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fZnJvbSk7Ci0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fdG8pOworICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQoZGZnQ29tbW9uLT50cmFuc2l0aW9uc1tpXS5tX2NvZGVPcmlnaW4pOyAv
LyBBbG1vc3QgY2VydGFpbmx5IG5vdCBuZWNlc3NhcnksIHNpbmNlIHRoZSBjb2RlIG9yaWdpbiBz
aG91bGQgYWxzbyBiZSBhIHdlYWsgcmVmZXJlbmNlLiBCZXR0ZXIgdG8gYmUgc2FmZSwgdGhvdWdo
LgorICAgICAgICB2aXNpdG9yLmFwcGVuZChkZmdDb21tb24tPnRyYW5zaXRpb25zW2ldLm1fZnJv
bSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0NvbW1vbi0+dHJhbnNpdGlvbnNbaV0ubV90
byk7CiAgICAgfQogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZmdDb21tb24t
PndlYWtSZWZlcmVuY2VzLnNpemUoKTsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmZGZn
Q29tbW9uLT53ZWFrUmVmZXJlbmNlc1tpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGRmZ0Nv
bW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGRmZ0NvbW1vbi0+d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZkZmdDb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzW2ldKTsK
KyAgICAgICAgdmlzaXRvci5hcHBlbmQoZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNl
c1tpXSk7CiAKICAgICBkZmdDb21tb24tPmxpdmVuZXNzSGFzQmVlblByb3ZlZCA9IHRydWU7CiAj
ZW5kaWYgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZh
bENvZGVDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGlyZWN0RXZhbENvZGVDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBEaXJlY3RFdmFsQ29kZUNhY2hlOjp2aXNpdEFn
Z3JlZ2F0ZQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgRXZhbENhY2hlTWFw
OjppdGVyYXRvciBlbmQgPSBtX2NhY2hlTWFwLmVuZCgpOwogICAgIGZvciAoRXZhbENhY2hlTWFw
OjppdGVyYXRvciBwdHIgPSBtX2NhY2hlTWFwLmJlZ2luKCk7IHB0ciAhPSBlbmQ7ICsrcHRyKQot
ICAgICAgICB2aXNpdG9yLmFwcGVuZCgmcHRyLT52YWx1ZSk7CisgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHB0ci0+dmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJl
KiBjcmVhdGVBbGxvY2F0aW9uU3RydWN0dXJlRnJvbUJhc2UoVk0mLCBKU0NlbGwqIG93bmVyLCBK
U09iamVjdCogcHJvdG90eXBlLCBTdHJ1Y3R1cmUqIGJhc2UpOwogCiAgICAgdm9pZCBjbGVhcigp
IHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQotICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpIHsgdmlzaXRvci5hcHBlbmQoJm1fc3RydWN0dXJlKTsgfQorICAgIHZv
aWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIHsgdmlzaXRvci5hcHBlbmQo
bV9zdHJ1Y3R1cmUpOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmlzaXRB
Z2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewotICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9zdHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7
CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHltb3JwaGljQWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzUsNyArNTc1LDcgQEAgYm9vbCBBY2Nlc3NDYXNlOjpwcm9wYWdhdGVU
cmFuc2l0aW9ucyhTbAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUcmFuc2l0aW9u
OgogICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkobV9zdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKSkpCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9u
bHlQb2ludGVyKG1fc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJl
c3VsdCA9IGZhbHNlOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMTUgKzk0LDE1IEBAIHZvaWQgVW5saW5rZWRDb2Rl
QmxvY2s6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soKnRoaXNPYmplY3QpOwog
ICAgIGZvciAoRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOjppdGVyYXRvciBwdHIgPSB0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uRGVjbHMuYmVnaW4oKSwgZW5kID0gdGhpc09iamVjdC0+bV9mdW5jdGlv
bkRlY2xzLmVuZCgpOyBwdHIgIT0gZW5kOyArK3B0cikKLSAgICAgICAgdmlzaXRvci5hcHBlbmQo
cHRyKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoKnB0cik7CiAgICAgZm9yIChGdW5jdGlvbkV4
cHJlc3Npb25WZWN0b3I6Oml0ZXJhdG9yIHB0ciA9IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25FeHBy
cy5iZWdpbigpLCBlbmQgPSB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uRXhwcnMuZW5kKCk7IHB0ciAh
PSBlbmQ7ICsrcHRyKQotICAgICAgICB2aXNpdG9yLmFwcGVuZChwdHIpOworICAgICAgICB2aXNp
dG9yLmFwcGVuZCgqcHRyKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5t
X2NvbnN0YW50UmVnaXN0ZXJzLmRhdGEoKSwgdGhpc09iamVjdC0+bV9jb25zdGFudFJlZ2lzdGVy
cy5zaXplKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX3VubGlua2VkSW5zdHJ1Y3Rpb25zKQog
ICAgICAgICB2aXNpdG9yLnJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT5tX3Vu
bGlua2VkSW5zdHJ1Y3Rpb25zLT5zaXplSW5CeXRlcygpKTsKICAgICBpZiAodGhpc09iamVjdC0+
bV9yYXJlRGF0YSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgZW5kID0gdGhpc09iamVj
dC0+bV9yYXJlRGF0YS0+bV9yZWdleHBzLnNpemUoKTsgaSAhPSBlbmQ7IGkrKykKLSAgICAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5tX3JlZ2V4cHNbaV0p
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yYXJlRGF0YS0+bV9y
ZWdleHBzW2ldKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDggKzEyNyw4
IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2gKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkQ29kZUJsb2Nr
Rm9yQ2FsbCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5s
aW5rZWRDb2RlQmxvY2tGb3JDYWxsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0KTsKIH0KIAogRnVuY3Rpb25FeGVjdXRhYmxl
KiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHBhc3NlZFBhcmVudFNvdXJjZSwgc3RkOjpvcHRpb25hbDxpbnQ+IG92ZXJyaWRlTGluZU51
bWJlciwgSW50cmluc2ljIGludHJpbnNpYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsOCArNjEsOCBAQCB2b2lkIERlYnVnZ2VyU2NvcGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsCiAgICAgRGVidWdnZXJTY29wZSogdGhpc09iamVjdCA9IGpzQ2FzdDxEZWJ1Z2dlclNj
b3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Njb3BlKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9uZXh0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX3Njb3BlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25leHQpOwog
fQogCiBTdHJpbmcgRGVidWdnZXJTY29wZTo6Y2xhc3NOYW1lKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
VHJhbnNpdGlvbnMuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRUcmFuc2l0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMs
OSArNTMsOSBAQCB2b2lkIERlc2lyZWRUcmFuc2l0aW9uOjpyZWFsbHlBZGQoVk0mIHZtCiAKIHZv
aWQgRGVzaXJlZFRyYW5zaXRpb246OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiB7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJm1fY29kZU9yaWdpbk93
bmVyKTsKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9vbGRTdHJ1Y3R1
cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtX25ld1N0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fY29kZU9yaWdpbk93bmVyKTsKKyAgICB2
aXNpdG9yLmFwcGVuZFRydXN0ZWQobV9vbGRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5k
VHJ1c3RlZChtX25ld1N0cnVjdHVyZSk7CiB9CiAKIERlc2lyZWRUcmFuc2l0aW9uczo6RGVzaXJl
ZFRyYW5zaXRpb25zKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBEZXNpcmVkV2Vha1JlZmVyZW5jZXM6
OnJlYWxseUFkZChWTQogdm9pZCBEZXNpcmVkV2Vha1JlZmVyZW5jZXM6OnZpc2l0Q2hpbGRyZW4o
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChKU0NlbGwqIHRhcmdldCA6IG1fcmVm
ZXJlbmNlcykKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnRhcmdl
dCk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZCh0YXJnZXQpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MTAsOCArMTQxMCw4IEBAIHZvaWQgR3JhcGg6
OnJlZ2lzdGVyRnJvemVuVmFsdWVzKCkKIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChGcm96ZW5WYWx1ZSogdmFsdWUgOiBtX2Zyb3pl
blZhbHVlcykgewotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1
ZSh2YWx1ZS0+dmFsdWUoKSk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFk
T25seVBvaW50ZXIodmFsdWUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRU
cnVzdGVkKHZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHZh
bHVlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAogICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTE0MjUsMjggKzE0MjUs
MjYgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJl
OgogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPnN0cnVjdHVyZVNldCgp
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5UG9pbnRlcihub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7CisgICAgICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIE5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAg
ICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgICAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIobm9kZS0+c3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChub2RlLT5zdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IFB1dFN0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CiAgICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAg
ICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcigKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7Ci0gICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcigKLSAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKKyAgICAgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZFRydXN0ZWQobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7CisgICAgICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBNdWx0aUdl
dEJ5T2Zmc2V0Q2FzZSYgZ2V0Q2FzZSA6IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuY2Fz
ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IGdl
dENhc2Uuc2V0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMTQ1NSw5ICsx
NDUzLDkgQEAgdm9pZCBHcmFwaDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAg
ICAgICAgICAgICAgICBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlP
ZmZzZXREYXRhKCkudmFyaWFudHNbaV07CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0ID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKTsKICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gc2V0LnNpemUoKTsgai0tOykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoc2V0W2pdKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChzZXRbal0pOwog
ICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6
OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkUmVhZE9ubHlQb2ludGVyKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDEwICs2MTksMTAgQEAgdm9pZCBQbGFuOjptYXJrQ29kZUJsb2Nr
cyhTbG90VmlzaXRvciYgcwogICAgIC8vIGFuIGV4cGxpY2l0IGJhcnJpZXIuIFNvLCB3ZSBuZWVk
IHRvIGJlIHBlc3NpbWlzdGljIGFuZCBhc3N1bWUgdGhhdAogICAgIC8vIGFsbCBvdXIgQ29kZUJs
b2NrcyBtdXN0IGJlIHZpc2l0ZWQgZHVyaW5nIEdDLgogCi0gICAgc2xvdFZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoY29kZUJsb2NrKTsKLSAgICBzbG90VmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkp
OworICAgIHNsb3RWaXNpdG9yLmFwcGVuZFRydXN0ZWQoY29kZUJsb2NrKTsKKyAgICBzbG90Vmlz
aXRvci5hcHBlbmRUcnVzdGVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgaWYgKHBy
b2ZpbGVkREZHQ29kZUJsb2NrKQotICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZFJlYWRPbmx5UG9pbnRlcihwcm9maWxlZERGR0NvZGVCbG9jayk7CisgICAgICAgIHNsb3RWaXNp
dG9yLmFwcGVuZFRydXN0ZWQocHJvZmlsZWRERkdDb2RlQmxvY2spOwogfQogCiB2b2lkIFBsYW46
OnJlbWVtYmVyQ29kZUJsb2NrcyhWTSYgdm0pCkBAIC02NDcsMTYgKzY0NywxNiBAQCB2b2lkIFBs
YW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAKICAgICBjbGVhbk11c3RIYW5kbGVW
YWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1
ZXMuc2l6ZSgpOyBpLS07KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkVmFsdWUo
Jm11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQobXVz
dEhhbmRsZVZhbHVlc1tpXSk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9u
bHlQb2ludGVyKGNvZGVCbG9jayk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRP
bmx5UG9pbnRlcihjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwotICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIocHJvZmlsZWRERkdDb2RlQmxvY2spOworICAgIHZp
c2l0b3IuYXBwZW5kVHJ1c3RlZChjb2RlQmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3Rl
ZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOworICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChw
cm9maWxlZERGR0NvZGVCbG9jayk7CiAKICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lcykgewogICAg
ICAgICBmb3IgKGF1dG8qIGlubGluZUNhbGxGcmFtZSA6ICppbmxpbmVDYWxsRnJhbWVzKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSk7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVy
KGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOworICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRUcnVzdGVkKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2su
Z2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hhbmRsZVNldC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNyArMjgsNiBAQAogCiAj
aW5jbHVkZSAiSGFuZGxlQmxvY2suaCIKICNpbmNsdWRlICJIYW5kbGVCbG9ja0lubGluZXMuaCIK
LSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAtNTksMTQg
KzU4LDE0IEBAIHZvaWQgSGFuZGxlU2V0Ojpncm93KCkKICAgICB9CiB9CiAKLXZvaWQgSGFuZGxl
U2V0Ojp2aXNpdFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3Ip
Cit2b2lkIEhhbmRsZVNldDo6dmlzaXRTdHJvbmdIYW5kbGVzKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIE5vZGUqIGVuZCA9IG1fc3Ryb25nTGlzdC5lbmQoKTsKICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBtX3N0cm9uZ0xpc3QuYmVnaW4oKTsgbm9kZSAhPSBlbmQ7IG5vZGUgPSBub2RlLT5u
ZXh0KCkpIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNMaXZlTm9kZShub2RlKSk7CiAjZW5kaWYKLSAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZp
c2l0KG5vZGUtPnNsb3QoKSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kVHJ1c3RlZCgqbm9kZS0+
c2xvdCgpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZVNldC5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
YW5kbGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEhhbmRsZVNldDsKLWNsYXNzIEhlYXBSb290VmlzaXRvcjsKIGNsYXNzIFZN
OwogY2xhc3MgSlNWYWx1ZTsKK2NsYXNzIFNsb3RWaXNpdG9yOwogCiBjbGFzcyBIYW5kbGVOb2Rl
IHsKIHB1YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIEhhbmRsZVNsb3QgYWxs
b2NhdGUoKTsKICAgICB2b2lkIGRlYWxsb2NhdGUoSGFuZGxlU2xvdCk7CiAKLSAgICB2b2lkIHZp
c2l0U3Ryb25nSGFuZGxlcyhIZWFwUm9vdFZpc2l0b3ImKTsKKyAgICB2b2lkIHZpc2l0U3Ryb25n
SGFuZGxlcyhTbG90VmlzaXRvciYpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB3cml0
ZUJhcnJpZXIoSGFuZGxlU2xvdCwgY29uc3QgSlNWYWx1ZSYpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhhbmRsZVN0YWNr
LmgiCiAKLSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIApAQCAtNDAsNyArMzksNyBAQCBIYW5kbGVTdGFj
azo6SGFuZGxlU3RhY2soKQogICAgIGdyb3coKTsKIH0KIAotdm9pZCBIYW5kbGVTdGFjazo6dmlz
aXQoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCit2b2lkIEhhbmRsZVN0YWNrOjp2
aXNpdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBjb25zdCBWZWN0b3I8SGFuZGxlU2xv
dD4mIGJsb2NrcyA9IG1fYmxvY2tTdGFjay5ibG9ja3MoKTsKICAgICBzaXplX3QgYmxvY2tMZW5n
dGggPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGg7CkBAIC00OCwxMCArNDcsMTAgQEAgdm9pZCBI
YW5kbGVTdGFjazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJgogICAgIGludCBlbmQgPSBibG9ja3Mu
c2l6ZSgpIC0gMTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CiAgICAgICAg
IEhhbmRsZVNsb3QgYmxvY2sgPSBibG9ja3NbaV07Ci0gICAgICAgIGhlYXBSb290VmlzaXRvci52
aXNpdChibG9jaywgYmxvY2tMZW5ndGgpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQo
YmxvY2ssIGJsb2NrTGVuZ3RoKTsKICAgICB9CiAgICAgSGFuZGxlU2xvdCBibG9jayA9IGJsb2Nr
c1tlbmRdOwotICAgIGhlYXBSb290VmlzaXRvci52aXNpdChibG9jaywgbV9mcmFtZS5tX25leHQg
LSBibG9jayk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKGJsb2NrLCBtX2ZyYW1lLm1fbmV4
dCAtIGJsb2NrKTsKIH0KIAogdm9pZCBIYW5kbGVTdGFjazo6Z3JvdygpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NyArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIExvY2FsU2NvcGU7Ci1jbGFzcyBI
ZWFwUm9vdFZpc2l0b3I7CitjbGFzcyBTbG90VmlzaXRvcjsKIAogY2xhc3MgSGFuZGxlU3RhY2sg
ewogcHVibGljOgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBIYW5kbGVTbG90IHB1
c2goKTsKIAotICAgIHZvaWQgdmlzaXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgdm9pZCB2aXNp
dChTbG90VmlzaXRvciYpOwogCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
Z3JvdygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNp
bmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNv
bWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgiCkBAIC0zNSw3ICszNiw2IEBACiAjaW5jbHVkZSAi
SGVhcEhlbHBlclBvb2wuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJIZWFwUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNs
dWRlICJIZWFwU25hcHNob3QuaCIKICNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIkhlYXBWZXJpZmllci5oIgpAQCAtNTE1LDggKzUxNSw2IEBAIHZvaWQgSGVhcDo6bWFya1Rv
Rml4cG9pbnQoZG91YmxlIGdjU3RhcnQKIHsKICAgICBUaW1pbmdTY29wZSBtYXJrVG9GaXhwb2lu
dFRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1RvRml4cG9pbnQiKTsKICAgICAKLSAgICBI
ZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsK
LSAgICAKICAgICBpZiAobV9jb2xsZWN0aW9uU2NvcGUgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxs
KSB7CiAgICAgICAgIG1fb3BhcXVlUm9vdHMuY2xlYXIoKTsKICAgICAgICAgbV9jb2xsZWN0b3JT
bG90VmlzaXRvci0+Y2xlYXJNYXJrU3RhY2tzKCk7CkBAIC01NTksNyArNTU3LDggQEAgdm9pZCBI
ZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKIAotICAgIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmRpZFN0YXJ0TWFya2luZygpOwor
ICAgIFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvciA9ICptX2NvbGxlY3RvclNsb3RWaXNpdG9yOwor
ICAgIHNsb3RWaXNpdG9yLmRpZFN0YXJ0TWFya2luZygpOwogCiAgICAgU3BhY2VUaW1lU2NoZWR1
bGVyIHNjaGVkdWxlcigqdGhpcyk7CiAgICAgCkBAIC01ODAsNTUgKzU3OSw1MyBAQCB2b2lkIEhl
YXA6Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIC8vIE5vdyB3ZSB2aXNp
dCByb290cyB0aGF0IGRvbid0IGdldCBiYXJyaWVyZWQsIHNvIGVhY2ggZml4cG9pbnQgaXRlcmF0
aW9uIGp1c3QgcmV2aXNpdHMKICAgICAgICAgLy8gYWxsIG9mIHRoZW0uCiAjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKLSAgICAgICAgc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldCgqbV92bSwgKm1f
Y29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICBzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0
KCptX3ZtLCBzbG90VmlzaXRvcik7CiAjZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICBpZiAo
bV92bS0+c21hbGxTdHJpbmdzLm5lZWRzVG9CZVZpc2l0ZWQoKm1fY29sbGVjdGlvblNjb3BlKSkK
LSAgICAgICAgICAgIG1fdm0tPnNtYWxsU3RyaW5ncy52aXNpdFN0cm9uZ1JlZmVyZW5jZXMoKm1f
Y29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgbV92bS0+c21hbGxTdHJpbmdzLnZp
c2l0U3Ryb25nUmVmZXJlbmNlcyhzbG90VmlzaXRvcik7CiAgICAgICAgICAgICAKICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9wcm90ZWN0ZWRWYWx1ZXMpCi0gICAgICAgICAgICBoZWFwUm9v
dFZpc2l0b3IudmlzaXQoJnBhaXIua2V5KTsKKyAgICAgICAgICAgIHNsb3RWaXNpdG9yLmFwcGVu
ZFRydXN0ZWQocGFpci5rZXkpOwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX21hcmtMaXN0
U2V0ICYmIG1fbWFya0xpc3RTZXQtPnNpemUoKSkKLSAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyOjptYXJrTGlzdHMoaGVhcFJvb3RWaXNpdG9yLCAqbV9tYXJrTGlzdFNldCk7CisgICAg
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFya0xpc3RzKHNsb3RWaXNpdG9yLCAqbV9t
YXJrTGlzdFNldCk7CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKG1fdm0tPmV4Y2VwdGlvbigp
KQotICAgICAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0KG1fdm0tPmFkZHJlc3NPZkV4Y2Vw
dGlvbigpKTsKLSAgICAgICAgaWYgKG1fdm0tPmxhc3RFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
IGhlYXBSb290VmlzaXRvci52aXNpdChtX3ZtLT5hZGRyZXNzT2ZMYXN0RXhjZXB0aW9uKCkpOwor
ICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fdm0tPmV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3ZtLT5sYXN0RXhjZXB0aW9uKCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25nSGFuZGxlcyhoZWFw
Um9vdFZpc2l0b3IpOwotICAgICAgICBtX2hhbmRsZVN0YWNrLnZpc2l0KGhlYXBSb290VmlzaXRv
cik7CisgICAgICAgIG1faGFuZGxlU2V0LnZpc2l0U3Ryb25nSGFuZGxlcyhzbG90VmlzaXRvcik7
CisgICAgICAgIG1faGFuZGxlU3RhY2sudmlzaXQoc2xvdFZpc2l0b3IpOwogCiAjaWYgRU5BQkxF
KFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICBpZiAoU2FtcGxpbmdQcm9maWxlciogc2FtcGxp
bmdQcm9maWxlciA9IG1fdm0tPnNhbXBsaW5nUHJvZmlsZXIoKSkgewogICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIoc2FtcGxpbmdQcm9maWxlci0+Z2V0TG9jaygpKTsKICAgICAgICAgICAg
IHNhbXBsaW5nUHJvZmlsZXItPnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMoKTsKLSAgICAg
ICAgICAgIHNhbXBsaW5nUHJvZmlsZXItPnZpc2l0KCptX2NvbGxlY3RvclNsb3RWaXNpdG9yKTsK
KyAgICAgICAgICAgIHNhbXBsaW5nUHJvZmlsZXItPnZpc2l0KHNsb3RWaXNpdG9yKTsKICAgICAg
ICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpID09IEdDTG9nZ2luZzo6VmVyYm9zZSkKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJTYW1wbGluZyBQcm9maWxlciBkYXRhOlxuIiwgKm1fY29sbGVj
dG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIlNhbXBsaW5nIFByb2Zp
bGVyIGRhdGE6XG4iLCBzbG90VmlzaXRvcik7CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
U0FNUExJTkdfUFJPRklMRVIpCiAgICAgICAgIAogICAgICAgICBpZiAobV92bS0+dHlwZVByb2Zp
bGVyKCkpCi0gICAgICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJMb2coKS0+dmlzaXQoKm1fY29s
bGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAgbV92bS0+dHlwZVByb2ZpbGVyTG9nKCkt
PnZpc2l0KHNsb3RWaXNpdG9yKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgbV92bS0+c2hh
ZG93Q2hpY2tlbigpLnZpc2l0Q2hpbGRyZW4oKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAg
ICAgICBtX3ZtLT5zaGFkb3dDaGlja2VuKCkudmlzaXRDaGlsZHJlbihzbG90VmlzaXRvcik7CiAg
ICAgICAgICAgICAgICAgCi0gICAgICAgIG1faml0U3R1YlJvdXRpbmVzLT50cmFjZU1hcmtlZFN0
dWJSb3V0aW5lcygqbV9jb2xsZWN0b3JTbG90VmlzaXRvcik7CisgICAgICAgIG1faml0U3R1YlJv
dXRpbmVzLT50cmFjZU1hcmtlZFN0dWJSb3V0aW5lcyhzbG90VmlzaXRvcik7CiAKLSAgICAgICAg
bV9jb2xsZWN0b3JTbG90VmlzaXRvci0+bWVyZ2VPcGFxdWVSb290c0lmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIHNsb3RWaXNpdG9yLm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgpOwogICAgICAg
ICBmb3IgKGF1dG8mIHBhcmFsbGVsVmlzaXRvciA6IG1fcGFyYWxsZWxTbG90VmlzaXRvcnMpCiAg
ICAgICAgICAgICBwYXJhbGxlbFZpc2l0b3ItPm1lcmdlT3BhcXVlUm9vdHNJZk5lY2Vzc2FyeSgp
OwogCi0gICAgICAgIG1fb2JqZWN0U3BhY2UudmlzaXRXZWFrU2V0cyhoZWFwUm9vdFZpc2l0b3Ip
OworICAgICAgICBtX29iamVjdFNwYWNlLnZpc2l0V2Vha1NldHMoc2xvdFZpc2l0b3IpOwogICAg
ICAgICBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICAgICAgdmlzaXRDb21waWxlcldvcmts
aXN0V2Vha1JlZmVyZW5jZXMoKTsKLSAgICAgICAgREZHOjptYXJrQ29kZUJsb2NrcygqbV92bSwg
Km1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOwotICAgICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9
IG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPmlzRW1wdHkoKSAmJiBtX211dGF0b3JNYXJrU3RhY2st
PmlzRW1wdHkoKTsKKyAgICAgICAgREZHOjptYXJrQ29kZUJsb2NrcygqbV92bSwgc2xvdFZpc2l0
b3IpOworICAgICAgICBib29sIHNob3VsZFRlcm1pbmF0ZSA9IHNsb3RWaXNpdG9yLmlzRW1wdHko
KSAmJiBtX211dGF0b3JNYXJrU3RhY2stPmlzRW1wdHkoKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChPcHRpb25zOjpsb2dHQygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKG1fY29sbGVjdG9yU2xv
dFZpc2l0b3ItPmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0b3JNYXJr
U3RhY2stPnNpemUoKSArIG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm11dGF0b3JNYXJrU3RhY2so
KS5zaXplKCksICIsIGE9IiwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSAvIDEwMjQsICIga2Is
IGI9IiwgbV9iYXJyaWVyc0V4ZWN1dGVkLCAiLCBtdT0iLCBzY2hlZHVsZXIuY3VycmVudERlY2lz
aW9uKCkudGFyZ2V0TXV0YXRvclV0aWxpemF0aW9uKCksICIgIik7CisgICAgICAgICAgICBkYXRh
TG9nKHNsb3RWaXNpdG9yLmNvbGxlY3Rvck1hcmtTdGFjaygpLnNpemUoKSwgIisiLCBtX211dGF0
b3JNYXJrU3RhY2stPnNpemUoKSArIHNsb3RWaXNpdG9yLm11dGF0b3JNYXJrU3RhY2soKS5zaXpl
KCksICIsIGE9IiwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSAvIDEwMjQsICIga2IsIGI9Iiwg
bV9iYXJyaWVyc0V4ZWN1dGVkLCAiLCBtdT0iLCBzY2hlZHVsZXIuY3VycmVudERlY2lzaW9uKCku
dGFyZ2V0TXV0YXRvclV0aWxpemF0aW9uKCksICIgIik7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIFdlIHdhbnQgdG8gZG8gdGhpcyB0byBjb25zZXJ2YXRpdmVseSBlbnN1cmUgdGhh
dCB3ZSByZXNjYW4gYW55IGNvZGUgYmxvY2tzIHRoYXQgYXJlCkBAIC02NDUsMTQgKzY0MiwxNCBA
QCB2b2lkIEhlYXA6Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgIAogICAg
ICAgICAvLyBUaGUgU2xvdFZpc2l0b3IncyBtYXJrIHN0YWNrcyBhcmUgYWNjZXNzZWQgYnkgdGhl
IGNvbGxlY3RvciB0aHJlYWQgKGkuZS4gdGhpcyB0aHJlYWQpCiAgICAgICAgIC8vIHdpdGhvdXQg
bG9ja3MuIFRoYXQncyB3aHkgd2UgZG91YmxlLWJ1ZmZlci4KLSAgICAgICAgbV9tdXRhdG9yTWFy
a1N0YWNrLT50cmFuc2ZlclRvKG1fY29sbGVjdG9yU2xvdFZpc2l0b3ItPm11dGF0b3JNYXJrU3Rh
Y2soKSk7CisgICAgICAgIG1fbXV0YXRvck1hcmtTdGFjay0+dHJhbnNmZXJUbyhzbG90VmlzaXRv
ci5tdXRhdG9yTWFya1N0YWNrKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkgPT0gR0NMb2dnaW5nOjpWZXJib3NlKQotICAgICAgICAgICAgZGF0YUxvZygiTGl2ZSBX
ZWFrIEhhbmRsZXM6XG4iLCAqbV9jb2xsZWN0b3JTbG90VmlzaXRvcik7CisgICAgICAgICAgICBk
YXRhTG9nKCJMaXZlIFdlYWsgSGFuZGxlczpcbiIsIHNsb3RWaXNpdG9yKTsKICAgICAgICAgCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFRpbWluZ1Njb3BlIHRyYWNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrVG9GaXhwb2ludCB0cmFjaW5nIik7Ci0gICAgICAgICAgICBQYXJhbGxlbE1v
ZGVFbmFibGVyIGVuYWJsZXIoKm1fY29sbGVjdG9yU2xvdFZpc2l0b3IpOworICAgICAgICAgICAg
UGFyYWxsZWxNb2RlRW5hYmxlciBlbmFibGVyKHNsb3RWaXNpdG9yKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNvbGxlY3RvclRpbWVzbGljaW5nKCkpIHsKICAg
ICAgICAgICAgICAgICBzY2hlZHVsZXIuc25hcFBoYXNlKCk7CkBAIC02NjMsNyArNjYwLDcgQEAg
dm9pZCBIZWFwOjptYXJrVG9GaXhwb2ludChkb3VibGUgZ2NTdGFydAogICAgICAgICAgICAgICAg
ICAgICBpZiAoZGVjaXNpb24uc2hvdWxkQmVSZXN1bWVkKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bWVUaGVXb3JsZFNjb3Bl
IHJlc3VtZVRoZVdvcmxkU2NvcGUoKnRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRyYWluUmVzdWx0ID0gbV9jb2xsZWN0b3JTbG90VmlzaXRvci0+ZHJhaW5JblBhcmFsbGVsUGFz
c2l2ZWx5KGRlY2lzaW9uLnRpbWVUb1N0b3AoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhaW5SZXN1bHQgPSBzbG90VmlzaXRvci5kcmFpbkluUGFyYWxsZWxQYXNzaXZlbHkoZGVj
aXNpb24udGltZVRvU3RvcCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHJh
aW5SZXN1bHQgPT0gU2xvdFZpc2l0b3I6OlNoYXJlZERyYWluUmVzdWx0OjpEb25lKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Ugd2lsbCBzdG9w
LiBCdXQgbWF5YmUgdGhlIHNjaGVkdWxlciBkb2VzIG5vdCB3YW50CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRoYXQuCkBAIC02ODAsMTMgKzY3NywxMyBAQCB2b2lkIEhlYXA6
Om1hcmtUb0ZpeHBvaW50KGRvdWJsZSBnY1N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coInd1bCE9Iiwgd2FrZVVwTGF0ZW5jeS5taWxsaXNlY29uZHMoKSwgIiBt
cyAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBkcmFpblJlc3VsdCA9IG1fY29sbGVjdG9yU2xv
dFZpc2l0b3ItPmRyYWluSW5QYXJhbGxlbChkZWNpc2lvbi50aW1lVG9SZXN1bWUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkcmFpblJlc3VsdCA9IHNsb3RWaXNpdG9yLmRyYWluSW5QYXJh
bGxlbChkZWNpc2lvbi50aW1lVG9SZXN1bWUoKSk7CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAo
ZHJhaW5SZXN1bHQgIT0gU2xvdFZpc2l0b3I6OlNoYXJlZERyYWluUmVzdWx0OjpEb25lKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gRGlzYWJsaW5nIGNvbGxlY3Rv
ciB0aW1lc2xpY2luZyBpcyBtZWFudCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGgKICAgICAgICAg
ICAgICAgICAvLyAtLWNvbGxlY3RDb250aW51b3VzbHk9dHJ1ZSB0byBtYXhpbWl6ZSB0aGUgb3Bw
b3J0dW5pdHkgZm9yIGhhcm1mdWwgcmFjZXMuCiAgICAgICAgICAgICAgICAgUmVzdW1lVGhlV29y
bGRTY29wZSByZXN1bWVUaGVXb3JsZFNjb3BlKCp0aGlzKTsKLSAgICAgICAgICAgICAgICBtX2Nv
bGxlY3RvclNsb3RWaXNpdG9yLT5kcmFpbkluUGFyYWxsZWwoKTsKKyAgICAgICAgICAgICAgICBz
bG90VmlzaXRvci5kcmFpbkluUGFyYWxsZWwoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNyArNjMsNiBAQCBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiBjbGFzcyBHQ0F3YXJlSklU
U3R1YlJvdXRpbmU7CiBjbGFzcyBIZWFwOwogY2xhc3MgSGVhcFByb2ZpbGVyOwotY2xhc3MgSGVh
cFJvb3RWaXNpdG9yOwogY2xhc3MgSGVhcFZlcmlmaWVyOwogY2xhc3MgSGVscGluZ0dDU2NvcGU7
CiBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CkBAIC00NTksNyArNDU4LDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAg
ICB2b2lkIHZpc2l0Q29tcGlsZXJXb3JrbGlzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBy
ZW1vdmVEZWFkQ29tcGlsZXJXb3JrbGlzdEVudHJpZXMoKTsKLSAgICB2b2lkIG1hcmtUb0ZpeHBv
aW50KEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgdXBkYXRlT2JqZWN0Q291bnRzKGRvdWJs
ZSBnY1N0YXJ0VGltZSk7CiAgICAgdm9pZCBlbmRNYXJraW5nKCk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBSb290VmlzaXRvci5oCShyZXZpc2lvbiAyMDk4Njcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0b3IuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTbG90VmlzaXRv
ci5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotICAgIC8vIFByaXZpbGVnZWQgY2xhc3MgZm9yIG1hcmtpbmcgSlNWYWx1ZXMgZGlyZWN0bHku
IEl0IGlzIG9ubHkgc2FmZSB0byB1c2UKLSAgICAvLyB0aGlzIGNsYXNzIHRvIG1hcmsgZGlyZWN0
IGhlYXAgcm9vdHMgdGhhdCBhcmUgbWFya2VkIGR1cmluZyBldmVyeSBHQyBwYXNzLgotICAgIC8v
IEFsbCBvdGhlciByZWZlcmVuY2VzIHNob3VsZCBiZSB3cmFwcGVkIGluIFdyaXRlQmFycmllcnMu
Ci0gICAgY2xhc3MgSGVhcFJvb3RWaXNpdG9yIHsKLSAgICBwcml2YXRlOgotICAgICAgICBmcmll
bmQgY2xhc3MgSGVhcDsKLSAgICAgICAgSGVhcFJvb3RWaXNpdG9yKFNsb3RWaXNpdG9yJik7Ci0K
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgdmlzaXQoSlNWYWx1ZSopOwotICAgICAgICB2b2lk
IHZpc2l0KEpTVmFsdWUqLCBzaXplX3QpOwotICAgICAgICB2b2lkIHZpc2l0KEpTU3RyaW5nKiop
OwotICAgICAgICB2b2lkIHZpc2l0KEpTQ2VsbCoqKTsKLQotICAgICAgICBTbG90VmlzaXRvciYg
dmlzaXRvcigpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgU2xvdFZpc2l0b3ImIG1fdmlzaXRv
cjsKLSAgICB9OwotCi0gICAgaW5saW5lIEhlYXBSb290VmlzaXRvcjo6SGVhcFJvb3RWaXNpdG9y
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotICAgICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQotICAg
IHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0KEpTVmFs
dWUqIHNsb3QpCi0gICAgewotICAgICAgICBtX3Zpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRWYWx1
ZShzbG90KTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9vdFZpc2l0b3I6OnZpc2l0
KEpTVmFsdWUqIHNsb3QsIHNpemVfdCBjb3VudCkKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgICAgIG1fdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZFZhbHVlKCZzbG90W2ldKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBIZWFwUm9v
dFZpc2l0b3I6OnZpc2l0KEpTU3RyaW5nKiogc2xvdCkKLSAgICB7Ci0gICAgICAgIG1fdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoc2xvdCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZv
aWQgSGVhcFJvb3RWaXNpdG9yOjp2aXNpdChKU0NlbGwqKiBzbG90KQotICAgIHsKLSAgICAgICAg
bV92aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcihzbG90KTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgU2xvdFZpc2l0b3ImIEhlYXBSb290VmlzaXRvcjo6dmlzaXRvcigpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV92aXNpdG9yOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwUm9vdFZpc2l0
b3IuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0
aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0xhcmdlQWxsb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIExhcmdlQWxsb2NhdGlvbjo6c2hyaW5rKCkK
ICAgICBtX3dlYWtTZXQuc2hyaW5rKCk7CiB9CiAKLXZvaWQgTGFyZ2VBbGxvY2F0aW9uOjp2aXNp
dFdlYWtTZXQoSGVhcFJvb3RWaXNpdG9yJiB2aXNpdG9yKQordm9pZCBMYXJnZUFsbG9jYXRpb246
OnZpc2l0V2Vha1NldChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBtX3dlYWtTZXQudmlz
aXQodmlzaXRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJnZUFs
bG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9MYXJn
ZUFsbG9jYXRpb24uaAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTGFyZ2VBbGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFNsb3RWaXNpdG9yOworCiAvLyBXZWJLaXQgaGFz
IGEgZ29vZCBtYWxsb2MgdGhhdCBhbHJlYWR5IGtub3dzIHdoYXQgdG8gZG8gZm9yIGxhcmdlIGFs
bG9jYXRpb25zLiBUaGUgR0Mgc2hvdWxkbid0CiAvLyBoYXZlIHRvIHRoaW5rIGFib3V0IHN1Y2gg
dGhpbmdzLiBUaGF0J3Mgd2hlcmUgTGFyZ2VBbGxvY2F0aW9uIGNvbWVzIGluLiBXZSB3aWxsIGFs
bG9jYXRlIGxhcmdlCiAvLyBvYmplY3RzIGRpcmVjdGx5IHVzaW5nIG1hbGxvYywgYW5kIHB1dCB0
aGUgTGFyZ2VBbGxvY2F0aW9uIGhlYWRlciBqdXN0IGJlZm9yZSB0aGVtLiBXZSBjYW4gZGV0ZWN0
CkBAIC02Miw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNocmluaygpOwogICAg
IAotICAgIHZvaWQgdmlzaXRXZWFrU2V0KEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgdmlz
aXRXZWFrU2V0KFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCByZWFwV2Vha1NldCgpOwogICAgIAog
ICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZCgpIHsgbV9pc05ld2x5QWxsb2NhdGVkID0gZmFs
c2U7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIZWFwOwogY2xhc3MgSlND
ZWxsOwogY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogY2xhc3MgTWFya2VkU3BhY2U7CitjbGFzcyBT
bG90VmlzaXRvcjsKIAogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3Qg
SGVhcFZlcnNpb247CkBAIC0xMzIsNyArMTMzLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAg
ICAgdm9pZCBzaHJpbmsoKTsKICAgICAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCB2aXNpdFdl
YWtTZXQoSGVhcFJvb3RWaXNpdG9yJik7CisgICAgICAgIHVuc2lnbmVkIHZpc2l0V2Vha1NldChT
bG90VmlzaXRvciYpOwogICAgICAgICB2b2lkIHJlYXBXZWFrU2V0KCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gV2hpbGUgYWxsb2NhdGluZyBmcm9tIGEgZnJlZSBsaXN0LCBNYXJrZWRCbG9j
ayB0ZW1wb3JhcmlseSBoYXMgYm9ndXMKQEAgLTQzMSw5ICs0MzIsOSBAQCBpbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzaHJpbmsoCiAgICAgbV93ZWFrU2V0LnNocmluaygpOwogfQog
Ci1pbmxpbmUgdW5zaWduZWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dmlzaXRXZWFrU2V0KEhlYXBS
b290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnZpc2l0V2Vha1NldChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICByZXR1
cm4gbV93ZWFrU2V0LnZpc2l0KGhlYXBSb290VmlzaXRvcik7CisgICAgcmV0dXJuIG1fd2Vha1Nl
dC52aXNpdCh2aXNpdG9yKTsKIH0KIAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
cmVhcFdlYWtTZXQoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksMTAgKzM1OSwxMCBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV9hbGxvY2F0b3JGb3JF
bXB0eUFsbG9jYXRpb24gPSBtX2ZpcnN0QWxsb2NhdG9yOwogfQogCi12b2lkIE1hcmtlZFNwYWNl
Ojp2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQordm9pZCBN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBh
dXRvIHZpc2l0ID0gWyZdIChXZWFrU2V0KiB3ZWFrU2V0KSB7Ci0gICAgICAgIHdlYWtTZXQtPnZp
c2l0KGhlYXBSb290VmlzaXRvcik7CisgICAgICAgIHdlYWtTZXQtPnZpc2l0KHZpc2l0b3IpOwog
ICAgIH07CiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAKLSAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNp
dG9yJik7CisgICAgdm9pZCB2aXNpdFdlYWtTZXRzKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBy
ZWFwV2Vha1NldHMoKTsKIAogICAgIE1hcmtlZEJsb2NrU2V0JiBibG9ja3MoKSB7IHJldHVybiBt
X2Jsb2NrczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTbG90
VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgIH0gfQogfQogCi12b2lkIFNsb3RW
aXNpdG9yOjphcHBlbmQoSlNWYWx1ZSB2YWx1ZSkKK3ZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRy
dXN0ZWQoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwo
KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xv
dFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIFNs
b3RWaXNpdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogICAgIGZyaWVuZCBj
bGFzcyBTZXRDdXJyZW50Q2VsbFNjb3BlOwotICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0
b3I7IC8vIEFsbG93ZWQgdG8gbWFyayBhIEpTVmFsdWUqIG9yIEpTQ2VsbCoqIGRpcmVjdGx5Lgog
ICAgIGZyaWVuZCBjbGFzcyBIZWFwOwogCiBwdWJsaWM6CkBAIC03MCwyMCArNjksMjcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBlbmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKICAgICAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+Kik7Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhcHBlbmRIaWRkZW4oV3JpdGVCYXJyaWVyQmFz
ZTxUPiopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYXBwZW5kKGNvbnN0IFdyaXRl
QmFycmllckJhc2U8VD4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFwcGVuZEhp
ZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQ+Jik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmF0b3I+IHZvaWQgYXBwZW5kKEl0ZXJhdG9yIGJlZ2luICwgSXRlcmF0b3IgZW5kKTsKLSAg
ICB2b2lkIGFwcGVuZFZhbHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNv
dW50KTsKLSAgICB2b2lkIGFwcGVuZFZhbHVlc0hpZGRlbihXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+Kiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIGFwcGVuZFZhbHVlcyhjb25zdCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIGFwcGVuZFZhbHVl
c0hpZGRlbihjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kiwgc2l6ZV90IGNvdW50KTsK
KyAgICAKKyAgICAvLyBUaGVzZSBkb24ndCByZXF1aXJlIHlvdSB0byBwcm92ZSB0aGF0IHlvdSBo
YXZlIGEgV3JpdGVCYXJyaWVyPD4uIFRoYXQgbWFrZXMgc2Vuc2UKKyAgICAvLyBmb3I6CisgICAg
Ly8KKyAgICAvLyAtIHJvb3RzLgorICAgIC8vIC0gc29waGlzdGljYXRlZCBkYXRhIHN0cnVjdHVy
ZXMgdGhhdCBiYXJyaWVyIHRocm91Z2ggb3RoZXIgbWVhbnMgKGxpa2UgREZHOjpQbGFuIGFuZAor
ICAgIC8vICAgZnJpZW5kcykuCisgICAgLy8KKyAgICAvLyBJZiB5b3UgYXJlIG5vdCBhIHJvb3Qg
YW5kIHlvdSBkb24ndCBrbm93IHdoYXQga2luZCBvZiBiYXJyaWVyIHlvdSBoYXZlLCB0aGVuIHlv
dQorICAgIC8vIHNob3VsZG4ndCBjYWxsIHRoZXNlIG1ldGhvZHMuCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBhcHBlbmRUcnVzdGVkKEpTVmFsdWUpOworICAgIHZvaWQgYXBwZW5kVHJ1c3Rl
ZChKU1ZhbHVlKiwgc2l6ZV90KTsKKyAgICB2b2lkIGFwcGVuZFRydXN0ZWQoSlNDZWxsKik7CiAg
ICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVk
UG9pbnRlcihUKiopOwotICAgIHZvaWQgYXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1ZhbHVlKik7
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVkV2Vh
ayhXZWFrPFQ+Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIGFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlQb2ludGVyKFQqKTsKLSAgICB2b2lkIGFwcGVuZFVuYmFycmllcmVk
UmVhZE9ubHlWYWx1ZShKU1ZhbHVlKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBXZWFrPFQ+JiB3
ZWFrKTsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZE9wYXF1ZVJvb3Qodm9p
ZCopOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY29udGFpbnNPcGFxdWVSb290KHZvaWQq
KSBjb25zdDsKQEAgLTE0OSw3ICsxNTUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBQYXJhbGxlbE1vZGVFbmFibGVyOwogICAgIAotICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYXBwZW5kKEpTVmFsdWUpOyAvLyBUaGlzIGlzIHByaXZhdGUgdG8gZW5jb3VyYWdlIGNs
aWVudHMgdG8gdXNlIFdyaXRlQmFycmllcjxUPi4KICAgICB2b2lkIGFwcGVuZEpTQ2VsbE9yQXV4
aWxpYXJ5KEhlYXBDZWxsKik7CiAgICAgdm9pZCBhcHBlbmRIaWRkZW4oSlNWYWx1ZSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5o
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2NiArMzEsNTIgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBT
bG90VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKFQqKiBzbG90KQotewotICAgIEFT
U0VSVChzbG90KTsKLSAgICBhcHBlbmQoKnNsb3QpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2lu
dGVyKFQqIGNlbGwpCi17Ci0gICAgYXBwZW5kKGNlbGwpOwotfQotCi1pbmxpbmUgdm9pZCBTbG90
VmlzaXRvcjo6YXBwZW5kVW5iYXJyaWVyZWRWYWx1ZShKU1ZhbHVlKiBzbG90KQoraW5saW5lIHZv
aWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0ZWQoSlNWYWx1ZSogc2xvdCwgc2l6ZV90IGNvdW50
KQogewotICAgIEFTU0VSVChzbG90KTsKLSAgICBhcHBlbmQoKnNsb3QpOworICAgIGZvciAoc2l6
ZV90IGkgPSBjb3VudDsgaS0tOykKKyAgICAgICAgYXBwZW5kVHJ1c3RlZChzbG90W2ldKTsKIH0K
IAotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlWYWx1
ZShKU1ZhbHVlIHZhbHVlKQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFRydXN0ZWQo
SlNDZWxsKiBjZWxsKQogewotICAgIGFwcGVuZCh2YWx1ZSk7CisgICAgYXBwZW5kVHJ1c3RlZChK
U1ZhbHVlKGNlbGwpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIFNs
b3RWaXNpdG9yOjphcHBlbmRVbmJhcnJpZXJlZFdlYWsoV2VhazxUPiogd2VhaykKK2lubGluZSB2
b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQoY29uc3QgV2VhazxUPiYgd2VhaykKIHsKLSAgICBBU1NF
UlQod2Vhayk7Ci0gICAgYXBwZW5kKHdlYWstPmdldCgpKTsKKyAgICBhcHBlbmRUcnVzdGVkKHdl
YWsuZ2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgU2xvdFZp
c2l0b3I6OmFwcGVuZChXcml0ZUJhcnJpZXJCYXNlPFQ+KiBzbG90KQoraW5saW5lIHZvaWQgU2xv
dFZpc2l0b3I6OmFwcGVuZChjb25zdCBXcml0ZUJhcnJpZXJCYXNlPFQ+JiBzbG90KQogewotICAg
IGFwcGVuZChzbG90LT5nZXQoKSk7CisgICAgYXBwZW5kVHJ1c3RlZChzbG90LmdldCgpKTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRI
aWRkZW4oV3JpdGVCYXJyaWVyQmFzZTxUPiogc2xvdCkKK2lubGluZSB2b2lkIFNsb3RWaXNpdG9y
OjphcHBlbmRIaWRkZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxUPiYgc2xvdCkKIHsKLSAgICBh
cHBlbmRIaWRkZW4oc2xvdC0+Z2V0KCkpOworICAgIGFwcGVuZEhpZGRlbihzbG90LmdldCgpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CiBpbmxpbmUgdm9pZCBTbG90VmlzaXRv
cjo6YXBwZW5kKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCiB7CiAgICAgZm9yIChhdXRv
IGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgYXBwZW5kKCYqaXQpOworICAg
ICAgICBhcHBlbmQoKml0KTsKIH0KIAotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFZh
bHVlcyhXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50KQor
aW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZFZhbHVlcyhjb25zdCBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBiYXJyaWVycywgc2l6ZV90IGNvdW50KQogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgYXBwZW5kKCZiYXJyaWVyc1tpXSk7Cisg
ICAgICAgIGFwcGVuZChiYXJyaWVyc1tpXSk7CiB9CiAKLWlubGluZSB2b2lkIFNsb3RWaXNpdG9y
OjphcHBlbmRWYWx1ZXNIaWRkZW4oV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMs
IHNpemVfdCBjb3VudCkKK2lubGluZSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRWYWx1ZXNIaWRk
ZW4oY29uc3QgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogYmFycmllcnMsIHNpemVfdCBjb3Vu
dCkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGFw
cGVuZEhpZGRlbigmYmFycmllcnNbaV0pOworICAgICAgICBhcHBlbmRIaWRkZW4oYmFycmllcnNb
aV0pOwogfQogCiBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6cmVwb3J0RXh0cmFNZW1vcnlWaXNp
dGVkKHNpemVfdCBzaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Js
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxv
Y2suY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRl
ICJDZWxsQ29udGFpbmVySW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJI
ZWFwUm9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKQEAgLTk3LDEwICs5Niw4IEBA
IHZvaWQgV2Vha0Jsb2NrOjpzd2VlcCgpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRhaW5l
clR5cGU+Ci12b2lkIFdlYWtCbG9jazo6c3BlY2lhbGl6ZWRWaXNpdChDb250YWluZXJUeXBlJiBj
b250YWluZXIsIEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQordm9pZCBXZWFrQmxv
Y2s6OnNwZWNpYWxpemVkVmlzaXQoQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBTbG90VmlzaXRvciYgdmlzaXRvciA9IGhlYXBSb290VmlzaXRv
ci52aXNpdG9yKCk7Ci0gICAgCiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24gPSB2aXNp
dG9yLm1hcmtpbmdWZXJzaW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYWtJ
bXBsQ291bnQoKTsgKytpKSB7CkBAIC0xMTIsMTggKzEwOSwxOCBAQCB2b2lkIFdlYWtCbG9jazo6
c3BlY2lhbGl6ZWRWaXNpdChDb250YWluCiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgY29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9
IHdlYWtJbXBsLT5qc1ZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IHdlYWtJbXBs
LT5qc1ZhbHVlKCk7CiAgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRDb25jdXJyZW50bHko
bWFya2luZ1ZlcnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVl
Jj4oanNWYWx1ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdCgmY29uc3RfY2FzdDxK
U1ZhbHVlJj4oanNWYWx1ZSkpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoanNWYWx1
ZSk7CiAgICAgfQogfQogCi12b2lkIFdlYWtCbG9jazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJiBo
ZWFwUm9vdFZpc2l0b3IpCit2b2lkIFdlYWtCbG9jazo6dmlzaXQoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7CiAgICAgLy8gSWYgYSBibG9jayBpcyBjb21wbGV0ZWx5IGVtcHR5LCBhIHZpc2l0IHdv
bid0IGhhdmUgYW55IGVmZmVjdC4KICAgICBpZiAoaXNFbXB0eSgpKQpAQCAtMTMzLDkgKzEzMCw5
IEBAIHZvaWQgV2Vha0Jsb2NrOjp2aXNpdChIZWFwUm9vdFZpc2l0b3ImIGgKICAgICBBU1NFUlQo
bV9jb250YWluZXIpOwogICAgIAogICAgIGlmIChtX2NvbnRhaW5lci5pc0xhcmdlQWxsb2NhdGlv
bigpKQotICAgICAgICBzcGVjaWFsaXplZFZpc2l0KG1fY29udGFpbmVyLmxhcmdlQWxsb2NhdGlv
bigpLCBoZWFwUm9vdFZpc2l0b3IpOworICAgICAgICBzcGVjaWFsaXplZFZpc2l0KG1fY29udGFp
bmVyLmxhcmdlQWxsb2NhdGlvbigpLCB2aXNpdG9yKTsKICAgICBlbHNlCi0gICAgICAgIHNwZWNp
YWxpemVkVmlzaXQobV9jb250YWluZXIubWFya2VkQmxvY2soKSwgaGVhcFJvb3RWaXNpdG9yKTsK
KyAgICAgICAgc3BlY2lhbGl6ZWRWaXNpdChtX2NvbnRhaW5lci5tYXJrZWRCbG9jaygpLCB2aXNp
dG9yKTsKIH0KIAogdm9pZCBXZWFrQmxvY2s6OnJlYXAoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha0Jsb2NrLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKLWNsYXNzIEhlYXBSb290VmlzaXRvcjsK
K2NsYXNzIFNsb3RWaXNpdG9yOwogCiBjbGFzcyBXZWFrQmxvY2sgOiBwdWJsaWMgRG91Ymx5TGlu
a2VkTGlzdE5vZGU8V2Vha0Jsb2NrPiB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN3ZWVwKCk7CiAgICAgU3dlZXBSZXN1bHQgdGFrZVN3ZWVwUmVzdWx0KCk7
CiAKLSAgICB2b2lkIHZpc2l0KEhlYXBSb290VmlzaXRvciYpOworICAgIHZvaWQgdmlzaXQoU2xv
dFZpc2l0b3ImKTsKICAgICB2b2lkIHJlYXAoKTsKIAogICAgIHZvaWQgbGFzdENoYW5jZVRvRmlu
YWxpemUoKTsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRnJlZUNlbGwq
IGFzRnJlZUNlbGwoV2Vha0ltcGwqKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250
YWluZXJUeXBlPgotICAgIHZvaWQgc3BlY2lhbGl6ZWRWaXNpdChDb250YWluZXJUeXBlJiwgSGVh
cFJvb3RWaXNpdG9yJik7CisgICAgdm9pZCBzcGVjaWFsaXplZFZpc2l0KENvbnRhaW5lclR5cGUm
LCBTbG90VmlzaXRvciYpOwogCiAgICAgZXhwbGljaXQgV2Vha0Jsb2NrKENlbGxDb250YWluZXIp
OwogICAgIHZvaWQgZmluYWxpemUoV2Vha0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrU2V0LmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHVuc2lnbmVkIHZpc2l0KEhlYXBS
b290VmlzaXRvciYpOworICAgIHVuc2lnbmVkIHZpc2l0KFNsb3RWaXNpdG9yJik7CiAgICAgdm9p
ZCByZWFwKCk7CiAgICAgdm9pZCBzd2VlcCgpOwogICAgIHZvaWQgc2hyaW5rKCk7CkBAIC0xMDYs
NyArMTA2LDcgQEAgaW5saW5lIHZvaWQgV2Vha1NldDo6bGFzdENoYW5jZVRvRmluYWxpegogICAg
ICAgICBibG9jay0+bGFzdENoYW5jZVRvRmluYWxpemUoKTsKIH0KIAotaW5saW5lIHVuc2lnbmVk
IFdlYWtTZXQ6OnZpc2l0KEhlYXBSb290VmlzaXRvciYgdmlzaXRvcikKK2lubGluZSB1bnNpZ25l
ZCBXZWFrU2V0Ojp2aXNpdChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICB1bnNpZ25lZCBj
b3VudCA9IDA7CiAgICAgZm9yIChXZWFrQmxvY2sqIGJsb2NrID0gbV9ibG9ja3MuaGVhZCgpOyBi
bG9jazsgYmxvY2sgPSBibG9jay0+bmV4dCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCShyZXZpc2lvbiAyMDk4
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCwyMyArNDA4LDIzIEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6dmlzaXRDaGlsZHJlbihTbG90VmkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xvZ0N1cnNv
ciAtIG1fbG9nOyBpLS07KSB7CiAgICAgICAgIEpTT2JqZWN0KiBjYWxsZWUgPSBtX2xvZ1tpXS5j
YWxsZWU7CiAgICAgICAgIGlmIChjYWxsZWUgIT0gUGFja2V0Ojp0YWlsTWFya2VyKCkgJiYgY2Fs
bGVlICE9IFBhY2tldDo6dGhyb3dNYXJrZXIoKSkKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWRSZWFkT25seVBvaW50ZXIoY2FsbGVlKTsKKyAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVHJ1c3RlZChjYWxsZWUpOwogICAgICAgICBpZiAoY2FsbGVlICE9IFBhY2tldDo6dGhy
b3dNYXJrZXIoKSkKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25s
eVBvaW50ZXIobV9sb2dbaV0uc2NvcGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRUcnVz
dGVkKG1fbG9nW2ldLnNjb3BlKTsKICAgICAgICAgaWYgKGNhbGxlZSA9PSBQYWNrZXQ6OnRhaWxN
YXJrZXIoKSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFZhbHVlKCZt
X2xvZ1tpXS50aGlzVmFsdWUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZFJlYWRPbmx5UG9pbnRlcihtX2xvZ1tpXS5jb2RlQmxvY2spOworICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmRUcnVzdGVkKG1fbG9nW2ldLnRoaXNWYWx1ZSk7CisgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFRydXN0ZWQobV9sb2dbaV0uY29kZUJsb2NrKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3N0YWNrLnNpemUoKTsgaS0tOyApIHsKICAgICAg
ICAgRnJhbWUmIGZyYW1lID0gbV9zdGFja1tpXTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZFZhbHVlKCZmcmFtZS50aGlzVmFsdWUpOwotICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGZyYW1lLmNhbGxlZSk7CisgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVHJ1c3RlZChmcmFtZS50aGlzVmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRy
dXN0ZWQoZnJhbWUuY2FsbGVlKTsKICAgICAgICAgaWYgKGZyYW1lLnNjb3BlKQotICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJlYWRPbmx5UG9pbnRlcihmcmFtZS5zY29wZSk7
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoZnJhbWUuc2NvcGUpOwogICAgICAg
ICBpZiAoZnJhbWUuY29kZUJsb2NrKQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZFJlYWRPbmx5UG9pbnRlcihmcmFtZS5jb2RlQmxvY2spOworICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmRUcnVzdGVkKGZyYW1lLmNvZGVCbG9jayk7CiAgICAgfQogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3Bw
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgTWFya2lu
Z0dDQXdhcmVKSVRTdHViUm91dGluZTo6fk1hcmtpbmdHQwogdm9pZCBNYXJraW5nR0NBd2FyZUpJ
VFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fY2VsbHMpCi0gICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZlbnRyeSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKGVudHJ5KTsKIH0KIAog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTI5LDcgKzEyOSw3IEBAIGJvb2wgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZpc2l0
V2UKIHZvaWQgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJ
bnRlcm5hbChTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBmb3IgKGF1dG8mIHZhcmlhbnQg
OiBtX3ZhcmlhbnRzKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdmFyaWFudCk7CisgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHZhcmlhbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsOSAr
NjgsOSBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuCiB7CiAgICAg
QWJzdHJhY3RNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8QWJzdHJhY3RNb2R1bGVS
ZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25tZW50
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RlcGVuZGVuY2llc01hcCk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVFbnZpcm9ubWVudCk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZGVwZW5kZW5jaWVzTWFwKTsKIH0KIAog
dm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcmdMaXN0LmgiCiAKLSNpbmNsdWRlICJIZWFw
Um9vdFZpc2l0b3IuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC01NCwxMyArNTMsMTMgQEAgdm9pZCBB
cmdMaXN0OjpnZXRTbGljZShpbnQgc3RhcnRJbmRleCwgQQogICAgIHJlc3VsdC5tX2FyZ0NvdW50
ID0gIG1fYXJnQ291bnQgLSBzdGFydEluZGV4OwogfQogCi12b2lkIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyOjptYXJrTGlzdHMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IsIExpc3RTZXQm
IG1hcmtTZXQpCit2b2lkIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMoU2xvdFZpc2l0
b3ImIHZpc2l0b3IsIExpc3RTZXQmIG1hcmtTZXQpCiB7CiAgICAgTGlzdFNldDo6aXRlcmF0b3Ig
ZW5kID0gbWFya1NldC5lbmQoKTsKICAgICBmb3IgKExpc3RTZXQ6Oml0ZXJhdG9yIGl0ID0gbWFy
a1NldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIqIGxpc3QgPSAqaXQ7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC0+bV9z
aXplOyArK2kpCi0gICAgICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQocmVpbnRlcnByZXRf
Y2FzdDxKU1ZhbHVlKj4oJmxpc3QtPnNsb3RGb3IoaSkpKTsKKyAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kVHJ1c3RlZChKU1ZhbHVlOjpkZWNvZGUobGlzdC0+c2xvdEZvcihpKSkpOwogICAgIH0K
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZShzbG90Rm9yKG1fc2l6ZSAtIDEpKTsKICAgICB9CiAgICAgICAgIAotICAg
IHN0YXRpYyB2b2lkIG1hcmtMaXN0cyhIZWFwUm9vdFZpc2l0b3ImLCBMaXN0U2V0Jik7CisgICAg
c3RhdGljIHZvaWQgbWFya0xpc3RzKFNsb3RWaXNpdG9yJiwgTGlzdFNldCYpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgZXhwYW5kQ2FwYWNpdHkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgQ2xvbmVkQXJndW1lbnRzOjp2aXNp
dENoaWxkcmVuKEpTQ2UKICAgICBDbG9uZWRBcmd1bWVudHMqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
Q2xvbmVkQXJndW1lbnRzKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGVlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxlZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1l
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJl
Y3RBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5
Nyw3IEBAIHZvaWQgRGlyZWN0QXJndW1lbnRzOjp2aXNpdENoaWxkcmVuKEpTQ2UKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIAogICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPnN0b3JhZ2UoKSwgc3RkOjptYXgodGhpc09iamVjdC0+
bV9sZW5ndGgsIHRoaXNPYmplY3QtPm1fbWluQ2FwYWNpdHkpKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fY2FsbGVlKTsKIAogICAgIGlmIChib29sKiBvdmVycmlkZSA9IHRoaXNPYmplY3QtPm1fb3Zl
cnJpZGVzLmdldCgpKQogICAgICAgICB2aXNpdG9yLm1hcmtBdXhpbGlhcnkob3ZlcnJpZGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXZhbEV4ZWN1dGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V2YWxFeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXZhbEV4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQg
RXZhbEV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICBFdmFsRXhlY3V0YWJsZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBTY3JpcHRFeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkRXZhbENvZGVCbG9jayk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZEV2YWxDb2RlQmxvY2spOwogICAgIGlmIChFdmFs
Q29kZUJsb2NrKiBldmFsQ29kZUJsb2NrID0gdGhpc09iamVjdC0+bV9ldmFsQ29kZUJsb2NrLmdl
dCgpKQogICAgICAgICBldmFsQ29kZUJsb2NrLT52aXNpdFdlYWtseSh2aXNpdG9yKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEV4Y2VwdGlvbjo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV92YWx1ZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV92YWx1ZSk7CiB9CiAKIEV4Y2VwdGlvbjo6RXhjZXB0
aW9uKFZNJiB2bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksOCArODksOCBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJl
bihKCiAgICAgICAgIGNvZGVCbG9ja0ZvckNhbGwtPnZpc2l0V2Vha2x5KHZpc2l0b3IpOwogICAg
IGlmIChGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrRm9yQ29uc3RydWN0ID0gdGhpc09iamVj
dC0+bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCkpCiAgICAgICAgIGNvZGVCbG9ja0ZvckNv
bnN0cnVjdC0+dmlzaXRXZWFrbHkodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9zaW5nbGV0b25GdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV91bmxpbmtlZEV4ZWN1dGFibGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fc2luZ2xldG9uRnVuY3Rpb24pOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBGdW5jdGlvblJhcmVEYXRhOjp2aXNp
dENoaWxkcmVuKEpTQwogCiAgICAgcmFyZURhdGEtPm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgcmFyZURhdGEtPm1faW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZyYXJlRGF0YS0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZChyYXJlRGF0YS0+bV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlKTsKIH0KIAogRnVuY3Rp
b25SYXJlRGF0YTo6RnVuY3Rpb25SYXJlRGF0YShWTSYgdm0pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAgdm9pZCBHZXR0ZXJTZXR0ZXI6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKgogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZXR0ZXIpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9nZXR0ZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2V0dGVy
KTsKIH0KIAogR2V0dGVyU2V0dGVyKiBHZXR0ZXJTZXR0ZXI6OndpdGhHZXR0ZXIoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogbmV3R2V0dGVyKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw4IEBAIHZvaWQgSGFzaE1hcEJ1Y2tldDxE
YXRhPjo6dmlzaXRDaGlsZHJlbigKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25leHQpOwotICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3ByZXYpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fbmV4dCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcmV2
KTsKIAogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKERhdGEpICUgc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikgPT0gMCwgIldlIGFzc3VtZSB0aGF0IHRoZXNlIGFyZSBmaWxsZWQgd2l0aCBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gbWVtYmVycyBvbmx5LiIpOwogICAgIHZpc2l0b3IuYXBwZW5k
VmFsdWVzKGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPigmdGhpc09iamVjdC0+
bV9kYXRhKSwgc2l6ZW9mKERhdGEpIC8gc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpOwpA
QCAtNjcsOCArNjcsOCBAQCB2b2lkIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ+Ojp2aXNpdENo
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9oZWFkKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV90YWlsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2hlYWQpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFpbCk7CiAgICAgCiAgICAgaWYgKEhh
c2hNYXBCdWZmZXJUeXBlKiBidWZmZXIgPSB0aGlzT2JqZWN0LT5tX2J1ZmZlci5nZXQoKSkKICAg
ICAgICAgdmlzaXRvci5tYXJrQXV4aWxpYXJ5KGJ1ZmZlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5mZXJyZWRUeXBlVGFibGUuY3BwCShyZXZpc2lv
biAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmZlcnJlZFR5cGVU
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBJbmZlcnJlZFR5
cGVUYWJsZTo6dmlzaXRDaGlsZHJlbihKUwogICAgICAgICBpZiAoIWVudHJ5LnZhbHVlKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChlbnRyeS52YWx1ZS0+aXNSZWxldmFudCgp
KQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKGVudHJ5LnZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ZW50cnkudmFsdWUuY2xlYXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBJbnRlcm5hbEZ1bmN0aW9uOjp2aXNp
dENoaWxkcmVuKEpTQwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwog
ICAgIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29yaWdpbmFsTmFtZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9vcmlnaW5hbE5hbWUpOwogfQogCiBjb25z
dCBTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCoKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZENvbXBhcmUpOworICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRDb21wYXJlKTsKIH0KIAogc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHNvcnRMb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXpl
X3Qga2V5SW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEludGxDb2xsYXRvckNv
bnN0cnVjdG9yOjp2aXNpdENoaWxkCiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29sbGF0
b3JTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29sbGF0b3JT
dHJ1Y3R1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKCiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
Ym91bmRGb3JtYXQpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYm91bmRGb3Jt
YXQpOwogfQogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Qm91bmRGb3JtYXQoVk0mIHZt
LCBKU0JvdW5kRnVuY3Rpb24qIGZvcm1hdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnZpc2kKIAog
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE51bWJlckZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6dmlzaXRDaGls
ZHJlbihKU0MKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9ib3VuZEZvcm1hdCk7CiB9CiAKIHN0YXRpYyBW
ZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5
SW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwOTg2NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6dmlzaXRDCiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bnVtYmVyRm9ybWF0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X251bWJlckZvcm1hdFN0cnVjdHVyZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jv
dW5kRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsOSArMjA3LDkgQEAgdm9pZCBK
U0JvdW5kRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZQogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
dGFyZ2V0RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2JvdW5k
VGhpcyk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYm91bmRBcmdzKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3RhcmdldEZ1bmN0aW9uKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JvdW5kVGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9ib3VuZEFyZ3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NhbGxlZS5jcHAJKHJldmlzaW9uIDIw
OTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FsbGVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEpTQ2FsbGVlOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZSk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9zY29wZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDcgQEAgQUxXQVlTX0lOTElORSBT
dHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSh2aXNpdG9yLnZtKCkpOwotICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZzdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBw
ZW5kVHJ1c3RlZChjZWxsLT5zdHJ1Y3R1cmUodmlzaXRvci52bSgpKSk7CiB9CiAKIEFMV0FZU19J
TkxJTkUgVk0mIEV4ZWNTdGF0ZTo6dm0oKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6dmlzaXQKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2dldHRlclNldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9nZXR0ZXJTZXR0ZXIpOwogfQogCiB2b2lkIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgQ3VzdG9tR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIsIGNvbnN0IFN0cmluZyYgbmFt
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDggKzIwNyw4IEBAIHZvaWQgSlNGdW5j
dGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGMKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V4ZWN1
dGFibGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2V4ZWN1dGFibGUpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fcmFyZURhdGEpOwogfQogCiBDYWxsVHlwZSBKU0Z1bmN0aW9u
OjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwsIENhbGxEYXRhJiBjYWxsRGF0YSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1OSwxMTEgKzExNTksMTExIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2dsb2JhbFRoaXMpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2xvYmFsVGhp
cyk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dsb2JhbFNjb3Bl
RXh0ZW5zaW9uKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nbG9iYWxDYWxs
ZWUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cENvbnN0cnVjdG9y
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvckNvbnN0cnVjdG9yKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9uYXRpdmVFcnJvclByb3RvdHlwZVN0
cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbmF0aXZlRXJyb3JT
dHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbFNj
b3BlRXh0ZW5zaW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dsb2JhbENh
bGxlZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWdFeHBDb25zdHJ1Y3Rv
cik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9lcnJvckNvbnN0cnVjdG9yKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25hdGl2ZUVycm9yUHJvdG90eXBlU3Ry
dWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25hdGl2ZUVycm9yU3Ry
dWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX2V2YWxFcnJvckNvbnN0cnVjdG9yLnZpc2l0KHZp
c2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JhbmdlRXJyb3JDb25z
dHJ1Y3Rvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yYW5nZUVycm9yQ29u
c3RydWN0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3Rvci52
aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3N5bnRheEVycm9yQ29uc3RydWN0b3Iu
dmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdHlwZUVy
cm9yQ29uc3RydWN0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fVVJJRXJyb3JDb25zdHJ1Y3Rvci52
aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RD
b25zdHJ1Y3Rvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZUNv
bnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdENvbnN0
cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb21pc2VDb25zdHJ1
Y3Rvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVu
Y3Rpb24pOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5j
dGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rp
b24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNldHRlckZ1bmN0aW9u
KTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24p
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V2YWxGdW5jdGlvbik7Ci0gICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbEZ1bmN0aW9uKTsKLSAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcHBseUZ1bmN0aW9uKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3BhcnNlSW50RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2NhbGxGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9h
cHBseUZ1bmN0aW9uKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Rocm93VHlw
ZUVycm9yRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1RvU3RyaW5nRnVu
Y3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9hcnJheVByb3RvVmFsdWVz
RnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pbml0aWFsaXplUHJv
bWlzZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faXRlcmF0b3JQ
cm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9u
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5
RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90
b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBl
RXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJT
ZXR0ZXIpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50
c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9tb2R1bGVMb2FkZXIpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fb2JqZWN0UHJvdG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9m
dW5jdGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJy
YXlQcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yUHJv
dG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3Rv
dHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRv
clByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXN5bmNGdW5j
dGlvblByb3RvdHlwZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxl
TG9hZGVyUHJvdG90eXBlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVj
dFByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblBy
b3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheVByb3RvdHlw
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9lcnJvclByb3RvdHlwZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOwor
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUp
OwogCiAgICAgdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fd2l0aFNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9sZXhpY2FsRW52
aXJvbm1lbnRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3Ry
aWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fbGV4aWNhbEVudmlyb25tZW50U3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX21v
ZHVsZUVudmlyb25tZW50U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2RpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFN0cnVjdHVyZUZvck9iamVj
dENvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2RpcmVjdEFy
Z3VtZW50c1N0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zY29w
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX29iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZJbmRleGluZ1NoYXBlczsgKytpKQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdTaGFwZVtpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb3JpZ2lu
YWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hhcGVbaV0pOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBOdW1iZXJPZkluZGV4aW5nU2hhcGVzOyArK2kpCi0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZUR1cmlu
Z0FsbG9jYXRpb25baV0pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Fy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZUR1cmluZ0FsbG9jYXRpb25baV0pOwogICAgIHRo
aXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
ICAgICB0aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNp
dG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9wZXJ0
eU5hbWVJdGVyYXRvclN0cnVjdHVyZSk7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICB0
aGlzT2JqZWN0LT5tX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAjZW5kaWYKICAgICB0aGlzT2JqZWN0LT5tX251bGxQcm90b3R5cGVPYmplY3RTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
ZXJyb3JTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxl
ZVN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25T
dHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FsbGVlU3RydWN0dXJlKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uU3RydWN0dXJlKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fYm91bmRGdW5jdGlvblN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZXR0ZXJTZXR0
ZXJTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZ2V0dGVyU2V0
dGVyU3RydWN0dXJlKTsKICAgICB0aGlzT2JqZWN0LT5tX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0
dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fbmFtZWRGdW5jdGlvblN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3JlZ0V4cFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUpOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZFN0cnVjdHVyZSk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xsYXJWTVN0cnVjdHVyZSk7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RT
dHJ1Y3R1cmUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3h5UmV2b2tl
U3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2Fk
ZXJTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc3ltYm9sT2Jq
ZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0
cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5j
dGlvblN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc3luY0Z1
bmN0aW9uU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXJh
dG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3Byb3h5T2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJveHlSZXZva2VTdHJ1Y3R1cmUpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyU3RydWN0dXJlKTsKICAgICAK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9hcnJheUJ1ZmZlclByb3RvdHlwZSk7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUp
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJv
dG90eXBlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1
ZmZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUJ1
ZmZlclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hcnJheUJ1
ZmZlclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zaGFyZWRB
cnJheUJ1ZmZlclByb3RvdHlwZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9z
aGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZSk7CiAKICNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUo
Q2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUs
IHByb3RvdHlwZUJhc2UpIFwKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV8gIyMg
bG93ZXJOYW1lICMjIFByb3RvdHlwZSk7IFwKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUpOyBcCisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZSk7IFwKKyAgICB2aXNpdG9y
LmFwcGVuZCh0aGlzT2JqZWN0LT5tXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZSk7IFwKIAog
ICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoVklTSVRfU0lNUExFX1RZUEUpCiAgICAg
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX3dlYkFzc2VtYmx5U3RydWN0dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV93ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fd2ViQXNzZW1ibHlGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV93ZWJBc3NlbWJseVN0cnVjdHVyZSk7CisgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV93ZWJBc3NlbWJseU1vZHVsZVJlY29yZFN0cnVjdHVy
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV93ZWJBc3NlbWJseUZ1bmN0aW9u
U3RydWN0dXJlKTsKICAgICBGT1JfRUFDSF9XRUJBU1NFTUJMWV9DT05TVFJVQ1RPUl9UWVBFKFZJ
U0lUX1NJTVBMRV9UWVBFKQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIApAQCAtMTI4
MCw3ICsxMjgwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAog
ICAgIGZvciAodW5zaWduZWQgaSA9IE5VTUJFUl9PRl9UWVBFRF9BUlJBWV9UWVBFUzsgaS0tOykK
ICAgICAgICAgdGhpc09iamVjdC0+bGF6eVR5cGVkQXJyYXlTdHJ1Y3R1cmUoaW5kZXhUb1R5cGVk
QXJyYXlUeXBlKGkpKS52aXNpdCh2aXNpdG9yKTsKICAgICAKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zcGVjaWVzR2V0dGVyU2V0dGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX3NwZWNpZXNHZXR0ZXJTZXR0ZXIpOwogICAgIHRoaXNPYmplY3QtPm1fdHlw
ZWRBcnJheVByb3RvLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdHlwZWRBcnJh
eVN1cGVyQ29uc3RydWN0b3IudmlzaXQodmlzaXRvcik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNYXBJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDggQEAgdm9pZCBKU01hcEl0ZXJhdG9yOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbAogICAgIEpTTWFwSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNN
YXBJdGVyYXRvcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0
b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcCk7Ci0gICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9tYXApOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1faXRlcik7CiB9
CiAKIEpTVmFsdWUgSlNNYXBJdGVyYXRvcjo6Y3JlYXRlUGFpcihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAkocmV2aXNpb24g
MjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBKU01vZHVsZUVu
dmlyb25tZW50Ojp2aXNpdENoaWxkcmVuKAogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNlbGwpOwogICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXModGhpc09iamVjdC0+dmFyaWFibGVzKCksIHRoaXNPYmplY3QtPnN5bWJvbFRhYmxlKCktPnNj
b3BlU2l6ZSgpKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bW9kdWxlUmVjb3Jk
U2xvdCgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tb2R1bGVSZWNvcmRTbG90
KCkpOwogfQogCiBib29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAy
MDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZAogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX21vZHVsZVJlY29yZCk7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBKU01vZHVsZVJl
Y29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbAogewogICAgIEpTTW9kdWxlUmVjb3JkKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNv
cmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTmF0aXZlU3RkRnVuY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNOYXRpdmVTdGRGdW5j
dGlvbjo6dmlzaXRDaGlsZHJlbigKICAgICBKU05hdGl2ZVN0ZEZ1bmN0aW9uKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTmF0aXZlU3RkRnVuY3Rpb24qPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9mdW5jdGlvbkNlbGwpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZnVuY3Rp
b25DZWxsKTsKIH0KIAogdm9pZCBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGludCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBmdW5jdGlvbkNlbGwpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDk4
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0OSw3ICsxNDksNyBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNP
YmplY3Q6OnZpc2l0CiAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlc0hpZGRlbihidXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpLT5tX3ZlY3RvciwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9y
TGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1f
c3BhcnNlTWFwKQotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZidXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXApOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQxMSw3ICs0
MTEsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogSlNPYmplY3Q6OnZpc2l0CiAgICAgICAg
IGRlZmF1bHQ6IC8vIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTCiAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlc0hpZGRlbihidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3ZlY3RvciwgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkpOwogICAg
ICAgICAgICAgaWYgKGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKQotICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X3NwYXJzZU1hcCk7CisgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoYnV0dGVyZmx5LT5h
cnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VEZWZlcnJlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9taXNlRGVmZXJyZWQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VEZWZlcnJlZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMSw5ICsxMjEsOSBAQCB2b2lkIEpTUHJvbWlzZURlZmVycmVkOjp2aXNpdENo
aWxkcmVuKEpTCiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogCi0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvbWlzZSk7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVzb2x2ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fcmVqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X3Byb21pc2UpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVzb2x2ZSk7Cisg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9yZWplY3QpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCArOTIsOCBAQCB2b2lkIEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcjo6dmlzaXRDaGlsCiAgICAgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcio+KGNlbGwpOwogICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soKnRoaXNPYmplY3QpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5TmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3BlcnR5TmFtZXNbaV0pOwotICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Byb3RvdHlwZUNoYWluKTsKKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9wcm9wZXJ0eU5hbWVzW2ldKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCh0aGlzT2JqZWN0LT5tX3Byb3RvdHlwZUNoYWluKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDggKzgyLDggQEAgdm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp2aXNp
dENoaWxkcgogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJh
dGVkT2JqZWN0KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2l0ZXJhdGVk
T2JqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3BlcnR5TmFtZUVu
dW1lcmF0b3IpOwogfQogCiBib29sIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om5leHQoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlJiBvdXRwdXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3h5LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgdm9pZCBKU1Byb3h5Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbAogICAgIEpTUHJveHkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3RhcmdldCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YXJnZXQpOwogfQog
CiB2b2lkIEpTUHJveHk6OnNldFRhcmdldChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAko
cmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBKU1Njb3BlOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbAogICAgIEpTU2NvcGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNTY29wZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX25leHQpOworICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbmV4dCk7CiB9CiAKIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBm
b3VuZCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdGVybWluYXRlIG9wdGltaXphdGlvbi4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Q6OnZp
c2l0Q2hpCiAgICAgLy8gcmVsYXRpdmVseSBlYXNpbHkuCiAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayh0aGlzT2JqZWN0LT5tX2xvY2spOwogICAgIGZvciAodW5zaWduZWQgaSA9IHRoaXNPYmpl
Y3QtPm1fdmFyaWFibGVzLnNpemUoKTsgaS0tOykKLSAgICAgICAgc2xvdFZpc2l0b3IuYXBwZW5k
SGlkZGVuKCZ0aGlzT2JqZWN0LT5tX3ZhcmlhYmxlc1tpXSk7CisgICAgICAgIHNsb3RWaXNpdG9y
LmFwcGVuZEhpZGRlbih0aGlzT2JqZWN0LT5tX3ZhcmlhYmxlc1tpXSk7CiB9CiAKIHZvaWQgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6aGVhcFNuYXBzaG90KEpTQ2VsbCogY2VsbCwgSGVhcFNu
YXBzaG90QnVpbGRlciYgYnVpbGRlcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2V0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2V0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NldEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsOCArNDUsOCBAQCB2b2lkIEpTU2V0SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
CiAgICAgSlNTZXRJdGVyYXRvciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1NldEl0ZXJhdG9yKj4o
Y2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkp
OwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc2V0KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9pdGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NldCk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pdGVyKTsKIH0KIAogSlNWYWx1ZSBK
U1NldEl0ZXJhdG9yOjpjcmVhdGVQYWlyKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDExICsxMDQsMTEgQEAg
dm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbAogdm9pZCBKU1JvcGVTdHJp
bmc6OnZpc2l0RmliZXJzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGlmIChpc1N1YnN0
cmluZygpKSB7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZzdWJzdHJpbmdCYXNlKCkpOworICAg
ICAgICB2aXNpdG9yLmFwcGVuZChzdWJzdHJpbmdCYXNlKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgg
JiYgZmliZXIoaSk7ICsraSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJmZpYmVyKGkpKTsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQoZmliZXIoaSkpOwogfQogCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4TGVuZ3RoRm9yT25TdGFja1Jlc29sdmUgPSAyMDQ4OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9s
VGFibGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgSlNT
eW1ib2xUYWJsZU9iamVjdDo6dmlzaXRDaGlsZHJlbigKICAgICBKU1N5bWJvbFRhYmxlT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihjZWxsKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9zeW1ib2xUYWJsZSk7CiB9CiAKIGJvb2wgSlNTeW1ib2xUYWJsZU9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dlYWtNYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha01h
cC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTV2Vha01hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBKU1dl
YWtNYXA6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZQogewogICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4oY2VsbCwgdmlzaXRvcik7CiAgICAgSlNXZWFrTWFwKiB0aGlzT2JqID0ganNDYXN0PEpTV2Vh
a01hcCo+KGNlbGwpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqLT5tX3dlYWtNYXBEYXRh
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqLT5tX3dlYWtNYXBEYXRhKTsKIH0KIAogU3Ry
aW5nIEpTV2Vha01hcDo6dG9TdHJpbmdOYW1lKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV2Vha1NldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0LmNwcAkocmV2
aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXZWFrU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEpTV2Vha1NldDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlCiB7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2
aXNpdG9yKTsKICAgICBKU1dlYWtTZXQqIHRoaXNPYmogPSBqc0Nhc3Q8SlNXZWFrU2V0Kj4oY2Vs
bCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmotPm1fd2Vha01hcERhdGEpOworICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmotPm1fd2Vha01hcERhdGEpOwogfQogCiBTdHJpbmcgSlNXZWFr
U2V0Ojp0b1N0cmluZ05hbWUoY29uc3QgSlNDOjpKU09iamVjdCosIEV4ZWNTdGF0ZSopCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNXaXRoU2NvcGUuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dpdGhTY29w
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBKU1dpdGhTY29wZTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIAogICAgIEpTV2l0aFNjb3BlKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTV2l0aFNjb3BlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwg
dmlzaXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0KTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdCk7CiB9CiAKIFN0cnVjdHVyZSog
SlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1dyYXBwZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCBKU1dyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZQogICAgIEpTV3JhcHBlck9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1dyYXBw
ZXJPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7CiAgICAgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJuYWxWYWx1ZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRlcm5hbFZhbHVlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
YXp5Q2xhc3NTdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0xhenlDbGFzc1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xhenlDbGFzc1N0cnVjdHVyZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRp
YWxpemVyOjpzZQogdm9pZCBMYXp5Q2xhc3NTdHJ1Y3R1cmU6OnZpc2l0KFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIG1fc3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKCZtX2NvbnN0cnVjdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2NvbnN0cnVjdG9y
KTsKIH0KIAogdm9pZCBMYXp5Q2xhc3NTdHJ1Y3R1cmU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xhenlQcm9wZXJ0eUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MYXp5
UHJvcGVydHlJbmxpbmVzLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xhenlQcm9wZXJ0eUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lIEVsCiB2b2lk
IExhenlQcm9wZXJ0eTxPd25lclR5cGUsIEVsZW1lbnRUeXBlPjo6dmlzaXQoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgaWYgKG1fcG9pbnRlciAmJiAhKG1fcG9pbnRlciAmIGxhenlUYWcp
KQotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlQb2ludGVyKGJpdHdp
c2VfY2FzdDxFbGVtZW50VHlwZSo+KG1fcG9pbnRlcikpOworICAgICAgICB2aXNpdG9yLmFwcGVu
ZFRydXN0ZWQoYml0d2lzZV9jYXN0PEVsZW1lbnRUeXBlKj4obV9wb2ludGVyKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgRWxlbWVudFR5cGU+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBCYXNlLmNwcAkocmV2aXNpb24gMjA5ODY3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBNYXBCYXNlPEhhc2hNYXBCdWNrZXRUeXBlPjo6
dmlzaXRDaAogewogICAgIE1hcEJhc2UqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxNYXBCYXNl
Kj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXApOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fbWFwKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBC
dWNrZXRUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU6OnZpc2l0Q2hpbGQKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBTY3JpcHRFeGVjdXRh
YmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayk7Ci0gICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJs
ZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2spOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiAgICAgaWYgKE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIG1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sgPSB0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1Db2RlQmxv
Y2suZ2V0KCkpCiAgICAgICAgIG1vZHVsZVByb2dyYW1Db2RlQmxvY2stPnZpc2l0V2Vha2x5KHZp
c2l0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cjo6dmlzaXRDaGlsZHIKICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0g
anNDYXN0PE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9lcnJvclN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9lcnJv
clN0cnVjdHVyZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50ZXJwcmV0
ZXI6OmNvbnN0cnVjdFdpdGhOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIw
Myw3IEBAIHZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlMKICAgICBQcm9n
cmFtRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KGNl
bGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
ICAgICBTY3JpcHRFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3VubGlua2VkUHJvZ3JhbUNvZGVC
bG9jayk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZFByb2dyYW1D
b2RlQmxvY2spOwogICAgIGlmIChQcm9ncmFtQ29kZUJsb2NrKiBwcm9ncmFtQ29kZUJsb2NrID0g
dGhpc09iamVjdC0+bV9wcm9ncmFtQ29kZUJsb2NrLmdldCgpKQogICAgICAgICBwcm9ncmFtQ29k
ZUJsb2NrLT52aXNpdFdlYWtseSh2aXNpdG9yKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE1Nyw4ICsxMTU3LDggQEAgdm9pZCBQcm94eU9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGFyZ2V0KTsKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9oYW5kbGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3RhcmdldCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9oYW5kbGVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eVJldm9rZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJveHlSZXZva2UuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBQcm94eVJldm9rZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIAogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNl
Ojp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCi0gICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fcHJveHkpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fcHJveHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAkocmV2aXNp
b24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTMgKzMzLDEzIEBAIG5hbWVzcGFjZSBK
U0MgewogCiB2b2lkIFJlZ0V4cENhY2hlZFJlc3VsdDo6dmlzaXRDaGlsZHJlbihTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9sYXN0SW5wdXQpOwotICAgIHZp
c2l0b3IuYXBwZW5kKCZtX2xhc3RSZWdFeHApOworICAgIHZpc2l0b3IuYXBwZW5kKG1fbGFzdElu
cHV0KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2xhc3RSZWdFeHApOwogICAgIGlmIChtX3JlaWZp
ZWQpIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZElucHV0KTsKLSAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fcmVpZmllZFJlc3VsdCk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZtX3JlaWZpZWRMZWZ0Q29udGV4dCk7Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX3JlaWZp
ZWRSaWdodENvbnRleHQpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3JlaWZpZWRJbnB1dCk7
CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fcmVpZmllZFJlc3VsdCk7CisgICAgICAgIHZpc2l0
b3IuYXBwZW5kKG1fcmVpZmllZExlZnRDb250ZXh0KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
bV9yZWlmaWVkUmlnaHRDb250ZXh0KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFJlZ0V4cE9iamVjdDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqCiAgICAgUmVnRXhwT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE9i
amVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cCk7Ci0gICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fbGFzdEluZGV4KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX3JlZ0V4cCk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9sYXN0
SW5kZXgpOwogfQogCiBib29sIFJlZ0V4cE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVnRXhwUHJvdG90eXBlOjp2aXNpdENoaWxkcmVuKEpT
Q2UKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lbXB0eVJlZ0V4cCk7CisgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9lbXB0eVJlZ0V4cCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxOSw3ICs1MTksNyBA
QCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnZpc2l0KFNsb3RWaXNpdG9yCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9sb2NrLmlzTG9ja2VkKCkpOwogICAgIGZvciAoSlNDZWxsKiBjZWxsIDogbV9s
aXZlQ2VsbFBvaW50ZXJzKQotICAgICAgICBzbG90VmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFJl
YWRPbmx5UG9pbnRlcihjZWxsKTsKKyAgICAgICAgc2xvdFZpc2l0b3IuYXBwZW5kVHJ1c3RlZChj
ZWxsKTsKIH0KIAogdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpzaHV0ZG93bigpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAJKHJl
dmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFy
Z3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFNjb3Bl
ZEFyZ3VtZW50czo6dmlzaXRDaGlsZHJlbihKU0NlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxs
ZWUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3RhYmxlKTsKLSAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zY29wZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c09iamVjdC0+bV9jYWxsZWUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdGFi
bGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2NvcGUpOwogICAgIAogICAg
IGlmICh0aGlzT2JqZWN0LT5tX3RvdGFsTGVuZ3RoID4gdGhpc09iamVjdC0+bV90YWJsZS0+bGVu
Z3RoKCkpIHsKICAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMoCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTbWFsbFN0cmluZ3MuaCIKIAotI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5oIgogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCkBAIC05MywxNSArOTIsMTUgQEAgdm9pZCBTbWFsbFN0cmluZ3M6Omlu
aXRpYWxpemVDb21tb25TdHJpbgogdm9pZCBTbWFsbFN0cmluZ3M6OnZpc2l0U3Ryb25nUmVmZXJl
bmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBtX25lZWRzVG9CZVZpc2l0ZWQgPSBm
YWxzZTsKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmbV9lbXB0eVN0cmlu
Zyk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fZW1wdHlTdHJpbmcpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nOyArK2kpCi0gICAg
ICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKG1fc2luZ2xlQ2hhcmFjdGVyU3Ry
aW5ncyArIGkpOwotI2RlZmluZSBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUKG5h
bWUpIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZtXyMjbmFtZSk7CisgICAgICAg
IHZpc2l0b3IuYXBwZW5kVHJ1c3RlZChtX3NpbmdsZUNoYXJhY3RlclN0cmluZ3NbaV0pOworI2Rl
ZmluZSBKU0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUKG5hbWUpIHZpc2l0b3IuYXBw
ZW5kVHJ1c3RlZChtXyMjbmFtZSk7CiAgICAgSlNDX0NPTU1PTl9TVFJJTkdTX0VBQ0hfTkFNRShK
U0NfQ09NTU9OX1NUUklOR1NfQVRUUklCVVRFX1ZJU0lUKQogI3VuZGVmIEpTQ19DT01NT05fU1RS
SU5HU19BVFRSSUJVVEVfVklTSVQKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRl
cigmbV9vYmplY3RTdHJpbmdTdGFydCk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBv
aW50ZXIoJm1fbnVsbE9iamVjdFN0cmluZyk7Ci0gICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZFBvaW50ZXIoJm1fdW5kZWZpbmVkT2JqZWN0U3RyaW5nKTsKKyAgICB2aXNpdG9yLmFwcGVuZFRy
dXN0ZWQobV9vYmplY3RTdHJpbmdTdGFydCk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1f
bnVsbE9iamVjdFN0cmluZyk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKG1fdW5kZWZpbmVk
T2JqZWN0U3RyaW5nKTsKIH0KIAogU21hbGxTdHJpbmdzOjp+U21hbGxTdHJpbmdzKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDcgKzIw
Miw3IEBAIHZvaWQgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6dmlzaXRDaGlsZHJlbigKICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKCp0aGlzTWFwKTsKICAgICBpdGVyYXRvciBlbmQgPSB0aGlzTWFw
LT5tX21hcC5lbmQoKTsKICAgICBmb3IgKGl0ZXJhdG9yIGl0ID0gdGhpc01hcC0+bV9tYXAuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnZhbHVl
KTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoaXQtPnZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjAsMjUgKzEwNjAsMjUgQEAgdm9pZCBT
dHJ1Y3R1cmU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZQogICAgIAogICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIodGhpc09iamVjdC0+bV9sb2NrKTsKICAgICAKLSAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9nbG9iYWxPYmplY3QpOworICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPmlzT2JqZWN0
KCkpCiAgICAgICAgIHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uY2xlYXIoKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvdG90
eXBlKTsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90
eXBlQ2hhaW4pOworICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3Byb3RvdHlw
ZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvdG90eXBl
Q2hhaW4pOwogICAgIH0KLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2aW91
c09yUmFyZURhdGEpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJldmlvdXNP
clJhcmVEYXRhKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc1Bpbm5lZFByb3BlcnR5VGFibGUo
KSB8fCB0aGlzT2JqZWN0LT5pc0FkZGluZ1Byb3BlcnR5Rm9yVHJhbnNpdGlvbigpKSB7CiAgICAg
ICAgIC8vIE5PVEU6IFRoaXMgY2FuIGludGVybGVhdmUgaW4gcGluKCksIGluIHdoaWNoIGNhc2Ug
aXQgbWF5IHNlZSBhIG51bGwgcHJvcGVydHkgdGFibGUuCiAgICAgICAgIC8vIFRoYXQncyBmaW5l
LCBiZWNhdXNlIHRoZW4gdGhlIGJhcnJpZXIgd2lsbCBmaXJlIGFuZCB3ZSB3aWxsIHNjYW4gdGhp
cyBhZ2Fpbi4KLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlU
YWJsZVVuc2FmZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvcGVy
dHlUYWJsZVVuc2FmZSk7CiAgICAgfSBlbHNlIGlmICh2aXNpdG9yLmlzQnVpbGRpbmdIZWFwU25h
cHNob3QoKSkKLSAgICAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJvcGVydHlU
YWJsZVVuc2FmZSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcHJvcGVy
dHlUYWJsZVVuc2FmZSk7CiAgICAgZWxzZSBpZiAodGhpc09iamVjdC0+bV9wcm9wZXJ0eVRhYmxl
VW5zYWZlKQogICAgICAgICB0aGlzT2JqZWN0LT5tX3Byb3BlcnR5VGFibGVVbnNhZmUuY2xlYXIo
KTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luZmVycmVkVHlwZVRhYmxl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luZmVycmVkVHlwZVRhYmxlKTsK
IH0KIAogYm9vbCBTdHJ1Y3R1cmU6OmlzQ2hlYXBEdXJpbmdHQygpCkBAIC0xMDk2LDcgKzEwOTYs
NyBAQCBib29sIFN0cnVjdHVyZTo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImCiAgICAgaWYgKCFp
c0NoZWFwRHVyaW5nR0MoKSkKICAgICAgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkQ29uY3VycmVu
dGx5KHRoaXMpOwogICAgIAotICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRSZWFkT25seVBv
aW50ZXIodGhpcyk7CisgICAgdmlzaXRvci5hcHBlbmRUcnVzdGVkKHRoaXMpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcg
KzUxLDcgQEAgdm9pZCBTdHJ1Y3R1cmVDaGFpbjo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIGlm
IChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogdmVjdG9yID0gdGhpc09iamVjdC0+bV92ZWN0b3Iu
Z2V0KCkpIHsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAgICB3aGlsZSAodmVjdG9yW2ld
KQotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJnZlY3RvcltpKytdKTsKKyAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHZlY3RvcltpKytdKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAJKHJl
dmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsOSBAQCB2b2lkIFN0cnVj
dHVyZVJhcmVEYXRhOjp2aXNpdENoaWxkcmVuKEpTCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3By
ZXZpb3VzKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RUb1N0cmlu
Z1ZhbHVlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3ByZXZp
b3VzKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29iamVjdFRvU3RyaW5nVmFs
dWUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY2FjaGVkUHJvcGVydHlOYW1l
RW51bWVyYXRvcik7CiB9CiAKIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogU3RydWN0dXJlUmFy
ZURhdGE6OmNhY2hlZFByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsMTEgKzEwMSwxMSBAQCB2b2lkIFN5bWJvbFRhYmxlOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogCiB7CiAgICAgU3ltYm9sVGFibGUqIHRoaXNTeW1ib2xUYWJsZSA9
IGpzQ2FzdDxTeW1ib2xUYWJsZSo+KHRoaXNDZWxsKTsKICAgICAKLSAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc1N5bWJvbFRhYmxlLT5tX2FyZ3VtZW50cyk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNTeW1ib2xUYWJsZS0+bV9zaW5nbGV0b25TY29wZSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhp
c1N5bWJvbFRhYmxlLT5tX2FyZ3VtZW50cyk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc1N5bWJv
bFRhYmxlLT5tX3NpbmdsZXRvblNjb3BlKTsKICAgICAKICAgICBpZiAodGhpc1N5bWJvbFRhYmxl
LT5tX3JhcmVEYXRhKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc1N5bWJvbFRhYmxlLT5t
X3JhcmVEYXRhLT5tX2NvZGVCbG9jayk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNTeW1i
b2xUYWJsZS0+bV9yYXJlRGF0YS0+bV9jb2RlQmxvY2spOwogICAgIAogICAgIC8vIFNhdmUgc29t
ZSBtZW1vcnkuIFRoaXMgaXMgTyhuKSB0byByZWJ1aWxkIGFuZCB3ZSBkbyBzbyBvbiB0aGUgZmx5
LgogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodGhpc1N5bWJvbFRhYmxlLT5tX2xvY2sp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTAgKzEwNCwx
MCBAQCB2b2lkIFR5cGVQcm9maWxlckxvZzo6cHJvY2Vzc0xvZ0VudHJpZXMoCiB2b2lkIFR5cGVQ
cm9maWxlckxvZzo6dmlzaXQoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChMb2dF
bnRyeSogZW50cnkgPSBtX2xvZ1N0YXJ0UHRyOyBlbnRyeSAhPSBtX2N1cnJlbnRMb2dFbnRyeVB0
cjsgKytlbnRyeSkgewotICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUmVhZE9ubHlW
YWx1ZShlbnRyeS0+dmFsdWUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZFRydXN0ZWQoZW50cnkt
PnZhbHVlKTsKICAgICAgICAgaWYgKFN0cnVjdHVyZUlEIGlkID0gZW50cnktPnN0cnVjdHVyZUlE
KSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZpc2l0b3IuaGVhcCgpLT5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KGlkKTsgCi0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkUmVhZE9ubHlQb2ludGVyKHN0cnVjdHVyZSk7CisgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFRydXN0ZWQoc3RydWN0dXJlKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5jcHAJKHJldmlzaW9u
IDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgV2Vha01hcERhdGE6OkRl
YWRLZXlDbGVhbmVyOjp2aXNpdFcKICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChpdC0+a2V5
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBtX2xpdmVLZXlDb3VudCsrOwotICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmaXQtPnZhbHVlKTsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQo
aXQtPnZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQobV9saXZlS2V5Q291bnQgPD0g
bV90YXJnZXQtPm1fbWFwLnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDIwOTg2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJ
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCB2b2lkIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZTo6dmlzaXRDaGlsZHJlCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGUpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9i
amVjdCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWVtb3J5KTsKLSAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90YWJsZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9tb2R1bGUpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
bW9kdWxlTmFtZXNwYWNlT2JqZWN0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X21lbW9yeSk7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV90YWJsZSk7CiAgICAg
dmlzaXRvci5yZXBvcnRFeHRyYU1lbW9yeVZpc2l0ZWQodGhpc09iamVjdC0+bW9kdWxlKCktPm1v
ZHVsZUluZm9ybWF0aW9uKCkuZ2xvYmFscy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0aGlzT2JqZWN0LT5tX251bUltcG9ydEZ1bmN0aW9uczsgKytpKQotICAgICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CisgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCp0aGlzT2JqZWN0LT5pbXBvcnRGdW5jdGlvbihpKSk7CiB9CiAKIGNvbnN0
IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
Lkluc3RhbmNlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFz
c2VtYmx5SW5zdGFuY2UpIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TWVtb3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBKU1dlYkFzc2VtYmx5TWVtb3J5Ojp2
aXNpdENoaWxkcmVuKAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKIAogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7
Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYnVmZmVyV3JhcHBlcik7CisgICAg
dmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9idWZmZXJXcmFwcGVyKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDExICs3OSw5IEBAIHZvaWQgSlNXZWJBc3NlbWJseU1vZHVsZTo6dmlzaXRD
aGlsZHJlbigKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CiAKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2V4cG9ydFN5bWJvbFRhYmxlKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGhpc09iamVjdC0+bV9jYWxsZWVDb3VudCAqIDI7IGkr
KykgewotICAgICAgICBXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNhbGxlZT4qIGNhbGxlZSA9
ICZ0aGlzT2JqZWN0LT5jYWxsZWVzKClbaV07Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKGNhbGxl
ZSk7Ci0gICAgfQorICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fZXhwb3J0U3ltYm9s
VGFibGUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5tX2NhbGxl
ZUNvdW50ICogMjsgaSsrKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5jYWxs
ZWVzKClbaV0pOwogCiAgICAgdmlzaXRvci5hZGRVbmNvbmRpdGlvbmFsRmluYWxpemVyKCZ0aGlz
T2JqZWN0LT5tX3VuY29uZGl0aW9uYWxGaW5hbGl6ZXIpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCShyZXZp
c2lvbiAyMDk4NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgSlNXZWJB
c3NlbWJseVRhYmxlOjp2aXNpdENoaWxkcmVuKEoKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRoaXNP
YmplY3QtPm1fc2l6ZTsgKytpKQotICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9qc0Z1bmN0aW9ucy5nZXQoKVtpXSk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmpl
Y3QtPm1fanNGdW5jdGlvbnMuZ2V0KClbaV0pOwogfQogCiBib29sIEpTV2ViQXNzZW1ibHlUYWJs
ZTo6Z3Jvdyh1aW50MzJfdCBuZXdTaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwOTg2
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsOSArMTY1LDkgQEAgdm9pZCBXZWJBc3NlbWJseUZ1
bmN0aW9uOjp2aXNpdENoaWxkcmVuKAogICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2luc3RhbmNlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9qc0VudHJ5
cG9pbnQpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3dhc21FbnRyeXBvaW50
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2pzRW50cnlwb2ludCk7CisgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV93YXNtRW50cnlwb2ludCk7CiB9CiAKIHZvaWQgV2ViQXNzZW1ibHlG
dW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseUNhbGxlZSoganNFbnRyeXBvaW50LCBKU1dl
YkFzc2VtYmx5Q2FsbGVlKiB3YXNtRW50cnlwb2ludCwgV2FzbTo6U2lnbmF0dXJlKiBzaWduYXR1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDk4NjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6
dmlzaXRDaGlsZAogewogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9pbnN0YW5jZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fc3Rh
cnRGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnN0YW5jZSk7
CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAog
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTYtMTItMTUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBHZXQgcmlkIG9mIEhlYXBSb290VmlzaXRvciBhbmQgbWFrZSBTbG90VmlzaXRvciBs
ZXNzIHBhaW5mdWwgdG8gdXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjU5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgYmVoYXZpb3IuCisgICAgICAg
IAorICAgICAgICBUaGlzIHVwZGF0ZXMgV2ViQ29yZSBjb2RlIHRvIG5ldyBKU0MgQVBJLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAxNi0xMi0xNSAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIGNsZWFyIFJlbmRl
ckxheWVyIGJhY2tpbmcgc3RvcmVzIHdoZW4gZ29pbmcgaW50byBwYWdlIGNhY2hlLgpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAy
MDk4NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lkIERPTUNvbnN0cnVjdG9ySlNC
dWlsdGluT2JqZWN0Ojp2aXNpCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxET01Db25z
dHJ1Y3RvckpTQnVpbHRpbk9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNP
YmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luaXRp
YWxpemVGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbml0aWFs
aXplRnVuY3Rpb24pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA5ODY3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTEsMTAgKzE5MSwxMCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTCiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhpc09i
amVjdC0+bV9nY0xvY2spOwogICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUg
OiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKGxvY2tlcikudmFsdWVzKCkpCi0gICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHN0
cnVjdHVyZSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8mIGNvbnN0cnVjdG9yIDogdGhp
c09iamVjdC0+Y29uc3RydWN0b3JzKGxvY2tlcikudmFsdWVzKCkpCi0gICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmY29uc3RydWN0b3IpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoY29u
c3RydWN0b3IpOwogICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiBkZWZlcnJlZFByb21pc2Ug
OiB0aGlzT2JqZWN0LT5kZWZlcnJlZFByb21pc2VzKGxvY2tlcikpCiAgICAgICAgICAgICBkZWZl
cnJlZFByb21pc2UtPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgJKHJldmlzaW9uIDIwOTg2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3VzcGVuZGVkKCkgeyByZXR1cm4gIW1f
ZGVmZXJyZWQgfHwgIWNhbkludm9rZUNhbGxiYWNrKCk7IH0gLy8gVGhlIHdyYXBwZXIgd29ybGQg
aGFzIGdvbmUgYXdheSBvciBhY3RpdmUgRE9NIG9iamVjdHMgaGF2ZSBiZWVuIHN1c3BlbmRlZC4K
ICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxP
YmplY3QuZ2V0KCk7IH0KIAotICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoSlNDOjpTbG90VmlzaXRv
ciYgdmlzaXRvcikgeyB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkV2VhaygmbV9kZWZlcnJlZCk7
IH0KKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpIHsg
dmlzaXRvci5hcHBlbmQobV9kZWZlcnJlZCk7IH0KIAogcHJpdmF0ZToKICAgICBEZWZlcnJlZFBy
b21pc2UoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTUHJvbWlzZURlZmVycmVkJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJl
dmlzaW9uIDIwOTg2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBKU0V2ZW50TGlz
dGVuZXI6OnZpc2l0SlNGdW5jdGlvbihTbAogICAgIGlmICghbV93cmFwcGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkV2VhaygmbV9qc0Z1bmN0aW9u
KTsKKyAgICB2aXNpdG9yLmFwcGVuZChtX2pzRnVuY3Rpb24pOwogfQogCiB2b2lkIEpTRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgRXZlbnQqIGV2ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAkocmV2aXNpb24gMjA5
ODY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgSlNXb3JrZXJHbG9i
YWxTY29wZUJhc2U6OnZpc2l0Q2hpbGQKICAgICBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSo+KGNlbGwpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3Byb3h5KTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3By
b3h5KTsKIH0KIAogdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA5ODY3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTM5Nzcs
NyArMzk3Nyw3IEBAIEVORAogICAgICAgICAgICAgZm9yZWFjaCAoQHskaW50ZXJmYWNlLT5hdHRy
aWJ1dGVzfSkgewogICAgICAgICAgICAgICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKICAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmli
dXRlfSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICIpO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>
<flag name="review"
          id="319562"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>