<?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>137841</bug_id>
          
          <creation_ts>2014-10-17 16:50:52 -0700</creation_ts>
          <short_desc>Don&apos;t allocate stack slots for captured variables</short_desc>
          <delta_ts>2016-09-17 07:03:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042526</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-17 16:50:52 -0700</bug_when>
    <thetext>Don&apos;t allocate stack slots for captured variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042527</commentid>
    <comment_count>1</comment_count>
      <attachid>240052</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-17 16:51:20 -0700</bug_when>
    <thetext>Created attachment 240052
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042973</commentid>
    <comment_count>2</comment_count>
      <attachid>240146</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-20 14:30:57 -0700</bug_when>
    <thetext>Created attachment 240146
passes all tests but is still just refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044288</commentid>
    <comment_count>3</comment_count>
      <attachid>240490</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-27 12:16:03 -0700</bug_when>
    <thetext>Created attachment 240490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044291</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-27 12:18:41 -0700</bug_when>
    <thetext>Attachment 240490 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:542:  Please declare enum bitfields as unsigned integral types.  [runtime/enum_bitfields] [5]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:1999:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:593:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 4 in 46 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>1230800</commentid>
    <comment_count>5</comment_count>
      <attachid>240490</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-17 07:03:35 -0700</bug_when>
    <thetext>Comment on attachment 240490
Patch

Hi,

Apologies that your patch was not reviewed in a timely manner. Since it&apos;s now quite old, I am removing it from the review request queue. Please consider rebasing it on trunk and resubmitting.

To increase the chances of getting a review, consider using &apos;Tools/Scripts/webkit-patch upload --suggest-reviewers&apos; to CC reviewers who might be interested in this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240052</attachid>
            <date>2014-10-17 16:51:20 -0700</date>
            <delta_ts>2014-10-20 14:30:55 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-137841-20141017165125.patch</filename>
            <type>text/plain</type>
            <size>57949</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWVhZWM4ZThhZTdmNDNiZGI3MzBjYThmZDY0YTQzMjZlYzk1ZmVmLi45NzJjMDQ4MTVhMTA1M2Ji
MmQ0MmY1YmFhYmVlZTIwMjEwNjNjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMTQtMTAtMTcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBEb24ndCBhbGxvY2F0ZSBzdGFjayBzbG90cyBmb3IgY2FwdHVyZWQgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppc0NhcHR1cmVkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9y
UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNldEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1
bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzQ2FwdHVyZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhcHR1cmVkQXJndW1lbnRzSW5kZXgp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dXNl
c0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhh
c0NhcHR1cmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNl
dENhcHR1cmVkQXJndW1lbnRJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpjYXB0dXJlZEFyZ3VtZW50c0luZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplQ2FwdHVyZWRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpy
ZXNvbHZlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNv
bHZlVG9Bcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1v
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkNhcHR1cmVkVmFyaWFibGU6OkNhcHR1cmVkVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpD
YXB0dXJlZFZhcmlhYmxlOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpDYXB0dXJlZFZhcmlh
YmxlOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6Q2FwdHVyZWRWYXJpYWJsZTo6b3BlcmF0
b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6CisgICAgICAgIChKU0M6OkNhcHR1cmVkVmFyaWFibGU6
OnJlZ2lzdGVySUQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ2FwdHVy
ZWRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2FwdHVyZU1vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2hvdWxkQ3JlYXRlQXJn
dW1lbnRzRWFnZXJseSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlOjpvYnNlcnZlQmFkQXJndW1lbnRzVXNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjppc09LVG9PcHRpbWl6ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJndW1lbnRzUmVjb3ZlcnlHZW5lcmF0b3I6OmdlbmVyYXRlRm9yKToKKyAgICAg
ICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjp3cml0ZVRvcCk6CisgICAgICAgIChKU0M6
OkRGRzo6Zm9yRWFjaExvY2FsUmVhZEJ5VW53aW5kKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwv
RlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9u
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZXhpc3RpbmdBcmd1bWVudHMp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVf
Y2FwdHVyZWRfYXJndW1lbnRzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorCiAy
MDE0LTEwLTEwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgVmFy
aW91cyBhcmd1bWVudHMgb3B0aW1pc2F0aW9ucyBpbiBjb2RlZ2VuIGZhaWwgdG8gYWNjb3VudCBm
b3IgYXJndW1lbnRzIGJlaW5nIGluIGxleGljYWwgcmVjb3JkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMWMwNDU0ZWQ0NmEzZWEy
ZTNkMmE2Mzk0N2Q2M2JkYWQzNDIyMmMwZC4uNzFiMDhlNjJkZjY0MGRhMzZjNWEyMjZjZTg2MzYz
YzI4MzlhMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtOCw2ICs4LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3RvdWNoX2VudHJ5IiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9pbml0X2xhenlfcmVnIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9jcmVhdGVfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAyIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfdGhpcyIsICJsZW5ndGgiIDogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2NhbGxlZSIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9fdGhpcyIsICJsZW5ndGgiIDogNCB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBl
NjBjMTRmYmViOTY2MmM3OGZmMzc3NmJkOGFmNmQ3YzM1OTM5YmQ0Li5hZjBkMmEyNjhmMDVhYzQ0
YjNjMzVjMDEwN2FjYzAwMzBhMTFlNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNjAsNiArNjAsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiAKICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVu
dHM6CisgICAgY2FzZSBvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bf
dG9fdGhpczoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAgIGNhc2Ugb3BfcHJv
ZmlsZV9kaWRfY2FsbDoKQEAgLTM2Niw2ICszNjcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICBjYXNlIG9w
X2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAg
Y2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjQ3YzdjMWI4N2Y1OTll
Y2Q0NGRlYjg4ZTZlZDFiYWU5MzE0OTcyZC4uYzI5NWMzMTgxOGJhNDE1NGNiOGM5OWE3YjIwYzdm
MDQwZDc2ODcwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTU4MSwxMiArNTgxLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgICI7ICVkIGNhcHR1cmVkIHZhcihzKSAoZnJv
bSByJWQgdG8gciVkLCBpbmNsdXNpdmUpIiwKICAgICAgICAgICAgIHN5bWJvbFRhYmxlKCktPmNh
cHR1cmVDb3VudCgpLCBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3RhcnQoKSwgc3ltYm9sVGFibGUo
KS0+Y2FwdHVyZUVuZCgpICsgMSk7CiAgICAgfQotICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsK
KyAgICBpZiAodXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpIHsKICAgICAgICAgb3V0LnByaW50ZigK
ICAgICAgICAgICAgICI7IHVzZXMgYXJndW1lbnRzLCBpbiByJWQsIHIlZCIsCiAgICAgICAgICAg
ICBhcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpLAogICAgICAgICAgICAgdW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKICAgICB9CisK
KyAgICBpZiAoaGFzQ2FwdHVyZWRBcmd1bWVudHMoKSkgeworICAgICAgICBvdXQucHJpbnRmKAor
ICAgICAgICAgICAgIjsgY2FwdHVyZXMgYXJndW1lbnRzLCBpbiByJWQiLAorICAgICAgICAgICAg
Y2FwdHVyZWRBcmd1bWVudHNJbmRleCgpKTsKKyAgICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlv
bigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBvdXQucHJpbnRmKCI7
IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0
KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CkBAIC03NTMsNiArNzU5LDExIEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfYXJndW1lbnRzIiwg
cjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVh
dGVfY2FwdHVyZWRfYXJndW1lbnRzOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHMiLCByMCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luaXRfbGF6
eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiaW5pdF9sYXp5X3JlZyIsIHIwKTsKQEAgLTE5NzgsNyArMTk4OSw3IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFN0
cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIocGNbNV0udS5pbmRleCkuaW1wbCgpOwogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZENsb25lU3ltYm9sVGFibGUpOwotICAgICAgICAg
ICAgICAgIGlmIChpZGVudCAhPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWlkZW50LmlzRW1wdHkoKSAmJiBpZGVudCAhPSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5hcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIobV9zeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgICAgICAgICAg
ICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IG1fc3ltYm9sVGFibGUtPmZpbmQo
bG9ja2VyLCB1aWQpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlciAhPSBtX3N5bWJv
bFRhYmxlLT5lbmQobG9ja2VyKSk7CkBAIC0yODMzLDcgKzI4NDQsNyBAQCBib29sIENvZGVCbG9j
azo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQogYm9vbCBDb2RlQmxvY2s6OmlzQ2FwdHVyZWQo
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
KSBjb25zdAogewogICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IG9wZXJhbmQudG9Bcmd1bWVudCgpICYmIHVzZXNBcmd1bWVudHMoKTsKKyAgICAgICAgcmV0dXJu
IG9wZXJhbmQudG9Bcmd1bWVudCgpICYmIChoYXNDYXB0dXJlZEFyZ3VtZW50cygpIHx8IHVzZXNB
cmd1bWVudHNSZWdpc3RlcigpKTsKIAogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAg
IHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVkVmFycy5nZXQob3BlcmFuZC50b0xvY2Fs
KCkpOwpAQCAtMjg0NCw5ICsyODU1LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmlzQ2FwdHVyZWQoVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEYKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBEaXR0byBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3Qu
Ci0gICAgaWYgKHVzZXNBcmd1bWVudHMoKSAmJiBvcGVyYW5kID09IGFyZ3VtZW50c1JlZ2lzdGVy
KCkpCisgICAgaWYgKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpICYmIG9wZXJhbmQgPT0gYXJndW1l
bnRzUmVnaXN0ZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHVzZXNBcmd1bWVu
dHMoKSAmJiBvcGVyYW5kID09IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNS
ZWdpc3RlcigpKSkKKyAgICBpZiAodXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgJiYgb3BlcmFuZCA9
PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gV2UncmUgaW4gZ2xvYmFsIGNvZGUgc28gdGhlcmUg
YXJlIG5vIGxvY2FscyB0byBjYXB0dXJlCkBAIC0zODQ3LDcgKzM4NTgsNyBAQCBTdHJpbmcgQ29k
ZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikK
ICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibGV4aWNhbCBlbnZpcm9ubWVudCIpOwogICAg
IGlmICh2aXJ0dWFsUmVnaXN0ZXIgPT0gdGhpc1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoInRoaXMiKTsKLSAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7CisgICAgaWYg
KHVzZXNBcmd1bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIg
PT0gYXJndW1lbnRzUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
ImFyZ3VtZW50cyIpOwogICAgICAgICBpZiAodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFy
Z3VtZW50c1JlZ2lzdGVyKCkpID09IHZpcnR1YWxSZWdpc3RlcikKQEAgLTM4NzcsNiArMzg4OCw3
IEBAIHN0cnVjdCBWZXJpZnlDYXB0dXJlZERlZiB7CiAgICAgICAgIGNhc2Ugb3BfZW50ZXI6CiAg
ICAgICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJn
dW1lbnRzOgorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAg
LTM4ODYsOSArMzg5OCwxNCBAQCBzdHJ1Y3QgVmVyaWZ5Q2FwdHVyZWREZWYgewogICAgICAgICBp
ZiAoIXZpcnR1YWxSZWcuaXNMb2NhbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiB2aXJ0dWFsUmVnID09IGNvZGVCbG9j
ay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+aGFzQ2FwdHVy
ZWRBcmd1bWVudHMoKSAmJiBvcGVyYW5kID09IGNvZGVCbG9jay0+Y2FwdHVyZWRBcmd1bWVudHNJ
bmRleCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXND
YXB0dXJlZEFyZ3VtZW50cygpICYmIHZpcnR1YWxSZWcgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKFZpcnR1YWxSZWdpc3Rlcihjb2RlQmxvY2stPmNhcHR1cmVkQXJndW1lbnRzSW5kZXgo
KSkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZXNB
cmd1bWVudHNSZWdpc3RlcigpICYmIHZpcnR1YWxSZWcgPT0gY29kZUJsb2NrLT5hcmd1bWVudHNS
ZWdpc3RlcigpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoY29kZUJsb2NrLT51
c2VzQXJndW1lbnRzKCkgJiYgdmlydHVhbFJlZyA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkKKyAgICAgICAgaWYgKGNvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgJiYgdmlydHVhbFJlZyA9PSB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoY29kZUJsb2NrLT5jYXB0dXJlQ291bnQoKSAmJiBj
b2RlQmxvY2stPnN5bWJvbFRhYmxlKCktPmlzQ2FwdHVyZWQob3BlcmFuZCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2NjBhNWM0ZTYxMmQ3OTVm
NDgzYzhjZDZlODhmZDU5OWNmYjg0OGQ2Li43MjQyYjU4NGRlODgwZTNkOWE2MzhlMjQ4NzNiZDdj
NDRhOWU4NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC0zMjcsMTYgKzMyNywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoYXJn
dW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpKTsKICAgICAgICAgbV9hcmd1bWVudHNSZWdpc3RlciA9
IGFyZ3VtZW50c1JlZ2lzdGVyOwotICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50cygpKTsKKyAg
ICAgICAgQVNTRVJUKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh1c2VzQXJndW1lbnRzKCkpOworICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50c1JlZ2lzdGVy
KCkpOwogICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsKICAgICB9CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKCkKICAgICB7Ci0gICAgICAg
IGlmICghdXNlc0FyZ3VtZW50cygpKQorICAgICAgICBpZiAoIXVzZXNBcmd1bWVudHNSZWdpc3Rl
cigpKQogICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICByZXR1
cm4gYXJndW1lbnRzUmVnaXN0ZXIoKTsKICAgICB9CkBAIC0zNTYsNyArMzU2LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICB9CiAK
LSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lz
dGVyLmlzVmFsaWQoKTsgfQorICAgIGJvb2wgdXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0Nh
cHR1cmVkQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc0NhcHR1
cmVkQXJndW1lbnRzKCk7IH0KKyAgICBpbnQgY2FwdHVyZWRBcmd1bWVudHNJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5jYXB0dXJlZEFyZ3VtZW50c0luZGV4KCk7IH0KIAog
ICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA2YzI5
M2NjZjk4ZDU2NzMyNmRjNDJmYWJkNWRmYTQxZDIzZjZjMmMxLi4zMzY2ZTliMzI1MzRkMDdmMjFk
MDY5MmI1NTM2M2QzMmQzZTdhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTIwMyw2ICsyMDMsNyBAQCBVbmxp
bmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV92bSh2bSkKICAgICAsIG1fYXJndW1lbnRzUmVn
aXN0ZXIoVmlydHVhbFJlZ2lzdGVyKCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlcigpKQorICAgICwgbV9jYXB0dXJlZEFyZ3VtZW50c0luZGV4KDApCiAgICAg
LCBtX25lZWRzRnVsbFNjb3BlQ2hhaW4oaW5mby5tX25lZWRzQWN0aXZhdGlvbikKICAgICAsIG1f
dXNlc0V2YWwoaW5mby5tX3VzZXNFdmFsKQogICAgICwgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rp
b24oZmFsc2UpCkBAIC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2Vk
Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAg
ICAsIG1faXNDb25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9p
c0J1aWx0aW5GdW5jdGlvbikKKyAgICAsIG1faGFzQ2FwdHVyZWRBcmd1bWVudHMoZmFsc2UpCiAg
ICAgLCBtX2ZpcnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29s
dW1uKFVJTlRfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAppbmRleCA2NWYyOGJkNjBmYzc1MDgwZDZhNjVkNzk2MTNmOWQ1ZWE5
NDUyMWY2Li4wZjMzZTQzOTYyZjQ5N2RkYjQwZmJkNTg1NWY5NDUyNzc5MTI5ODNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApA
QCAtMjg1LDkgKzI4NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3RpdmF0aW9uUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyIGFjdGl2YXRpb25SZWdpc3RlcikgeyBtX2xleGljYWxFbnZpcm9u
bWVudFJlZ2lzdGVyID0gYWN0aXZhdGlvblJlZ2lzdGVyOyB9CiAKICAgICB2b2lkIHNldEFyZ3Vt
ZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlcikgeyBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyID0gYXJndW1lbnRzUmVnaXN0ZXI7IH0KLSAgICBib29sIHVzZXNBcmd1bWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKTsgfQorICAg
IGJvb2wgdXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNS
ZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdp
c3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7IH0KIAorICAgIGJvb2wg
aGFzQ2FwdHVyZWRBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkQXJndW1l
bnRzOyB9CisgICAgdm9pZCBzZXRDYXB0dXJlZEFyZ3VtZW50SW5kZXgoaW50IGNhcHR1cmVkQXJn
dW1lbnRzSW5kZXgpCisgICAgeworICAgICAgICBtX2NhcHR1cmVkQXJndW1lbnRzSW5kZXggPSBj
YXB0dXJlZEFyZ3VtZW50c0luZGV4OworICAgICAgICBtX2hhc0NhcHR1cmVkQXJndW1lbnRzID0g
dHJ1ZTsKKyAgICB9CisgICAgaW50IGNhcHR1cmVkQXJndW1lbnRzSW5kZXgoKSBjb25zdCB7ICBy
ZXR1cm4gbV9jYXB0dXJlZEFyZ3VtZW50c0luZGV4OyB9CiAKICAgICBib29sIHVzZXNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyLmlzVmFsaWQoKTsg
fQogICAgIHZvaWQgc2V0R2xvYmFsT2JqZWN0UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGdsb2Jh
bE9iamVjdFJlZ2lzdGVyKSB7IG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgPSBnbG9iYWxPYmplY3RS
ZWdpc3RlcjsgfQpAQCAtNTIyLDYgKzUzMCw3IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lz
dGVyIG1fYXJndW1lbnRzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fZ2xvYmFsT2JqZWN0UmVn
aXN0ZXI7CisgICAgaW50IG1fY2FwdHVyZWRBcmd1bWVudHNJbmRleDsKIAogICAgIGJvb2wgbV9u
ZWVkc0Z1bGxTY29wZUNoYWluIDogMTsKICAgICBib29sIG1fdXNlc0V2YWwgOiAxOwpAQCAtNTMw
LDYgKzUzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAg
IGJvb2wgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1
bmN0aW9uIDogMTsKKyAgICBib29sIG1faGFzQ2FwdHVyZWRBcmd1bWVudHMgOiAxOwogICAgIHVu
c2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2ln
bmVkIG1fZW5kQ29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzMjdiNWQ4NWYwYjMwYTIwMjM1
MGQxYTk2OTVjZTUyYjAxMTdkNGViLi42MWM4MWZlZDU2OTZlNzExNDk4N2Y5MmQ1M2FiZGVkMzRi
NDYzOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjU0LDM5ICsyNTQsNjkgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2R5LCBVbmwKICAgICB9CiAgICAgUmVnaXN0ZXJJRCogbG9jYWxBcmd1bWVudHNSZWdp
c3RlciA9IG51bGxwdHI7CiAgICAgUmVnaXN0ZXJJRCogc2NyYXRjaCA9IGFkZFZhcigpOworICAg
IGVtaXRJbml0TGF6eVJlZ2lzdGVyKHNjcmF0Y2gpOwogICAgIG1fc3ltYm9sVGFibGUtPnNldENh
cHR1cmVTdGFydCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NvZGVCbG9jay0+bV9udW1WYXJz
KS5vZmZzZXQoKSk7CiAKICAgICBpZiAoZnVuY3Rpb25Cb2R5LT51c2VzQXJndW1lbnRzKCkgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpKSB7IC8vIE1heSByZWlmeSBhcmd1bWVudHMgb2JqZWN0Lgot
ICAgICAgICBSZWdpc3RlcklEKiB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIo
KTsgLy8gQW5vbnltb3VzLCBzbyBpdCBjYW4ndCBiZSBtb2RpZmllZCBieSB1c2VyIGNvZGUuCi0g
ICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkVmFyKHByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMsIElzVmFyaWFibGUsIE5vdFdhdGNoYWJsZSk7IC8vIENhbiBiZSBjaGFu
Z2VkIGJ5IGFzc2lnbmluZyB0byAnYXJndW1lbnRzJy4KLQotICAgICAgICBsb2NhbEFyZ3VtZW50
c1JlZ2lzdGVyID0gYXJndW1lbnRzUmVnaXN0ZXI7Ci0KLSAgICAgICAgLy8gV2UgY2FuIHNhdmUg
YSBsaXR0bGUgc3BhY2UgYnkgaGFyZC1jb2RpbmcgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSB0d28K
LSAgICAgICAgLy8gJ2FyZ3VtZW50cycgdmFsdWVzIGFyZSBzdG9yZWQgaW4gY29uc2VjdXRpdmUg
cmVnaXN0ZXJzLCBhbmQgc3RvcmluZwotICAgICAgICAvLyBvbmx5IHRoZSBpbmRleCBvZiB0aGUg
YXNzaWduYWJsZSBvbmUuCi0gICAgICAgIGNvZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIo
YXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1YWxSZWdpc3RlcigpKTsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3Rlci0+dmlydHVhbFJlZ2lzdGVyKCkgPT0gSlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSk7Ci0KLSAgICAgICAgZW1pdEluaXRM
YXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOwotICAgICAgICBlbWl0SW5pdExhenlSZWdp
c3Rlcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBpZiAobV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlcikgeworICAgICAgICAgICAgQ2FwdHVyZWRWYXJpYWJsZSBjYXB0
dXJlZFVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZENhcHR1cmVkVmFyKCk7IC8vIEFu
b255bW91cywgc28gaXQgY2FuJ3QgYmUgbW9kaWZpZWQgYnkgdXNlciBjb2RlLgorICAgICAgICAg
ICAgQ2FwdHVyZWRWYXJpYWJsZSBjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkQ2FwdHVy
ZWRWYXIocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgSXNWYXJpYWJsZSwgTm90V2F0Y2hhYmxl
KTsgLy8gQ2FuIGJlIGNoYW5nZWQgYnkgYXNzaWduaW5nIHRvICdhcmd1bWVudHMnLgorCisgICAg
ICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5tb2RpZmllc0FyZ3VtZW50cygpKQorICAgICAgICAg
ICAgICAgIGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIgPSBjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVy
LnJlZ2lzdGVySUQoKTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIHNhdmUgYSBsaXR0bGUgc3Bh
Y2UgYnkgaGFyZC1jb2RpbmcgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSB0d28KKyAgICAgICAgICAg
IC8vICdhcmd1bWVudHMnIHZhbHVlcyBhcmUgc3RvcmVkIGluIGNvbnNlY3V0aXZlIHJlZ2lzdGVy
cywgYW5kIHN0b3JpbmcKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIGluZGV4IG9mIHRoZSBhc3Np
Z25hYmxlIG9uZS4KKyAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0Q2FwdHVyZWRBcmd1bWVudElu
ZGV4KGNhcHR1cmVkQXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChjYXB0dXJlZFVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgY2FwdHVyZWRV
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1YWxSZWdpc3RlcigpID09IEpTQzo6dW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGNhcHR1cmVkQXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1
YWxSZWdpc3RlcigpKSk7CisKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2NhcHR1
cmVkX2FyZ3VtZW50cyk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NyYXRj
aC0+aW5kZXgoKSk7CisgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShjYXB0
dXJlZFVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cywgc2NyYXRjaCk7CisgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShjYXB0
dXJlZEFyZ3VtZW50c1JlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBzY3JhdGNo
KTsKKyAgICAgICAgICAgIGlmIChsb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKQorICAgICAgICAgICAg
ICAgIGVtaXRNb3ZlKGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIsIHNjcmF0Y2gpOworICAgICAgICAg
ICAgZW1pdE9wY29kZShvcF9tb3YpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGNhcHR1cmVkVW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkp
LT5pbmRleCgpKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbW92KTsKKyAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgp
KTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGpz
VW5kZWZpbmVkKCkpLT5pbmRleCgpKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
QVNTRVJUKCFjb2RlQmxvY2stPnVzZXNFdmFsKCkpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCog
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkVmFyKCk7IC8vIEFub255bW91cywgc28g
aXQgY2FuJ3QgYmUgbW9kaWZpZWQgYnkgdXNlciBjb2RlLgorICAgICAgICAgICAgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywg
SXNWYXJpYWJsZSwgTm90V2F0Y2hhYmxlKTsgLy8gQ2FuIGJlIGNoYW5nZWQgYnkgYXNzaWduaW5n
IHRvICdhcmd1bWVudHMnLgorCisgICAgICAgICAgICBsb2NhbEFyZ3VtZW50c1JlZ2lzdGVyID0g
YXJndW1lbnRzUmVnaXN0ZXI7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBzYXZlIGEgbGl0dGxl
IHNwYWNlIGJ5IGhhcmQtY29kaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCB0aGUgdHdvCisgICAgICAg
ICAgICAvLyAnYXJndW1lbnRzJyB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBjb25zZWN1dGl2ZSByZWdp
c3RlcnMsIGFuZCBzdG9yaW5nCisgICAgICAgICAgICAvLyBvbmx5IHRoZSBpbmRleCBvZiB0aGUg
YXNzaWduYWJsZSBvbmUuCisgICAgICAgICAgICBjb2RlQmxvY2stPnNldEFyZ3VtZW50c1JlZ2lz
dGVyKGFyZ3VtZW50c1JlZ2lzdGVyLT52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyLT52aXJ0dWFsUmVnaXN0ZXIoKSA9PSBKU0M6OnVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3Rlcihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKKworICAgICAgICAg
ICAgZW1pdEluaXRMYXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAg
ZW1pdEluaXRMYXp5UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVudHNFYWdlcmx5KCkgfHwgc2hvdWxk
VGVhck9mZkFyZ3VtZW50c0VhZ2VybHkoKSkgewotICAgICAgICAgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfYXJndW1lbnRzKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1
bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmhh
c0FjdGl2YXRpb25SZWdpc3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogYXJn
dW1lbnRzUmVnaXN0ZXIgPSAmcmVnaXN0ZXJGb3IobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lz
dGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlh
YmxlKGFyZ3VtZW50c1JlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBhcmd1bWVu
dHNSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogdW5jaGVja2VkQXJndW1l
bnRzUmVnaXN0ZXIgPSAmcmVnaXN0ZXJGb3IoSlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKLSAgICAgICAg
ICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZSh1bmNoZWNrZWRBcmd1bWVudHNSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgdW5jaGVja2VkQXJndW1lbnRzUmVnaXN0
ZXIpOwotICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbkJvZHktPm1vZGlmaWVzQXJndW1lbnRz
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9tb3YpOwotICAgICAgICAg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4
KCkpOwotICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnRWYWx1ZShqc1VuZGVmaW5lZCgpKS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVt
aXRPcGNvZGUob3BfbW92KTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQo
KSktPmluZGV4KCkpOwotICAgICAgICAgICAgICAgICAgICBsb2NhbEFyZ3VtZW50c1JlZ2lzdGVy
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChzaG91bGRUZWFyT2ZmQXJndW1lbnRzRWFnZXJs
eSgpKSB7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsK
KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXIt
PmluZGV4KCkpOworICAgICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aGFzQWN0aXZhdGlv
blJlZ2lzdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRz
UmVnaXN0ZXIgPSAmcmVnaXN0ZXJGb3IobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCku
b2Zmc2V0KCkpOworICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJs
ZShhcmd1bWVudHNSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgYXJndW1lbnRz
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcklEKiB1bmNoZWNrZWRBcmd1
bWVudHNSZWdpc3RlciA9ICZyZWdpc3RlckZvcihKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOworICAgICAg
ICAgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZSh1bmNoZWNrZWRBcmd1bWVu
dHNSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgdW5jaGVja2VkQXJndW1lbnRz
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5tb2RpZmll
c0FyZ3VtZW50cygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX21v
dik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1l
bnRzUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9tb3YpOworICAgICAgICAgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpLT5pbmRleCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIgPSBudWxscHRyOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yOTUsMTIgKzMyNSwxMiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpOwogCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlO
YW1lID0gZmFsc2U7Ci0gICAgVmVjdG9yPFJlZ2lzdGVySUQqLCAwLCBVbnNhZmVWZWN0b3JPdmVy
Zmxvdz4gY2FwdHVyZWRBcmd1bWVudHM7CisgICAgVmVjdG9yPENhcHR1cmVkVmFyaWFibGUsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBjYXB0dXJlZEFyZ3VtZW50czsKICAgICBpZiAoZnVuY3Rp
b25Cb2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpIHx8IHNob3VsZENhcHR1cmVBbGxUaGVUaGlu
Z3MpIHsKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKmZ1bmN0aW9u
Qm9keS0+cGFyYW1ldGVycygpOwogICAgICAgICBjYXB0dXJlZEFyZ3VtZW50cy5yZXNpemUocGFy
YW1ldGVycy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gMDsK
KyAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIXBhdHRl
cm4tPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMwOCw3
ICszMzgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICAgICAgaWYgKCFmdW5j
dGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSAmJiAhc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncykK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNhcHR1cmVzQW55QXJndW1l
bnRCeU5hbWUgPSB0cnVlOwotICAgICAgICAgICAgY2FwdHVyZWRBcmd1bWVudHNbaV0gPSBhZGRW
YXIoKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gYWRkQ2FwdHVyZWRWYXIo
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDk4LDcgKzUyOCw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKiByZWcpCiAg
ICAgcmV0dXJuIHJlZzsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRp
YWxpemVDYXB0dXJlZFZhcmlhYmxlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKENhcHR1cmVkVmFyaWFibGUgZHN0LCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFJlZ2lzdGVySUQqIHZhbHVlKQogewogCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKQEAgLTUwOSwyMSArNTM5LDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlc29sdmVNb2RlQW5kVHlwZShUaHJvd0lmTm90Rm91bmQs
IExvY2FsQ2xvc3VyZVZhcikub3BlcmFuZCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgcmV0dXJu
IGRzdDsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmVDYWxsZWUo
RnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5Tm9kZSkKIHsKICAgICBpZiAoIWZ1bmN0aW9u
TmFtZUlzSW5TY29wZShmdW5jdGlvbkJvZHlOb2RlLT5pZGVudCgpLCBmdW5jdGlvbkJvZHlOb2Rl
LT5mdW5jdGlvbk1vZGUoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGlmIChmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhtX2NvZGVCbG9jay0+
dXNlc0V2YWwoKSwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJ
bmRleChKU1N0YWNrOjpDYWxsZWUpOwogICAgIGlmIChmdW5jdGlvbkJvZHlOb2RlLT5jYXB0dXJl
cyhmdW5jdGlvbkJvZHlOb2RlLT5pZGVudCgpKSkKLSAgICAgICAgcmV0dXJuIGluaXRpYWxpemVD
YXB0dXJlZFZhcmlhYmxlKGFkZFZhcigpLCBmdW5jdGlvbkJvZHlOb2RlLT5pZGVudCgpLCAmbV9j
YWxsZWVSZWdpc3Rlcik7Ci0KKyAgICAgICAgaW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUoYWRk
Q2FwdHVyZWRWYXIoKSwgZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0
ZXIpOwogICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3RlcjsKIH0KIApAQCAtNTYyLDcgKzU5MCw3
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNvbHZlVG9Bcmd1bWVudHMoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiBtX2Nv
ZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXIpCisgICAg
aWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSAmJiBtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSAmJiBtX2xvY2FsQXJndW1lbnRzUmVnaXN0ZXIpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMzMsNyArMTA2MSw2IEBAIHVu
c2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRSZWdFeHAoUmVnRXhwKiByKQogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogc3JjKQogewogICAgIG1fc3RhdGljUHJvcGVydHlBbmFseXplci5tb3YoZHN0LT5pbmRleCgp
LCBzcmMtPmluZGV4KCkpOwotICAgIEFTU0VSVChkc3QtPnZpcnR1YWxSZWdpc3RlcigpID09IG1f
Y29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpIHx8ICFpc0NhcHR1cmVkKGRzdC0+aW5kZXgo
KSkpOwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3JjLT5pbmRleCgpKTsK
QEAgLTE3MzUsMTAgKzE3NjIsMTAgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJn
dW1lbnRzSWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2NvZGVUeXBlICE9IEZ1bmN0aW9uQ29kZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmICghbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVu
dHMoKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNob3VsZFRlYXJPZmZBcmd1bWVudHNFYWdlcmx5KCkg
fHwgc2hvdWxkQ3JlYXRlQXJndW1lbnRzRWFnZXJseSgpKQorICAgIGlmIChzaG91bGRUZWFyT2Zm
QXJndW1lbnRzRWFnZXJseSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBlbWl0T3Bjb2RlKG9w
X2NyZWF0ZV9hcmd1bWVudHMpOwpAQCAtMTkzNCwxOSArMTk2MSwyMCBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKE9wY29kZUlEIG9wY29kZSwgUmVnaXN0
ZXJJRCogZHN0LAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybihS
ZWdpc3RlcklEKiBzcmMpCiB7Ci0gICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkg
JiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAxICYmICFpc1N0cmljdE1vZGUoKSkg
ewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NyYXRjaFJlZ2lzdGVyOwotICAgICAgICBp
bnQgYXJndW1lbnRzSW5kZXggPSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9jb2RlQmxv
Y2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpOwotICAgICAgICBpZiAobV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlciAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSkgewotICAg
ICAgICAgICAgc2NyYXRjaFJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBl
bWl0R2V0T3duU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuYXJn
dW1lbnRzLCBPd25TY29wZUZvclJldHVybik7Ci0gICAgICAgICAgICBSZXNvbHZlU2NvcGVJbmZv
IHNjb3BlSW5mbyh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9jb2RlQmxvY2stPmFyZ3Vt
ZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKLSAgICAgICAgICAgIGVtaXRHZXRGcm9tU2NvcGUo
c2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBzY3JhdGNoUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMsIFRocm93SWZOb3RGb3VuZCwgc2NvcGVJbmZvKTsKLSAgICAgICAgICAg
IGFyZ3VtZW50c0luZGV4ID0gc2NyYXRjaFJlZ2lzdGVyLT5pbmRleCgpOwotICAgICAgICB9Cisg
ICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSAmJiBtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICE9IDEgJiYgIWlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgZW1p
dE9wY29kZShvcF90ZWFyX29mZl9hcmd1bWVudHMpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYXJndW1lbnRzSW5kZXgpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9s
ZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA/IG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIt
PmluZGV4KCkgOiBlbWl0TG9hZCgwLCBKU1ZhbHVlKCkpLT5pbmRleCgpKTsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihtX2NvZGVCbG9j
ay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZW1pdExvYWQoMCwgSlNWYWx1ZSgpKS0+aW5kZXgoKSk7CisgICAgfSBlbHNlIGlm
IChtX2NvZGVCbG9jay0+aGFzQ2FwdHVyZWRBcmd1bWVudHMoKSAmJiBtX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpICE9IDEgJiYgIWlzU3RyaWN0TW9kZSgpKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NyYXRjaFJlZ2lzdGVyID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGVtaXRH
ZXRPd25TY29wZShzY3JhdGNoUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5leGVjdXRp
b25Db3VudCwgT3duU2NvcGVGb3JSZXR1cm4pOworICAgICAgICBSZXNvbHZlU2NvcGVJbmZvIHNj
b3BlSW5mbyhtX2NvZGVCbG9jay0+Y2FwdHVyZWRBcmd1bWVudHNJbmRleCgpKTsKKyAgICAgICAg
ZW1pdEdldEZyb21TY29wZShzY3JhdGNoUmVnaXN0ZXIuZ2V0KCksIHNjcmF0Y2hSZWdpc3Rlci5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLmV4ZWN1dGlvbkNvdW50LCBUaHJvd0lmTm90Rm91bmQsIHNj
b3BlSW5mbyk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjcmF0Y2hSZWdpc3Rlci0+aW5kZXgoKSk7Cisg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
LT5pbmRleCgpKTsKICAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3RvcnMgdXNlIG9wX3JldF9vYmpl
Y3Rfb3JfdGhpcyB0byBjaGVjayB0aGUgcmVzdWx0IGlzIGFuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDZk
NTkwZGU3MDE2YTEyZDM2M2Y5NDYwMTNlMjE4MmZkNGFjYmMzMi4uMzNmY2E2ZDIwMmQxYjFhZWVh
MDBlOWU2MmI0ZTYxOGNlMmM3Nzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTc5LDExICsxNzksNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSogdHJ5RGF0YTsKICAgICB9OwogCi0g
ICAgZW51bSBDYXB0dXJlTW9kZSB7Ci0gICAgICAgIE5vdENhcHR1cmVkLAotICAgICAgICBJc0Nh
cHR1cmVkCi0gICAgfTsKLQogICAgIGNsYXNzIExvY2FsIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IExvY2FsKCkKQEAgLTI1Myw2ICsyNDgsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBy
b2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRlbWVudAogICAgIH07CiAKKyAgICBz
dHJ1Y3QgQ2FwdHVyZWRWYXJpYWJsZSB7CisgICAgICAgIENhcHR1cmVkVmFyaWFibGUoUmVnaXN0
ZXJJRCogcmVnKQorICAgICAgICAgICAgOiBtX3JlZ2lzdGVyKHJlZykKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgQ2FwdHVyZWRWYXJpYWJsZSgpCisgICAgICAgICAgICA6IG1fcmVn
aXN0ZXIobnVsbHB0cikKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9yZWdpc3RlcjsgfQorICAgICAgICBSZWdpc3RlcklE
KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gbV9yZWdpc3RlcjsgfQorICAgICAgICBjb25zdCBSZWdp
c3RlcklEKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcjsgfQorCisgICAg
ICAgIHR5cGVkZWYgUmVnaXN0ZXJJRCogKENhcHR1cmVkVmFyaWFibGU6OipVbnNwZWNpZmllZEJv
b2xUeXBlKTsKKyAgICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0ZXIgPyAmQ2FwdHVyZWRWYXJpYWJsZTo6bV9yZWdpc3RlciA6IG51bGxw
dHI7IH0KKworICAgICAgICBSZWdpc3RlcklEKiByZWdpc3RlcklEKCkgeyByZXR1cm4gbV9yZWdp
c3RlcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVnaXN0ZXJJRCogbV9yZWdpc3RlcjsK
KyAgICB9OworCiAgICAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3IgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC0yODIsOCArMzAxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVn
aXN0ZXIoKTsKIAogICAgICAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQpOwotICAgICAg
ICBDYXB0dXJlTW9kZSBjYXB0dXJlTW9kZShpbnQgb3BlcmFuZCkgeyByZXR1cm4gaXNDYXB0dXJl
ZChvcGVyYW5kKSA/IElzQ2FwdHVyZWQgOiBOb3RDYXB0dXJlZDsgfQotICAgICAgICAKKwogICAg
ICAgICBMb2NhbCBsb2NhbChjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIExvY2FsIGNvbnN0
TG9jYWwoY29uc3QgSWRlbnRpZmllciYpOwogCkBAIC02MDcsNiArNjI1LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIC8vIEFkZHMgYSB2YXIgc2xvdCBhbmQgbWFwcyBpdCB0byB0aGUg
bmFtZSBpZGVudCBpbiBzeW1ib2xUYWJsZSgpLgogICAgICAgICBlbnVtIFdhdGNoTW9kZSB7IElz
V2F0Y2hhYmxlLCBOb3RXYXRjaGFibGUgfTsKKworICAgICAgICBDYXB0dXJlZFZhcmlhYmxlIGFk
ZENhcHR1cmVkVmFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkZFZhcigpOwor
ICAgICAgICB9CisgICAgICAgIENhcHR1cmVkVmFyaWFibGUgYWRkQ2FwdHVyZWRWYXIoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUsIFdhdGNoTW9kZSB3
YXRjaE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZGRWYXIoaWRlbnQsIGNv
bnN0YW50TW9kZSwgd2F0Y2hNb2RlKTsKKyAgICAgICAgfQogICAgICAgICBSZWdpc3RlcklEKiBh
ZGRWYXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENvbnN0YW50TW9kZSBjb25zdGFudE1vZGUs
IFdhdGNoTW9kZSB3YXRjaE1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJlZ2lzdGVySUQq
IGxvY2FsOwpAQCAtNjU5LDcgKzY4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdENvbnN0cnVjdFZhcmFyZ3MoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0
RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9m
aWxlSG9va1JlZ2lzdGVyLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbFZhcmFyZ3MoT3Bjb2RlSUQsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogdGhpc1JlZ2lzdGVyLCBSZWdpc3Rl
cklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0LCBSZWdpc3RlcklEKiBwcm9maWxlSG9va1JlZ2lzdGVyLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwotICAgICAgICBSZWdpc3RlcklEKiBpbml0
aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXIm
LCBSZWdpc3RlcklEKik7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUo
Q2FwdHVyZWRWYXJpYWJsZSBkc3QsIGNvbnN0IElkZW50aWZpZXImLCBSZWdpc3RlcklEKik7CiAK
ICAgICAgICAgLy8gV2UnbGwgbWF5IHdhbnQgYSBub24tcmV0dXJuIG1vZGUgaW4gZnV0dXJlLCBi
dXQgY3VycmVudGx5CiAgICAgICAgIC8vIHRoaXMgaXMgb25seSB1c2VkIGR1cmluZyBlbWl0UmV0
dXJuKCkuIGVtaXRSZXR1cm4oKSBvY2N1cnMKQEAgLTcwNSwxMyArNzMyLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYg
aXNTdHJpY3RNb2RlKCkgJiYgbV9zY29wZU5vZGUtPm1vZGlmaWVzUGFyYW1ldGVyKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW50c0VhZ2VybHkoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobV9jb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIgJiYgbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKTsKLSAgICAg
ICAgfQotCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhj
ZXB0aW9uKCk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVBcmd1bWVudHNJZk5lY2Vzc2FyeSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IDJiZDk5ZTIwMmM2ZGNmNmZlYTdlMWMxMDJhZmUxMDIwOWFl
MDk4YzEuLmUxNzExM2ZlM2M1NTY0MjJhYmFlZjA3ZGQzYTM3ODY1ZmU5ZDZhMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTEyOTgsNyArMTI5OCwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGlt
aQogICAgICAgICBmb3JOb2RlKG5vZGUpLmZpbHRlcih+U3BlY0VtcHR5KTsKICAgICAgICAgZm9y
Tm9kZShub2RlKS5tZXJnZShTcGVjQXJndW1lbnRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IAorCisgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKKyAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXRUeXBlKFNwZWNBcmd1bWVudHMpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
VGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgLy8gRG9lcyBub3RoaW5nIHRoYXQgaXMgdXNlci12
aXNpYmxlLgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCmluZGV4IDky
MGM0NjYyY2IxNjc4NzBmY2JiNDk0ZmY4OGQzMzI0NmZiZWUyMGMuLjQ1YWI4YzIwMTg2YmZmOTNk
ZDBjZWNlNGYxYzhmMGEwYzhhYjZkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcApAQCAt
MTY3LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJ
bkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2sp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9jayk7
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0
ZUFyZ3VtZW50czogewogICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhpcyBvcC4gSWYg
d2Ugc2VlIGEgbG9uZSBDcmVhdGVBcmd1bWVudHMgdGhlbiB3ZSB3YW50IHRvCiAgICAgICAgICAg
ICAgICAgICAgIC8vIGNvbXBsZXRlbHkgaWdub3JlIGl0IGJlY2F1c2U6CkBAIC02NDUsNiArNjQ2
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRz
OgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czogewogICAgICAgICAgICAgbV9jcmVhdGVz
QXJndW1lbnRzLmFkZChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNzQxLDcgKzc0Myw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgIGNhc2UgQ3JlYXRlQ2FwdHVy
ZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3ZjkwNzY4NzczZDY2NmVjNTkwYjM0OTQ1YTBh
ZTI2YTQwNDkzNjlkLi5iZjMxMjQ3OTYzNWMwZTAwNjI5YTM2MTg2MmQ2ZmI3Y2FlZTJhNjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApA
QCAtMzQwNyw2ICszNDA3LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRz
KTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50
czogeworICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CisgICAgICAg
ICAgICBOb2RlKiBjcmVhdGVBcmd1bWVudHMgPSBhZGRUb0dyYXBoKENyZWF0ZUNhcHR1cmVkQXJn
dW1lbnRzKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCksIGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2Ugb3BfdGVhcl9vZmZfYXJndW1lbnRzOiB7CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFz
QXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGVhck9mZkFyZ3VtZW50
cywgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSks
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBm
MTJhMTdlN2M0NTUyOWNiYjNlNDllZDcyNWUxZDhhYWE4ZTg2MjVjLi41NDQ3M2EyNzA1OGUxNjQz
NGNjODYwMTg3ZWQyYWE4MTBjNjA4YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODMsNiArMTgzLDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWMKICAgICBjYXNlIG9wX2NvbnN0cnVjdDoKICAgICBjYXNlIG9wX2luaXRfbGF6eV9y
ZWc6CiAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfY3JlYXRlX2Nh
cHR1cmVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKQEAgLTIyMiw3ICsyMjMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIH0K
IAogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2Vz
QXJndW1lbnRzKCkgJiYgcGNbNF0udS5vcGVyYW5kID09IGNvZGVCbG9jay0+YXJndW1lbnRzUmVn
aXN0ZXIoKS5vZmZzZXQoKQorICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVn
aXN0ZXIoKSAmJiBwY1s0XS51Lm9wZXJhbmQgPT0gY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3Rl
cigpLm9mZnNldCgpCiAgICAgICAgICAgICAmJiAhcGNbNl0udS5vcGVyYW5kKQogICAgICAgICAg
ICAgcmV0dXJuIENhbklubGluZTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUg
dGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZWQy
MDQyYTJmNDk4NWE4ODQzZjUyNzI4YzE3ZDUwZThhZGFmMDYxYS4uYjc3ODQ0YTQ0YjFlYTUwYWNk
ZTMxMzNkZTZmN2YyYWI0MGU5NDU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKQEAgLTMwOCw3ICszMDgsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
ICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICB3cml0ZShXYXRjaHBvaW50X2ZpcmUp
OwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCisgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFy
Z3VtZW50czoKICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czoKICAgICAgICAgcmVhZChWYXJpYWJs
ZXMpOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggYmY0NWFiYzU5ZjY1ZDQzM2EwNmI4MTAyMTc2NjZkZWE4
YTE2ZGNhOS4uZDk1MThlZWIzM2Q4ODNmNmRjZDBhMDE0NmFlYjY4NDI4ZDI3MTgzNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjA5LDYgKzIwOSw3IEBAIGJv
b2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKIAogICAgIGNhc2UgQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czoKKyAgICBjYXNlIENyZWF0ZUNhcHR1
cmVkQXJndW1lbnRzOgogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgQ3JlYXRlVGhpczoKICAg
ICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOWE5Zjg1YzZjYzdiZjcwMjM4ZGJkYjhmNjMzZmFh
Yjk3NDJjMmNhMC4uZmJhMDMyZGNiYWNhYzg3MWRiNzJiYzE5ZTNjMDMwNWU2OTZjYThiOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMTgxLDYg
KzExODEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CisgICAg
ICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgICAgICBjYXNlIEdl
dE15QXJndW1lbnRzTGVuZ3RoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4
IGU1ODRhMTlkOWJhNGViYjFjNTI3MzdmMmFkM2JjN2Q1NWFlNjFmMzguLmJmZjJjN2JhYmRkNjQy
NGI2YmVmNzlmYzlkOGYzOWVmNDk5MzFiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKQEAgLTQ0MCw3ICs0NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9w
cm9maWxlZEJsb2NrLT51bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlcigpOwogICAgICAgICAKICAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNh
bGxGcmFtZShpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICBpZiAoIWNvZGVCbG9jay0+dXNlc0Fy
Z3VtZW50cygpKQorICAgICAgICBpZiAoIWNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVy
KCkpCiAgICAgICAgICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gVmlydHVhbFJlZ2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIo
KS5vZmZzZXQoKSArCkBAIC01MTYsOSArNTE2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
TWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSh2YWx1ZVByb2ZpbGVGb3Iobm9kZSkpOwogICAg
IH0KICAgICAKLSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdAorICAgIGJvb2wgdXNlc0Fy
Z3VtZW50c1JlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50cygpOworICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNBcmd1
bWVudHNSZWdpc3RlcigpOwogICAgIH0KICAgICAKICAgICBCbG9ja0luZGV4IG51bUJsb2Nrcygp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IDU2NzA2MzA0Zjk3NDA2MmIyNGI0ZGQ0YWQwNDliYmQ3YWU2
MzhhNDEuLmJiYmY1MzNjYjZiNDdlNzQyYWEzYjEwMmJjMmU5YjIwYmY4NjdhMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTI2Nyw2ICsyNjcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogTm9kZXMgdXNlZCBmb3IgYXJndW1l
bnRzLiBTaW1pbGFyIHRvIGxleGljYWwgZW52aXJvbm1lbnQgc3VwcG9ydCwgb25seSBpdCBtYWtl
cyBldmVuIGxlc3MgKi9cCiAgICAgLyogc2Vuc2UuICovXAogICAgIG1hY3JvKENyZWF0ZUFyZ3Vt
ZW50cywgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oQ3JlYXRlQ2FwdHVyZWRBcmd1bWVudHMs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFBoYW50b21Bcmd1bWVudHMsIE5vZGVSZXN1bHRK
UykgXAogICAgIG1hY3JvKFRlYXJPZmZBcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhHZXRNeUFyZ3VtZW50c0xlbmd0aCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uY3BwCmluZGV4IGJjMGMwZjdhMmQ1YWE1YTQxODA0NjU5MzI2ZDlhN2My
MDIwZTJiZWYuLmFjMDRmYWFjN2Q3NmFjNjA5OWFhMTgzYjJmZDgxYzM5OTI2NGJlZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAgICAgICAgICAg
aml0LnN0b3JlNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSkpLCBBc3NlbWJseUhl
bHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIEpTU3RhY2s6OkNhbGxlZSkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIExlYXZl
IHRoZSBjYXB0dXJlZCBhcmd1bWVudHMgaW4gcmVnVDMuCi0gICAgICAgIGlmIChiYXNlbGluZUNv
ZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKQorICAgICAgICBpZiAoYmFzZWxpbmVDb2RlQmxvY2st
PnVzZXNBcmd1bWVudHNSZWdpc3RlcigpKQogICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGJhc2VsaW5lQ29kZUJsb2Nr
LT5hcmd1bWVudHNSZWdpc3RlcigpKS5vZmZzZXQoKSkpLCBHUFJJbmZvOjpyZWdUMyk7CiAjZWxz
ZSAvLyBVU0UoSlNWQUxVRTY0KSAvLyBzbyB0aGlzIGlzIHRoZSAzMi1iaXQgcGFydAogICAgICAg
ICBqaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29k
ZUJsb2NrKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKGlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDb2RlQmxvY2spKSk7CkBAIC0y
MjgsNyArMjI4LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgICAgIGppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihiYXNlbGluZUNvZGVC
bG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpKSwgR1BSSW5mbzo6cmVnVDMpOwog
I2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpIC8vIGVuZGluZyB0aGUgI2Vsc2UgcGFydCwgc28gZGly
ZWN0bHkgYWJvdmUgaXMgdGhlIDMyLWJpdCBwYXJ0CiAgICAgICAgIAotICAgICAgICBpZiAoYmFz
ZWxpbmVDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgeworICAgICAgICBpZiAoYmFzZWxpbmVD
b2RlQmxvY2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Okp1bXAgbm9Bcmd1bWVudHMgPSBqaXQuYnJhbmNoVGVzdFB0cihBc3NlbWJseUhl
bHBlcnM6Olplcm8sIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgICAgIGppdC5hZGRQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDMsIEFyZ3VtZW50czo6b2Zmc2V0
T2ZSZWdpc3RlcnMoKSkpOwpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgQXJndW1lbnRzUmVjb3Zl
cnlHZW5lcmF0b3I6OmdlbmVyYXRlRm9yKAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFq
aXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKS0+dXNlc0FyZ3VtZW50cygp
KQorICAgIGlmICghaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxGcmFtZSktPnVz
ZXNBcmd1bWVudHNSZWdpc3RlcigpKQogICAgICAgICByZXR1cm47CiAgICAgVmlydHVhbFJlZ2lz
dGVyIGFyZ3VtZW50c1JlZ2lzdGVyID0gaml0LmJhc2VsaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Io
aW5saW5lQ2FsbEZyYW1lKTsKICAgICBpZiAobV9kaWRDcmVhdGVBcmd1bWVudHNPYmplY3QuYWRk
KGlubGluZUNhbGxGcmFtZSkuaXNOZXdFbnRyeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAppbmRleCA3NWI2NzZhNGUy
NjdkZDVhMGVkOWNlYjFjYzkwMWE1N2I3MGExOTNiLi40NmI3MWIyOTRlOGM2ZmFiMWVmZDAwOTE1
YzNiOTk3NzRlNzU2N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdm9pZCB3cml0ZVRvcCgpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5t
X2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLm1fY29k
ZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSB8fCBtX2dyYXBoLm1fY29kZUJsb2NrLT5o
YXNDYXB0dXJlZEFyZ3VtZW50cygpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2dyYXBoLm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7IGktLSA+IDE7KQogICAgICAgICAg
ICAgICAgIG1fd3JpdGUodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOwogICAgICAgICB9
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBmb3JFYWNoTG9jYWxSZWFkQnlVbndpbmQoR3JhcGgm
IGdyYXBoLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlYWRGdW4KIHsKICAgICBpZiAo
Z3JhcGgudW5jaGVja2VkQWN0aXZhdGlvblJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBy
ZWFkKGdyYXBoLmFjdGl2YXRpb25SZWdpc3RlcigpKTsKLSAgICBpZiAoZ3JhcGgubV9jb2RlQmxv
Y2stPnVzZXNBcmd1bWVudHMoKSkKKyAgICBpZiAoZ3JhcGgubV9jb2RlQmxvY2stPnVzZXNBcmd1
bWVudHNSZWdpc3RlcigpKQogICAgICAgICByZWFkKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihudWxscHRyKSkpOwogICAgIAogICAgIGZvciAo
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNDE4
MTA3NTUzOWRmZDUzYTgzZmExNzc3NzE1NGNkNzdmZmRhNjNkMS4uNTllNDA4ZjQ1ZDM5ZWI2Y2Mw
Y2QxNGRhMTg2OGU1ZWRhYzU0ZTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTUxNSw3
ICs1MTUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9u
KFNwZWNTdHJpbmdPYmplY3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCisgICAgICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0FyZ3VtZW50cyk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZTBmNzIwYzA5ODgyM2YzZWFl
ZjU1Zjc5NDAzZjQwMWQxY2FiZjJhNC4uOTE2OTVkYWY4YTRmNTg4OWYwZTcxZWJjOTE0MDMxZWUz
NzdlNWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBJbjoKICAgICBj
YXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6CisgICAgY2Fz
ZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAg
ICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOgogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCBmMDlmNmEzOTUzMDliOWMzYWRlM2NjODQ1MzhhOTE4Yjg2MzI1YTZjLi45Mjk4MWU3
MTYzZjRmNmYwYjAzYjE4ZWQxNTQyZTk0NjE2ODVkMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTQyNTAsNyArNDI1MCw0
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCisgICAgY2Fz
ZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czogeworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAg
ICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25DcmVhdGVJbmxpbmVkQXJndW1lbnRzLCByZXN1bHRHUFIsIG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9qaXQu
Z3JhcGgoKS5leGVjdXRhYmxlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICBp
ZiAobV9qaXQuY29kZUJsb2NrKCktPmhhc1Nsb3dBcmd1bWVudHMoKQorICAgICAgICAgICAgfHwg
ZXhlY3V0YWJsZS0+aXNTdHJpY3RNb2RlKCkKKyAgICAgICAgICAgIHx8ICFleGVjdXRhYmxlLT5w
YXJhbWV0ZXJDb3VudCgpKSB7CisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMsIHJlc3VsdEdQUik7
CisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUjEgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0g
c2NyYXRjaDIuZ3ByKCk7CisKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoczsKKyAgICAgICAgZW1pdEFsbG9jYXRlQXJndW1lbnRzKHJlc3VsdEdQUiwgc2NyYXRjaEdQ
UjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aHMpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd1BhdGhzLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMs
IHJlc3VsdEdQUikpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKaW5kZXggOGM4MGYyOGNiY2Q4MDI2YzE4MTBkYWE2
YjI1MGJmZmUwNDEyMjFkNC4uZDQxOWRiMzJlNjEwYjg4MDEzYzczNTg2YmM4ODdhOWU3NjQxYTU1
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhh
c2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoaW50IGkg
PSBzeW1ib2xUYWJsZS0+Y2FwdHVyZVN0YXJ0KCk7IGkgPiBzeW1ib2xUYWJsZS0+Y2FwdHVyZUVu
ZCgpOyBpLS0pCiAgICAgICAgICAgICAgICAgdXNlZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVy
KGkpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvZGVCbG9jaygpLT51c2Vz
QXJndW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzUmVn
aXN0ZXIoKSkgewogICAgICAgICAgICAgdXNlZExvY2Fscy5zZXQoY29kZUJsb2NrKCktPmFyZ3Vt
ZW50c1JlZ2lzdGVyKCkudG9Mb2NhbCgpKTsKICAgICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihjb2RlQmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIo
KSkudG9Mb2NhbCgpKTsKICAgICAgICAgfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBhbGxvY2F0aW9uW3ZhcmlhYmxlLT5sb2NhbCgpLnRvTG9jYWwoKV0pOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoY29kZUJsb2NrKCktPnVzZXNBcmd1bWVu
dHMoKSkgeworICAgICAgICBpZiAoY29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHNSZWdpc3Rlcigp
KSB7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbCgKICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uW2NvZGVCbG9j
aygpLT5hcmd1bWVudHNSZWdpc3RlcigpLnRvTG9jYWwoKV0pOwogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBp
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAy
NmE3YmM1ZWQ3NjdlZGY1NjczNjcxZDAyMzUzNTYyMjNiZDYzZWNhLi5hYTgyMThiZjJhOTJiODk2
ZDZkY2NjNDdlYTcwODI0M2Y3OWVjYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q29tcGlsZS5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJh
c2VkT25TdGFja01hcHMoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGNvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1Jl
Z2lzdGVyKCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRBcmd1bWVudHNSZWdpc3RlcigKICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3Rlcihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCku
b2Zmc2V0KCkgKyBsb2NhbHNPZmZzZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBlYmYzOWY5YTk3ZTI3NWY3
OThkZjIzMTlmMWJmZWNkMDE5MzRlN2UyLi42N2M5ZjFiYzE5MTk2MmE1ZmRkNWIzYzlmY2JjOWNl
MzEzYjZlMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgYm9vbCB1bndpbmRDYWxs
RnJhbWUoU3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKGNv
ZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCkpIHsKKyAgICBpZiAoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSAmJiAoY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSB8fCBjb2RlQmxvY2stPmhh
c0NhcHR1cmVkQXJndW1lbnRzKCkpKSB7CiAgICAgICAgIGlmIChBcmd1bWVudHMqIGFyZ3VtZW50
cyA9IHZpc2l0b3ItPmV4aXN0aW5nQXJndW1lbnRzKCkpIHsKICNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgICAgIGlmICh2aXNpdG9yLT5pc0lubGluZWRGcmFtZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBlYjgy
MTQ5YzYzYjU3MWIzMzcxMzAwZWE0OWZiZjc2NGQ3NjhlMTk0Li4zYmUzMWFjOTMxZTRjZDg4Y2Yx
YjFlOGIzNDgxNDNkZjA1OWQxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjg1LDkgKzI4NSwxNiBAQCBBcmd1bWVu
dHMqIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmV4aXN0aW5nQXJndW1lbnRzKCkKIHsKICAgICBpZiAo
Y29kZUJsb2NrKCktPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBpZiAoIWNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpCisKKyAgICBpZiAoY29k
ZUJsb2NrKCktPmhhc0NhcHR1cmVkQXJndW1lbnRzKCkpIHsKKyAgICAgICAgaW50IGFyZ3VtZW50
c0luZGV4ID0gY29kZUJsb2NrKCktPmNhcHR1cmVkQXJndW1lbnRzSW5kZXgoKTsKKyAgICAgICAg
SlNMZXhpY2FsRW52aXJvbm1lbnQqIGVudmlyb25tZW50ID0gY2FsbEZyYW1lKCktPmxleGljYWxF
bnZpcm9ubWVudCgpOworICAgICAgICByZXR1cm4ganNDYXN0PEFyZ3VtZW50cyo+KGVudmlyb25t
ZW50LT5yZWdpc3RlckF0KGFyZ3VtZW50c0luZGV4KS5nZXQoKSk7CisgICAgfQorCisgICAgaWYg
KCFjb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIAorCiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZzsKICAgICAgICAgCiAjaWYgRU5BQkxF
KERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNjUxNmNjNDQyYzZhNWFj
MmY5MzY2NTNjYzdiZGVhZDhjZGIyN2UwZi4uOTVhOThjZmViNGYyNTNkYjEyYmY0MDFlODlkYTE0
OWVlYzkwMTRhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjEwLDYgKzIxMCw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3RvX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9pbml0X2xhenlfcmVnKQogICAgICAg
ICBERUZJTkVfT1Aob3BfY3JlYXRlX2FyZ3VtZW50cykKKyAgICAgICAgREVGSU5FX09QKG9wX2Ny
ZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGRjMTY5NDQ2M2Y2MDJkN2VhZmE3MzkzM2QwNjdj
ZDVmN2UzZTk4ZjYuLmVmNGViNjNkZjliYTUwMmU4ZjE4YmFhYTdjZDIwYjU2NWI0ZjRhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDY5LDYgKzQ2OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2NyZWF0ZV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlf
aWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggNDk0MWM2MzViMDM4NGFi
NzlhY2NmNmE3YTE3NTA0ZTQzNjY2N2EzMC4uMTMwMmVjNjkyM2JiN2IzN2FhNjQ4YzJiYjhkYTgz
MzliZmNkNjVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHZvaWQgSklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2U7CiAgICAgSnVtcExpc3QgZW5kOwotICAg
IGJvb2wgY2FuT3B0aW1pemUgPSBtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpCisgICAgYm9v
bCBjYW5PcHRpbWl6ZSA9IG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKQogICAg
ICAgICAmJiBhcmd1bWVudHMgPT0gbV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zm
c2V0KCkKICAgICAgICAgJiYgIW1fY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpLT5zbG93QXJndW1l
bnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGEw
MDE4MjgxYjdlOTdhMDgxYWEwMjZlYjViMjc4M2I1NjY3YTdiYjMuLmRjOWMyOTEyM2YwMjkwY2Vi
MDJjOGY2ZWRmZmM5MjM4OTNkZTU1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtNjgzLDYgKzY4MywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVf
YXJndW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXJnc0NyZWF0
ZWQubGluayh0aGlzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2NhcHR1cmVkX2Fy
Z3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworCisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25DcmVhdGVBcmd1bWVudHMpOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5W
YWx1ZUdQUik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCmluZGV4IDA4ZTlkNGE3OGE3MThmN2VhMDlkYjdjNWE5NzVmZTZiNjJlZTdiYmIuLjdh
MGZhMWNmYzZmYjE2MWE4NGUxZGVlMjgyYzVmM2VhZTkwNzliOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU5Miw3ICsxNTkyLDYgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1YKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJP
ZmZBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFyZ3VtZW50c0NlbGwsIEpTQ2Vs
bCopCiB7Ci0gICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpOwog
ICAgIGpzQ2FzdDxBcmd1bWVudHMqPihhcmd1bWVudHNDZWxsKS0+dGVhck9mZihleGVjKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5k
ZXggMDgzMjUzM2UxNDI1MTIyNGZjNTI1ZTU5MTk0N2ExYWFlYjAzODg2Mi4uMDkxNWFhNzg5YWY3
Zjk1ODliODg1YmNhZTQwMjhmMWE4ZjVjODRmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMjQ4LDcgKzEyNDgsNiBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKQogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50cykKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAg
IEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpKTsKICAgICBBcmd1bWVu
dHMqIGFyZ3VtZW50cyA9IGpzQ2FzdDxBcmd1bWVudHMqPihleGVjLT51bmNoZWNrZWRSKFZpcnR1
YWxSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpLm9mZnNldCgpKS5qc1ZhbHVlKCkpOwogICAgIGFy
Z3VtZW50cy0+dGVhck9mZihleGVjKTsKICAgICBMTElOVF9FTkQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggY2ZmYzg3YzFhYWQ5YmFlMWYxMTkwYmEyNTMzYjI1YjdkMzY5NmYwNC4uYzYxOWIzYjMz
MDQ3Y2JlYzc0NDhhYTY1MzA0MjYyODdlNTExM2UyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTc0
Miw2ICs3NDIsMTEgQEAgX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CiAub3BDcmVhdGVBcmd1
bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKK19sbGludF9vcF9jcmVhdGVfY2FwdHVyZWRf
YXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzKQorICAg
IGRpc3BhdGNoKDIpCiAKIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IDZmOGRjYmU4ZmJjYWM4NzVmOWFhOGUxOGU1M2Y4YjM2NTMxNzBi
YzAuLmExNjUwMGNmYTA1MDczMjhhNmIzZDJjNzJjOGQwYzBlOGNhYmM3NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CkBAIC02MjAsNyArNjIwLDYgQEAgX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CiAgICAgc3RvcmVx
IFZhbHVlRW1wdHksIFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKDIpCiAKLQogX2xsaW50X29w
X2NyZWF0ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MCkKQEAgLTYyOSw2ICs2MjgsMTEgQEAgX2xsaW50X29wX2NyZWF0ZV9h
cmd1bWVudHM6CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKK19s
bGludF9vcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgY2FsbFNsb3dQYXRoKF9zbG93
X3BhdGhfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cykKKyAgICBkaXNwYXRjaCgyKQogCiBfbGxp
bnRfb3BfY3JlYXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMTg2N2Q4NGY5
OGFlYjRiMGQ0MzZhYjhmYzQwZGI2OGNhMDY2MjZhNy4uNjAzMTlmOTNhOGU0NTVmMWYzNDIwN2Y2
OWYyMDQwZTFlZDdhMGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0yMjgsNiArMjI4LDE1IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cykKK3sKKyAgICBCRUdJTigp
OworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwg
ZXhlYykpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNb
MV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGQ4YTNlMmIzZDFh
YTBjYTYxZDVjMTMwMGRiMTlkM2NiNTdmNjJmODEuLmU1MmNmZDFkMjkxMjViODQ5ZDVmYjU3NGE1
ZmVlYTU5ODIwNTk0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0xODYsNiArMTg2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3RvdWNoX2VudHJ5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRl
X2FyZ3VtZW50cyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9jYXB0
dXJlZF9hcmd1bWVudHMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2NhbGxlZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240146</attachid>
            <date>2014-10-20 14:30:57 -0700</date>
            <delta_ts>2014-10-27 12:16:01 -0700</delta_ts>
            <desc>passes all tests but is still just refactoring</desc>
            <filename>bug-137841-20141020143103.patch</filename>
            <type>text/plain</type>
            <size>58610</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YWVhZWM4ZThhZTdmNDNiZGI3MzBjYThmZDY0YTQzMjZlYzk1ZmVmLi45NzJjMDQ4MTVhMTA1M2Ji
MmQ0MmY1YmFhYmVlZTIwMjEwNjNjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMTQtMTAtMTcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBEb24ndCBhbGxvY2F0ZSBzdGFjayBzbG90cyBmb3IgY2FwdHVyZWQgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppc0NhcHR1cmVkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9y
UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNldEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1
bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzQ2FwdHVyZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhcHR1cmVkQXJndW1lbnRzSW5kZXgp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dXNl
c0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhh
c0NhcHR1cmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNl
dENhcHR1cmVkQXJndW1lbnRJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpjYXB0dXJlZEFyZ3VtZW50c0luZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplQ2FwdHVyZWRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpy
ZXNvbHZlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNv
bHZlVG9Bcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1v
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkNhcHR1cmVkVmFyaWFibGU6OkNhcHR1cmVkVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpD
YXB0dXJlZFZhcmlhYmxlOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpDYXB0dXJlZFZhcmlh
YmxlOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6Q2FwdHVyZWRWYXJpYWJsZTo6b3BlcmF0
b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6CisgICAgICAgIChKU0M6OkNhcHR1cmVkVmFyaWFibGU6
OnJlZ2lzdGVySUQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ2FwdHVy
ZWRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2FwdHVyZU1vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2hvdWxkQ3JlYXRlQXJn
dW1lbnRzRWFnZXJseSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlOjpvYnNlcnZlQmFkQXJndW1lbnRzVXNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjppc09LVG9PcHRpbWl6ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJndW1lbnRzUmVjb3ZlcnlHZW5lcmF0b3I6OmdlbmVyYXRlRm9yKToKKyAgICAg
ICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjp3cml0ZVRvcCk6CisgICAgICAgIChKU0M6
OkRGRzo6Zm9yRWFjaExvY2FsUmVhZEJ5VW53aW5kKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwv
RlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9u
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZXhpc3RpbmdBcmd1bWVudHMp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVf
Y2FwdHVyZWRfYXJndW1lbnRzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorCiAy
MDE0LTEwLTEwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgVmFy
aW91cyBhcmd1bWVudHMgb3B0aW1pc2F0aW9ucyBpbiBjb2RlZ2VuIGZhaWwgdG8gYWNjb3VudCBm
b3IgYXJndW1lbnRzIGJlaW5nIGluIGxleGljYWwgcmVjb3JkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMWMwNDU0ZWQ0NmEzZWEy
ZTNkMmE2Mzk0N2Q2M2JkYWQzNDIyMmMwZC4uNzFiMDhlNjJkZjY0MGRhMzZjNWEyMjZjZTg2MzYz
YzI4MzlhMDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtOCw2ICs4LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3RvdWNoX2VudHJ5IiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9pbml0X2xhenlfcmVnIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9jcmVhdGVfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzIiwgImxlbmd0aCIgOiAyIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfdGhpcyIsICJsZW5ndGgiIDogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2NhbGxlZSIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdG9fdGhpcyIsICJsZW5ndGgiIDogNCB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBl
NjBjMTRmYmViOTY2MmM3OGZmMzc3NmJkOGFmNmQ3YzM1OTM5YmQ0Li5hZjBkMmEyNjhmMDVhYzQ0
YjNjMzVjMDEwN2FjYzAwMzBhMTFlNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNjAsNiArNjAsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiAKICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVu
dHM6CisgICAgY2FzZSBvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bf
dG9fdGhpczoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAgIGNhc2Ugb3BfcHJv
ZmlsZV9kaWRfY2FsbDoKQEAgLTM2Niw2ICszNjcsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICBjYXNlIG9w
X2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAg
Y2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjQ3YzdjMWI4N2Y1OTll
Y2Q0NGRlYjg4ZTZlZDFiYWU5MzE0OTcyZC4uMTRjMjRiYmE1NDNlYTk0NmU5ZjlmNWE0NjlkZDJm
M2M2OTU5ZDVhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTU4MSwxMiArNTgxLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgICI7ICVkIGNhcHR1cmVkIHZhcihzKSAoZnJv
bSByJWQgdG8gciVkLCBpbmNsdXNpdmUpIiwKICAgICAgICAgICAgIHN5bWJvbFRhYmxlKCktPmNh
cHR1cmVDb3VudCgpLCBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3RhcnQoKSwgc3ltYm9sVGFibGUo
KS0+Y2FwdHVyZUVuZCgpICsgMSk7CiAgICAgfQotICAgIGlmICh1c2VzQXJndW1lbnRzKCkpIHsK
KyAgICBpZiAodXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpIHsKICAgICAgICAgb3V0LnByaW50ZigK
ICAgICAgICAgICAgICI7IHVzZXMgYXJndW1lbnRzLCBpbiByJWQsIHIlZCIsCiAgICAgICAgICAg
ICBhcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpLAogICAgICAgICAgICAgdW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKICAgICB9CisK
KyAgICBpZiAoaGFzQ2FwdHVyZWRBcmd1bWVudHMoKSkgeworICAgICAgICBvdXQucHJpbnRmKAor
ICAgICAgICAgICAgIjsgY2FwdHVyZXMgYXJndW1lbnRzLCBpbiByJWQiLAorICAgICAgICAgICAg
Y2FwdHVyZWRBcmd1bWVudHNJbmRleCgpKTsKKyAgICB9CiAgICAgaWYgKG5lZWRzQWN0aXZhdGlv
bigpICYmIGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAgICAgICBvdXQucHJpbnRmKCI7
IGxleGljYWwgZW52aXJvbm1lbnQgaW4gciVkIiwgYWN0aXZhdGlvblJlZ2lzdGVyKCkub2Zmc2V0
KCkpOwogICAgIG91dC5wcmludGYoIlxuIik7CkBAIC03NTMsNiArNzU5LDExIEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfYXJndW1lbnRzIiwg
cjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVh
dGVfY2FwdHVyZWRfYXJndW1lbnRzOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHMiLCByMCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luaXRfbGF6
eV9yZWc6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiaW5pdF9sYXp5X3JlZyIsIHIwKTsKQEAgLTE5NzgsOSArMTk4OSwxMiBAQCBDb2Rl
QmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBT
dHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVyKHBjWzVdLnUuaW5kZXgpLmltcGwoKTsKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChkaWRDbG9uZVN5bWJvbFRhYmxlKTsKLSAgICAgICAg
ICAgICAgICBpZiAoaWRlbnQgIT0gbV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpZGVudC5pc0VtcHR5KCkgJiYgaWRlbnQgIT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+YXJndW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1fc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgICAgICAgICAg
ICAgIFN5bWJvbFRhYmxlOjpNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bWJvbFRhYmxlLT5maW5k
KGxvY2tlciwgdWlkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9zeW1ib2xU
YWJsZS0+ZW5kKGxvY2tlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkZh
aWxlZCB3aXRoICIsIFN0cmluZyh1aWQpLCAiIC0tICIsIFJhd1BvaW50ZXIodWlkKSwgIlxuIik7
CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZXIg
IT0gbV9zeW1ib2xUYWJsZS0+ZW5kKGxvY2tlcikpOwogICAgICAgICAgICAgICAgICAgICBpdGVy
LT52YWx1ZS5wcmVwYXJlVG9XYXRjaChzeW1ib2xUYWJsZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XS51LndhdGNocG9pbnRTZXQgPSBpdGVyLT52YWx1ZS53YXRj
aHBvaW50U2V0KCk7CkBAIC0yODMzLDcgKzI4NDcsNyBAQCBib29sIENvZGVCbG9jazo6aGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKQogYm9vbCBDb2RlQmxvY2s6OmlzQ2FwdHVyZWQoVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKSBjb25zdAog
ewogICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG9wZXJhbmQu
dG9Bcmd1bWVudCgpICYmIHVzZXNBcmd1bWVudHMoKTsKKyAgICAgICAgcmV0dXJuIG9wZXJhbmQu
dG9Bcmd1bWVudCgpICYmIChoYXNDYXB0dXJlZEFyZ3VtZW50cygpIHx8IHVzZXNBcmd1bWVudHNS
ZWdpc3RlcigpKTsKIAogICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiBp
bmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVkVmFycy5nZXQob3BlcmFuZC50b0xvY2FsKCkpOwpAQCAt
Mjg0NCw5ICsyODU4LDkgQEAgYm9vbCBDb2RlQmxvY2s6OmlzQ2FwdHVyZWQoVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEYKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBEaXR0byBmb3IgdGhlIGFyZ3VtZW50cyBvYmplY3QuCi0gICAgaWYg
KHVzZXNBcmd1bWVudHMoKSAmJiBvcGVyYW5kID09IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCisgICAg
aWYgKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpICYmIG9wZXJhbmQgPT0gYXJndW1lbnRzUmVnaXN0
ZXIoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHVzZXNBcmd1bWVudHMoKSAmJiBv
cGVyYW5kID09IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3Rlcigp
KSkKKyAgICBpZiAodXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgJiYgb3BlcmFuZCA9PSB1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gV2UncmUgaW4gZ2xvYmFsIGNvZGUgc28gdGhlcmUgYXJlIG5vIGxv
Y2FscyB0byBjYXB0dXJlCkBAIC0zODQ3LDcgKzM4NjEsNyBAQCBTdHJpbmcgQ29kZUJsb2NrOjpu
YW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgibGV4aWNhbCBlbnZpcm9ubWVudCIpOwogICAgIGlmICh2aXJ0
dWFsUmVnaXN0ZXIgPT0gdGhpc1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoInRoaXMiKTsKLSAgICBpZiAodXNlc0FyZ3VtZW50cygpKSB7CisgICAgaWYgKHVzZXNBcmd1
bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIgPT0gYXJndW1l
bnRzUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImFyZ3VtZW50
cyIpOwogICAgICAgICBpZiAodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1Jl
Z2lzdGVyKCkpID09IHZpcnR1YWxSZWdpc3RlcikKQEAgLTM4NzcsNiArMzg5MSw3IEBAIHN0cnVj
dCBWZXJpZnlDYXB0dXJlZERlZiB7CiAgICAgICAgIGNhc2Ugb3BfZW50ZXI6CiAgICAgICAgIGNh
c2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOgor
ICAgICAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4ODYsOSAr
MzkwMSwxNCBAQCBzdHJ1Y3QgVmVyaWZ5Q2FwdHVyZWREZWYgewogICAgICAgICBpZiAoIXZpcnR1
YWxSZWcuaXNMb2NhbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChjb2Rl
QmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiB2aXJ0dWFsUmVnID09IGNvZGVCbG9jay0+YXJndW1l
bnRzUmVnaXN0ZXIoKSkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+aGFzQ2FwdHVyZWRBcmd1bWVu
dHMoKSAmJiBvcGVyYW5kID09IGNvZGVCbG9jay0+Y2FwdHVyZWRBcmd1bWVudHNJbmRleCgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoY29kZUJsb2NrLT5oYXNDYXB0dXJlZEFy
Z3VtZW50cygpICYmIHZpcnR1YWxSZWcgPT0gdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKFZp
cnR1YWxSZWdpc3Rlcihjb2RlQmxvY2stPmNhcHR1cmVkQXJndW1lbnRzSW5kZXgoKSkpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHNS
ZWdpc3RlcigpICYmIHZpcnR1YWxSZWcgPT0gY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3Rlcigp
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VzQXJndW1l
bnRzKCkgJiYgdmlydHVhbFJlZyA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlc0Fy
Z3VtZW50c1JlZ2lzdGVyKCkgJiYgdmlydHVhbFJlZyA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBpZiAoY29kZUJsb2NrLT5jYXB0dXJlQ291bnQoKSAmJiBjb2RlQmxvY2st
PnN5bWJvbFRhYmxlKCktPmlzQ2FwdHVyZWQob3BlcmFuZCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2NjBhNWM0ZTYxMmQ3OTVmNDgzYzhjZDZl
ODhmZDU5OWNmYjg0OGQ2Li43MjQyYjU4NGRlODgwZTNkOWE2MzhlMjQ4NzNiZDdjNDRhOWU4NDNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMjcs
MTYgKzMyNywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoYXJndW1lbnRzUmVn
aXN0ZXIuaXNWYWxpZCgpKTsKICAgICAgICAgbV9hcmd1bWVudHNSZWdpc3RlciA9IGFyZ3VtZW50
c1JlZ2lzdGVyOwotICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50cygpKTsKKyAgICAgICAgQVNT
RVJUKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGFyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVCh1c2VzQXJn
dW1lbnRzKCkpOworICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpOwogICAg
ICAgICByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsKICAgICB9CiAgICAgVmlydHVhbFJlZ2lz
dGVyIHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKCkKICAgICB7Ci0gICAgICAgIGlmICghdXNl
c0FyZ3VtZW50cygpKQorICAgICAgICBpZiAoIXVzZXNBcmd1bWVudHNSZWdpc3RlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICByZXR1cm4gYXJndW1l
bnRzUmVnaXN0ZXIoKTsKICAgICB9CkBAIC0zNTYsNyArMzU2LDkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICB9CiAKLSAgICBib29s
IHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFs
aWQoKTsgfQorICAgIGJvb2wgdXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9hcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0NhcHR1cmVkQXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc0NhcHR1cmVkQXJndW1l
bnRzKCk7IH0KKyAgICBpbnQgY2FwdHVyZWRBcmd1bWVudHNJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRDb2RlLT5jYXB0dXJlZEFyZ3VtZW50c0luZGV4KCk7IH0KIAogICAgIGJvb2wg
bmVlZHNBY3RpdmF0aW9uKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA2YzI5M2NjZjk4ZDU2
NzMyNmRjNDJmYWJkNWRmYTQxZDIzZjZjMmMxLi4zMzY2ZTliMzI1MzRkMDdmMjFkMDY5MmI1NTM2
M2QzMmQzZTdhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTIwMyw2ICsyMDMsNyBAQCBVbmxpbmtlZENvZGVC
bG9jazo6VW5saW5rZWRDb2RlQmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29k
ZVR5cGUgY29kZQogICAgICwgbV92bSh2bSkKICAgICAsIG1fYXJndW1lbnRzUmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyKCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyKFZpcnR1YWxSZWdp
c3RlcigpKQorICAgICwgbV9jYXB0dXJlZEFyZ3VtZW50c0luZGV4KDApCiAgICAgLCBtX25lZWRz
RnVsbFNjb3BlQ2hhaW4oaW5mby5tX25lZWRzQWN0aXZhdGlvbikKICAgICAsIG1fdXNlc0V2YWwo
aW5mby5tX3VzZXNFdmFsKQogICAgICwgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24oZmFsc2Up
CkBAIC0yMTAsNiArMjExLDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2Nr
KFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKICAgICAsIG1faXND
b25zdHJ1Y3RvcihpbmZvLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJp
YWJsZXMoZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8ubV9pc0J1aWx0aW5G
dW5jdGlvbikKKyAgICAsIG1faGFzQ2FwdHVyZWRBcmd1bWVudHMoZmFsc2UpCiAgICAgLCBtX2Zp
cnN0TGluZSgwKQogICAgICwgbV9saW5lQ291bnQoMCkKICAgICAsIG1fZW5kQ29sdW1uKFVJTlRf
TUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCA2NWYyOGJkNjBmYzc1MDgwZDZhNjVkNzk2MTNmOWQ1ZWE5NDUyMWY2Li4w
ZjMzZTQzOTYyZjQ5N2RkYjQwZmJkNTg1NWY5NDUyNzc5MTI5ODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMjg1LDkg
KzI4NSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3RpdmF0aW9uUmVnaXN0ZXIoVmlydHVh
bFJlZ2lzdGVyIGFjdGl2YXRpb25SZWdpc3RlcikgeyBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lz
dGVyID0gYWN0aXZhdGlvblJlZ2lzdGVyOyB9CiAKICAgICB2b2lkIHNldEFyZ3VtZW50c1JlZ2lz
dGVyKFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlcikgeyBtX2FyZ3VtZW50c1JlZ2lz
dGVyID0gYXJndW1lbnRzUmVnaXN0ZXI7IH0KLSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lzdGVyLmlzVmFsaWQoKTsgfQorICAgIGJvb2wgdXNl
c0FyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3Rlci5p
c1ZhbGlkKCk7IH0KKwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7IH0KIAorICAgIGJvb2wgaGFzQ2FwdHVy
ZWRBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0NhcHR1cmVkQXJndW1lbnRzOyB9Cisg
ICAgdm9pZCBzZXRDYXB0dXJlZEFyZ3VtZW50SW5kZXgoaW50IGNhcHR1cmVkQXJndW1lbnRzSW5k
ZXgpCisgICAgeworICAgICAgICBtX2NhcHR1cmVkQXJndW1lbnRzSW5kZXggPSBjYXB0dXJlZEFy
Z3VtZW50c0luZGV4OworICAgICAgICBtX2hhc0NhcHR1cmVkQXJndW1lbnRzID0gdHJ1ZTsKKyAg
ICB9CisgICAgaW50IGNhcHR1cmVkQXJndW1lbnRzSW5kZXgoKSBjb25zdCB7ICByZXR1cm4gbV9j
YXB0dXJlZEFyZ3VtZW50c0luZGV4OyB9CiAKICAgICBib29sIHVzZXNHbG9iYWxPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyLmlzVmFsaWQoKTsgfQogICAgIHZv
aWQgc2V0R2xvYmFsT2JqZWN0UmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGdsb2JhbE9iamVjdFJl
Z2lzdGVyKSB7IG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIgPSBnbG9iYWxPYmplY3RSZWdpc3Rlcjsg
fQpAQCAtNTIyLDYgKzUzMCw3IEBAIHByaXZhdGU6CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fYXJn
dW1lbnRzUmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fbGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXI7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXI7Cisg
ICAgaW50IG1fY2FwdHVyZWRBcmd1bWVudHNJbmRleDsKIAogICAgIGJvb2wgbV9uZWVkc0Z1bGxT
Y29wZUNoYWluIDogMTsKICAgICBib29sIG1fdXNlc0V2YWwgOiAxOwpAQCAtNTMwLDYgKzUzOSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQ29uc3RydWN0b3IgOiAxOwogICAgIGJvb2wgbV9o
YXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgYm9vbCBtX2lzQnVpbHRpbkZ1bmN0aW9uIDog
MTsKKyAgICBib29sIG1faGFzQ2FwdHVyZWRBcmd1bWVudHMgOiAxOwogICAgIHVuc2lnbmVkIG1f
Zmlyc3RMaW5lOwogICAgIHVuc2lnbmVkIG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5k
Q29sdW1uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzMjdiNWQ4NWYwYjMwYTIwMjM1MGQxYTk2OTVj
ZTUyYjAxMTdkNGViLi5jZTIwZjU2YzQxNDIxYzZiNjRmMDY1YzBmZWM4ZWNhYWM0MmNjNTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMjU0LDM5ICsyNTQsNjkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5
LCBVbmwKICAgICB9CiAgICAgUmVnaXN0ZXJJRCogbG9jYWxBcmd1bWVudHNSZWdpc3RlciA9IG51
bGxwdHI7CiAgICAgUmVnaXN0ZXJJRCogc2NyYXRjaCA9IGFkZFZhcigpOworICAgIGVtaXRJbml0
TGF6eVJlZ2lzdGVyKHNjcmF0Y2gpOwogICAgIG1fc3ltYm9sVGFibGUtPnNldENhcHR1cmVTdGFy
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChtX2NvZGVCbG9jay0+bV9udW1WYXJzKS5vZmZzZXQo
KSk7CiAKICAgICBpZiAoZnVuY3Rpb25Cb2R5LT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpKSB7IC8vIE1heSByZWlmeSBhcmd1bWVudHMgb2JqZWN0LgotICAgICAgICBS
ZWdpc3RlcklEKiB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIoKTsgLy8gQW5v
bnltb3VzLCBzbyBpdCBjYW4ndCBiZSBtb2RpZmllZCBieSB1c2VyIGNvZGUuCi0gICAgICAgIFJl
Z2lzdGVySUQqIGFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkVmFyKHByb3BlcnR5TmFtZXMoKS5hcmd1
bWVudHMsIElzVmFyaWFibGUsIE5vdFdhdGNoYWJsZSk7IC8vIENhbiBiZSBjaGFuZ2VkIGJ5IGFz
c2lnbmluZyB0byAnYXJndW1lbnRzJy4KLQotICAgICAgICBsb2NhbEFyZ3VtZW50c1JlZ2lzdGVy
ID0gYXJndW1lbnRzUmVnaXN0ZXI7Ci0KLSAgICAgICAgLy8gV2UgY2FuIHNhdmUgYSBsaXR0bGUg
c3BhY2UgYnkgaGFyZC1jb2RpbmcgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSB0d28KLSAgICAgICAg
Ly8gJ2FyZ3VtZW50cycgdmFsdWVzIGFyZSBzdG9yZWQgaW4gY29uc2VjdXRpdmUgcmVnaXN0ZXJz
LCBhbmQgc3RvcmluZwotICAgICAgICAvLyBvbmx5IHRoZSBpbmRleCBvZiB0aGUgYXNzaWduYWJs
ZSBvbmUuCi0gICAgICAgIGNvZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXItPnZpcnR1YWxSZWdpc3RlcigpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRCh1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlci0+dmly
dHVhbFJlZ2lzdGVyKCkgPT0gSlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKSk7Ci0KLSAgICAgICAgZW1pdEluaXRMYXp5UmVnaXN0
ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOwotICAgICAgICBlbWl0SW5pdExhenlSZWdpc3Rlcih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICBpZiAobV9sZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3RlcikgeworICAgICAgICAgICAgQ2FwdHVyZWRWYXJpYWJsZSBjYXB0dXJlZFVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZENhcHR1cmVkVmFyKCk7IC8vIEFub255bW91cywg
c28gaXQgY2FuJ3QgYmUgbW9kaWZpZWQgYnkgdXNlciBjb2RlLgorICAgICAgICAgICAgQ2FwdHVy
ZWRWYXJpYWJsZSBjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkQ2FwdHVyZWRWYXIocHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cywgSXNWYXJpYWJsZSwgTm90V2F0Y2hhYmxlKTsgLy8gQ2Fu
IGJlIGNoYW5nZWQgYnkgYXNzaWduaW5nIHRvICdhcmd1bWVudHMnLgorCisgICAgICAgICAgICBp
ZiAoZnVuY3Rpb25Cb2R5LT5tb2RpZmllc0FyZ3VtZW50cygpKQorICAgICAgICAgICAgICAgIGxv
Y2FsQXJndW1lbnRzUmVnaXN0ZXIgPSBjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVyLnJlZ2lzdGVy
SUQoKTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIHNhdmUgYSBsaXR0bGUgc3BhY2UgYnkgaGFy
ZC1jb2RpbmcgdGhlIGtub3dsZWRnZSB0aGF0IHRoZSB0d28KKyAgICAgICAgICAgIC8vICdhcmd1
bWVudHMnIHZhbHVlcyBhcmUgc3RvcmVkIGluIGNvbnNlY3V0aXZlIHJlZ2lzdGVycywgYW5kIHN0
b3JpbmcKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIGluZGV4IG9mIHRoZSBhc3NpZ25hYmxlIG9u
ZS4KKyAgICAgICAgICAgIGNvZGVCbG9jay0+c2V0Q2FwdHVyZWRBcmd1bWVudEluZGV4KGNhcHR1
cmVkQXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChjYXB0dXJlZFVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgY2FwdHVyZWRVbm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1YWxSZWdpc3RlcigpID09IEpTQzo6dW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGNhcHR1cmVkQXJndW1lbnRzUmVnaXN0ZXItPnZpcnR1YWxSZWdpc3Rl
cigpKSk7CisKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3Vt
ZW50cyk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NyYXRjaC0+aW5kZXgo
KSk7CisgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShjYXB0dXJlZFVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgc2NyYXRj
aCk7CisgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShjYXB0dXJlZEFyZ3Vt
ZW50c1JlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBzY3JhdGNoKTsKKyAgICAg
ICAgICAgIGlmIChsb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKQorICAgICAgICAgICAgICAgIGVtaXRN
b3ZlKGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIsIHNjcmF0Y2gpOworICAgICAgICAgICAgZW1pdE9w
Y29kZShvcF9tb3YpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhcHR1cmVk
VW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpLT5pbmRleCgp
KTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbW92KTsKKyAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChjYXB0dXJlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGpzVW5kZWZpbmVk
KCkpLT5pbmRleCgpKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKCFj
b2RlQmxvY2stPnVzZXNFdmFsKCkpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCogdW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkVmFyKCk7IC8vIEFub255bW91cywgc28gaXQgY2FuJ3Qg
YmUgbW9kaWZpZWQgYnkgdXNlciBjb2RlLgorICAgICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1l
bnRzUmVnaXN0ZXIgPSBhZGRWYXIocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgSXNWYXJpYWJs
ZSwgTm90V2F0Y2hhYmxlKTsgLy8gQ2FuIGJlIGNoYW5nZWQgYnkgYXNzaWduaW5nIHRvICdhcmd1
bWVudHMnLgorCisgICAgICAgICAgICBsb2NhbEFyZ3VtZW50c1JlZ2lzdGVyID0gYXJndW1lbnRz
UmVnaXN0ZXI7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBzYXZlIGEgbGl0dGxlIHNwYWNlIGJ5
IGhhcmQtY29kaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCB0aGUgdHdvCisgICAgICAgICAgICAvLyAn
YXJndW1lbnRzJyB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBjb25zZWN1dGl2ZSByZWdpc3RlcnMsIGFu
ZCBzdG9yaW5nCisgICAgICAgICAgICAvLyBvbmx5IHRoZSBpbmRleCBvZiB0aGUgYXNzaWduYWJs
ZSBvbmUuCisgICAgICAgICAgICBjb2RlQmxvY2stPnNldEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3Vt
ZW50c1JlZ2lzdGVyLT52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciwgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyLT52aXJ0dWFsUmVnaXN0ZXIoKSA9PSBKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKKworICAgICAgICAgICAgZW1pdElu
aXRMYXp5UmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAgZW1pdEluaXRM
YXp5UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAg
ICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVudHNFYWdlcmx5KCkgfHwgc2hvdWxkVGVhck9mZkFy
Z3VtZW50c0VhZ2VybHkoKSkgewotICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJn
dW1lbnRzKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdp
c3Rlci0+aW5kZXgoKSk7Ci0gICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmhhc0FjdGl2YXRp
b25SZWdpc3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRzUmVn
aXN0ZXIgPSAmcmVnaXN0ZXJGb3IobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zm
c2V0KCkpOwotICAgICAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKGFyZ3Vt
ZW50c1JlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBhcmd1bWVudHNSZWdpc3Rl
cik7Ci0gICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogdW5jaGVja2VkQXJndW1lbnRzUmVnaXN0
ZXIgPSAmcmVnaXN0ZXJGb3IoSlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIobV9jb2Rl
QmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBp
bml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZSh1bmNoZWNrZWRBcmd1bWVudHNSZWdpc3RlciwgcHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cywgdW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgICAgIGlmIChmdW5jdGlvbkJvZHktPm1vZGlmaWVzQXJndW1lbnRzKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9tb3YpOwotICAgICAgICAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwotICAg
ICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShq
c1VuZGVmaW5lZCgpKS0+aW5kZXgoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRPcGNvZGUo
b3BfbW92KTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHVuY2hl
Y2tlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4
KCkpOwotICAgICAgICAgICAgICAgICAgICBsb2NhbEFyZ3VtZW50c1JlZ2lzdGVyID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIGlmIChzaG91bGRUZWFyT2ZmQXJndW1lbnRzRWFnZXJseSgpKSB7Cisg
ICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKKyAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkp
OworICAgICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aGFzQWN0aXZhdGlvblJlZ2lzdGVy
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRzUmVnaXN0ZXIg
PSAmcmVnaXN0ZXJGb3IobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkp
OworICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShhcmd1bWVu
dHNSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgYXJndW1lbnRzUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcklEKiB1bmNoZWNrZWRBcmd1bWVudHNSZWdp
c3RlciA9ICZyZWdpc3RlckZvcihKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihtX2Nv
ZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZSh1bmNoZWNrZWRBcmd1bWVudHNSZWdpc3Rl
ciwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgdW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5tb2RpZmllc0FyZ3VtZW50
cygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0
ZXItPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF9tb3YpOworICAgICAgICAgICAgICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRl
eCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0y
OTUsMTIgKzMyNSwxMiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbFRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2Nr
LT51c2VzRXZhbCgpOwogCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFs
c2U7Ci0gICAgVmVjdG9yPFJlZ2lzdGVySUQqLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2Fw
dHVyZWRBcmd1bWVudHM7CisgICAgVmVjdG9yPENhcHR1cmVkVmFyaWFibGUsIDAsIFVuc2FmZVZl
Y3Rvck92ZXJmbG93PiBjYXB0dXJlZEFyZ3VtZW50czsKICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpIHx8IHNob3VsZENhcHR1cmVBbGxUaGVUaGluZ3MpIHsKICAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKmZ1bmN0aW9uQm9keS0+cGFy
YW1ldGVycygpOwogICAgICAgICBjYXB0dXJlZEFyZ3VtZW50cy5yZXNpemUocGFyYW1ldGVycy5z
aXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gMDsKKyAgICAgICAg
ICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gcGF0
dGVybiA9IHBhcmFtZXRlcnMuYXQoaSk7CiAgICAgICAgICAgICBpZiAoIXBhdHRlcm4tPmlzQmlu
ZGluZ05vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMwOCw3ICszMzgsNyBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJv
ZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkJvZHkt
PmNhcHR1cmVzKGlkZW50KSAmJiAhc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNhcHR1cmVzQW55QXJndW1lbnRCeU5hbWUg
PSB0cnVlOwotICAgICAgICAgICAgY2FwdHVyZWRBcmd1bWVudHNbaV0gPSBhZGRWYXIoKTsKKyAg
ICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gYWRkQ2FwdHVyZWRWYXIoKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNDk4LDcgKzUyOCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0SW5pdExhenlSZWdpc3RlcihSZWdpc3RlcklEKiByZWcpCiAgICAgcmV0dXJu
IHJlZzsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVDYXB0
dXJlZFZhcmlhYmxlKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBSZWdpc3RlcklEKiB2YWx1ZSkKK0NhcHR1cmVkVmFyaWFibGUgQnl0ZWNvZGVHZW5lcmF0
b3I6OmluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKENhcHR1cmVkVmFyaWFibGUgZHN0LCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFJlZ2lzdGVySUQqIHZhbHVlKQogewogCiAgICAg
bV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKQEAgLTUwNyw3ICs1MzcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6aW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eU5hbWUpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChSZXNvbHZlTW9kZUFuZFR5cGUoVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIpLm9wZXJhbmQoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh3YXRjaGFibGVWYXJpYWJsZShWaXJ0dWFsUmVnaXN0ZXIoZHN0LT5p
bmRleCgpKS50b0xvY2FsKCkpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRl
eCgpKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtNTE1LDE0ICs1NDUsMTQgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKFJlZ2lzdGVy
SUQqIGRzdCwgY29uc3QKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlQ2Fs
bGVlKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUpCiB7CiAgICAgaWYgKCFmdW5j
dGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Cb2R5
Tm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMobV9jb2RlQmxv
Y2stPnVzZXNFdmFsKCksIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIu
c2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKICAgICBpZiAoZnVuY3Rpb25Cb2R5Tm9kZS0+Y2Fw
dHVyZXMoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSkpCi0gICAgICAgIHJldHVybiBpbml0aWFs
aXplQ2FwdHVyZWRWYXJpYWJsZShhZGRWYXIoKSwgZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwg
Jm1fY2FsbGVlUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZUNhcHR1cmVkVmFy
aWFibGUoYWRkQ2FwdHVyZWRWYXIoKSwgZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIpLnJlZ2lzdGVySUQoKTsKIAogICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3Rl
cjsKIH0KQEAgLTU2Miw3ICs1OTIsNyBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjp3aWxsUmVz
b2x2ZVRvQXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIGlmIChlbnRyeS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fY29kZUJsb2NrLT51
c2VzQXJndW1lbnRzKCkgJiYgbV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9sb2NhbEFy
Z3VtZW50c1JlZ2lzdGVyKQorICAgIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lz
dGVyKCkgJiYgbV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgbV9sb2NhbEFyZ3VtZW50c1Jl
Z2lzdGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMDMzLDcgKzEwNjMsNiBAQCB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkUmVnRXhw
KFJlZ0V4cCogcikKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TW92ZShSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykKIHsKICAgICBtX3N0YXRpY1Byb3BlcnR5QW5h
bHl6ZXIubW92KGRzdC0+aW5kZXgoKSwgc3JjLT5pbmRleCgpKTsKLSAgICBBU1NFUlQoZHN0LT52
aXJ0dWFsUmVnaXN0ZXIoKSA9PSBtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSB8fCAh
aXNDYXB0dXJlZChkc3QtPmluZGV4KCkpKTsKICAgICBlbWl0T3Bjb2RlKG9wX21vdik7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHNyYy0+aW5kZXgoKSk7CkBAIC0xNzM1LDEwICsxNzY0LDEwIEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmNyZWF0ZUFyZ3VtZW50c0lmTmVjZXNzYXJ5KCkKICAgICBpZiAobV9jb2Rl
VHlwZSAhPSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoIW1f
Y29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpCisgICAgaWYgKCFtX2NvZGVCbG9jay0+dXNlc0Fy
Z3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzaG91bGRUZWFy
T2ZmQXJndW1lbnRzRWFnZXJseSgpIHx8IHNob3VsZENyZWF0ZUFyZ3VtZW50c0VhZ2VybHkoKSkK
KyAgICBpZiAoc2hvdWxkVGVhck9mZkFyZ3VtZW50c0VhZ2VybHkoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfYXJndW1lbnRzKTsKQEAgLTE5MzQsMTkgKzE5
NjMsMjAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsVmFyYXJncyhP
cGNvZGVJRCBvcGNvZGUsIFJlZ2lzdGVySUQqIGRzdCwKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXR1cm4oUmVnaXN0ZXJJRCogc3JjKQogewotICAgIGlmIChtX2NvZGVC
bG9jay0+dXNlc0FyZ3VtZW50cygpICYmIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgIT0g
MSAmJiAhaXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjcmF0
Y2hSZWdpc3RlcjsKLSAgICAgICAgaW50IGFyZ3VtZW50c0luZGV4ID0gdW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKS5vZmZzZXQoKTsK
LSAgICAgICAgaWYgKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgJiYgbV9jb2RlVHlwZSA9
PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgICAgIHNjcmF0Y2hSZWdpc3RlciA9IG5ld1RlbXBv
cmFyeSgpOwotICAgICAgICAgICAgZW1pdEdldE93blNjb3BlKHNjcmF0Y2hSZWdpc3Rlci5nZXQo
KSwgcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywgT3duU2NvcGVGb3JSZXR1cm4pOwotICAgICAg
ICAgICAgUmVzb2x2ZVNjb3BlSW5mbyBzY29wZUluZm8odW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKS5vZmZzZXQoKSk7Ci0gICAgICAg
ICAgICBlbWl0R2V0RnJvbVNjb3BlKHNjcmF0Y2hSZWdpc3Rlci5nZXQoKSwgc2NyYXRjaFJlZ2lz
dGVyLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBUaHJvd0lmTm90Rm91bmQsIHNj
b3BlSW5mbyk7Ci0gICAgICAgICAgICBhcmd1bWVudHNJbmRleCA9IHNjcmF0Y2hSZWdpc3Rlci0+
aW5kZXgoKTsKLSAgICAgICAgfQorICAgIGlmIChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1Jl
Z2lzdGVyKCkgJiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAxICYmICFpc1N0cmlj
dE1vZGUoKSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3Rlcik7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKLSAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50c0luZGV4KTsKLSAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPyBtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRleCgpIDogZW1pdExvYWQoMCwgSlNWYWx1ZSgpKS0+
aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsK
KyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGVtaXRMb2FkKDAsIEpTVmFsdWUoKSktPmlu
ZGV4KCkpOworICAgIH0gZWxzZSBpZiAobV9jb2RlQmxvY2stPmhhc0NhcHR1cmVkQXJndW1lbnRz
KCkgJiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAxICYmICFpc1N0cmljdE1vZGUo
KSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjcmF0Y2hSZWdpc3RlciA9IG5ld1RlbXBv
cmFyeSgpOworICAgICAgICBlbWl0R2V0T3duU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBw
cm9wZXJ0eU5hbWVzKCkuZXhlY3V0aW9uQ291bnQsIE93blNjb3BlRm9yUmV0dXJuKTsKKyAgICAg
ICAgUmVzb2x2ZVNjb3BlSW5mbyBzY29wZUluZm8obV9jb2RlQmxvY2stPmNhcHR1cmVkQXJndW1l
bnRzSW5kZXgoKSk7CisgICAgICAgIGVtaXRHZXRGcm9tU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdl
dCgpLCBzY3JhdGNoUmVnaXN0ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5leGVjdXRpb25Db3Vu
dCwgVGhyb3dJZk5vdEZvdW5kLCBzY29wZUluZm8pOworICAgICAgICBlbWl0T3Bjb2RlKG9wX3Rl
YXJfb2ZmX2FyZ3VtZW50cyk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY3JhdGNo
UmVnaXN0ZXItPmluZGV4KCkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogCiAgICAgLy8gQ29uc3Ry
dWN0b3JzIHVzZSBvcF9yZXRfb2JqZWN0X29yX3RoaXMgdG8gY2hlY2sgdGhlIHJlc3VsdCBpcyBh
bgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDQ2ZDU5MGRlNzAxNmExMmQzNjNmOTQ2MDEzZTIxODJmZDRhY2Jj
MzIuLjJiNDhkOWI1MDZkMTkzNzNlMjIxMjljMjVmNzgwNmFlYmI0NTg1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTE3OSwxMSArMTc5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeURhdGEq
IHRyeURhdGE7CiAgICAgfTsKIAotICAgIGVudW0gQ2FwdHVyZU1vZGUgewotICAgICAgICBOb3RD
YXB0dXJlZCwKLSAgICAgICAgSXNDYXB0dXJlZAotICAgIH07Ci0KICAgICBjbGFzcyBMb2NhbCB7
CiAgICAgcHVibGljOgogICAgICAgICBMb2NhbCgpCkBAIC0yNTMsNiArMjQ4LDMwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBQcm9maWxlVHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0
ZW1lbnQKICAgICB9OwogCisgICAgc3RydWN0IENhcHR1cmVkVmFyaWFibGUgeworICAgICAgICBD
YXB0dXJlZFZhcmlhYmxlKFJlZ2lzdGVySUQqIHJlZykKKyAgICAgICAgICAgIDogbV9yZWdpc3Rl
cihyZWcpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIENhcHR1cmVkVmFyaWFibGUo
KQorICAgICAgICAgICAgOiBtX3JlZ2lzdGVyKG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcmVnaXN0ZXI7
IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fcmVnaXN0ZXI7
IH0KKyAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0ZXI7IH0KKworICAgICAgICB0eXBlZGVmIFJlZ2lzdGVySUQqIChDYXB0dXJlZFZh
cmlhYmxlOjoqVW5zcGVjaWZpZWRCb29sVHlwZSk7CisgICAgICAgIG9wZXJhdG9yIFVuc3BlY2lm
aWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyID8gJkNhcHR1cmVkVmFyaWFi
bGU6Om1fcmVnaXN0ZXIgOiBudWxscHRyOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogcmVnaXN0
ZXJJRCgpIHsgcmV0dXJuIG1fcmVnaXN0ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFJl
Z2lzdGVySUQqIG1fcmVnaXN0ZXI7CisgICAgfTsKKwogICAgIGNsYXNzIEJ5dGVjb2RlR2VuZXJh
dG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAt
MjgyLDggKzMwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiB1bmNo
ZWNrZWRMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCk7CiAKICAgICAgICAgYm9vbCBpc0NhcHR1cmVk
KGludCBvcGVyYW5kKTsKLSAgICAgICAgQ2FwdHVyZU1vZGUgY2FwdHVyZU1vZGUoaW50IG9wZXJh
bmQpIHsgcmV0dXJuIGlzQ2FwdHVyZWQob3BlcmFuZCkgPyBJc0NhcHR1cmVkIDogTm90Q2FwdHVy
ZWQ7IH0KLSAgICAgICAgCisKICAgICAgICAgTG9jYWwgbG9jYWwoY29uc3QgSWRlbnRpZmllciYp
OwogICAgICAgICBMb2NhbCBjb25zdExvY2FsKGNvbnN0IElkZW50aWZpZXImKTsKIApAQCAtNjA3
LDYgKzYyNSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBBZGRzIGEgdmFyIHNs
b3QgYW5kIG1hcHMgaXQgdG8gdGhlIG5hbWUgaWRlbnQgaW4gc3ltYm9sVGFibGUoKS4KICAgICAg
ICAgZW51bSBXYXRjaE1vZGUgeyBJc1dhdGNoYWJsZSwgTm90V2F0Y2hhYmxlIH07CisKKyAgICAg
ICAgQ2FwdHVyZWRWYXJpYWJsZSBhZGRDYXB0dXJlZFZhcigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBhZGRWYXIoKTsKKyAgICAgICAgfQorICAgICAgICBDYXB0dXJlZFZhcmlhYmxl
IGFkZENhcHR1cmVkVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBDb25zdGFudE1vZGUgY29u
c3RhbnRNb2RlLCBXYXRjaE1vZGUgd2F0Y2hNb2RlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRkVmFyKGlkZW50LCBjb25zdGFudE1vZGUsIHdhdGNoTW9kZSk7CisgICAgICAgIH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogYWRkVmFyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBDb25z
dGFudE1vZGUgY29uc3RhbnRNb2RlLCBXYXRjaE1vZGUgd2F0Y2hNb2RlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBSZWdpc3RlcklEKiBsb2NhbDsKQEAgLTY1OSw3ICs2ODYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJh
cmdzKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogYXJndW1l
bnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdz
KE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQq
IHRoaXNSZWdpc3RlciwgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZy
ZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmls
ZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUoUmVnaXN0ZXJJRCog
ZHN0LCBjb25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCopOworICAgICAgICBDYXB0dXJlZFZh
cmlhYmxlIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKENhcHR1cmVkVmFyaWFibGUgZHN0LCBj
b25zdCBJZGVudGlmaWVyJiwgUmVnaXN0ZXJJRCopOwogCiAgICAgICAgIC8vIFdlJ2xsIG1heSB3
YW50IGEgbm9uLXJldHVybiBtb2RlIGluIGZ1dHVyZSwgYnV0IGN1cnJlbnRseQogICAgICAgICAv
LyB0aGlzIGlzIG9ubHkgdXNlZCBkdXJpbmcgZW1pdFJldHVybigpLiBlbWl0UmV0dXJuKCkgb2Nj
dXJzCkBAIC03MDUsMTMgKzczMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmIGlzU3RyaWN0TW9kZSgpICYmIG1fc2Nv
cGVOb2RlLT5tb2RpZmllc1BhcmFtZXRlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBz
aG91bGRDcmVhdGVBcmd1bWVudHNFYWdlcmx5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHJldHVybiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICYmIG1f
Y29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0VGhyb3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCiAgICAgICAgIHZv
aWQgY3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCAy
YmQ5OWUyMDJjNmRjZjZmZWE3ZTFjMTAyYWZlMTAyMDlhZTA5OGMxLi5lMTcxMTNmZTNjNTU2NDIy
YWJhZWYwN2RkM2EzNzg2NWZlOWQ2YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xMjk4LDcg
KzEyOTgsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5maWx0ZXIoflNwZWNFbXB0eSk7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWVyZ2UoU3BlY0Fy
Z3VtZW50cyk7CiAgICAgICAgIGJyZWFrOwotICAgICAgICAKKworICAgIGNhc2UgQ3JlYXRlQ2Fw
dHVyZWRBcmd1bWVudHM6CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShTcGVjQXJndW1l
bnRzKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CiAgICAg
ICAgIC8vIERvZXMgbm90aGluZyB0aGF0IGlzIHVzZXItdmlzaWJsZS4KICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCA5MjBjNDY2MmNiMTY3ODcwZmNiYjQ5NGZm
ODhkMzMyNDZmYmVlMjBjLi40NWFiOGMyMDE4NmJmZjkzZGQwY2VjZTRmMWM4ZjBhMGM4YWI2ZDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTE2Nyw2ICsxNjcsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9j
ayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1
bWVudHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gSWdub3JlIHRoaXMgb3AuIElmIHdlIHNlZSBhIGxvbmUgQ3JlYXRlQXJn
dW1lbnRzIHRoZW4gd2Ugd2FudCB0bwogICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZWx5
IGlnbm9yZSBpdCBiZWNhdXNlOgpAQCAtNjQ1LDYgKzY0Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAg
ICAgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVB
cmd1bWVudHM6IHsKICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTc0
MSw3ICs3NDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKworICAgICAgICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOgogICAgICAgICBj
YXNlIENyZWF0ZUFyZ3VtZW50czogewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggN2Y5MDc2ODc3M2Q2NjZlYzU5MGIzNDk0NWEwYWUyNmE0MDQ5MzY5ZC4uYmYzMTI0Nzk2
MzVjMGUwMDYyOWEzNjE4NjJkNmZiN2NhZWUyYTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0MDcsNiArMzQwNywxMyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KIAorICAgICAg
ICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6IHsKKyAgICAgICAgICAgIG1fZ3Jh
cGgubV9oYXNBcmd1bWVudHMgPSB0cnVlOworICAgICAgICAgICAgTm9kZSogY3JlYXRlQXJndW1l
bnRzID0gYWRkVG9HcmFwaChDcmVhdGVDYXB0dXJlZEFyZ3VtZW50cyk7CisgICAgICAgICAgICBz
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBjcmVh
dGVBcmd1bWVudHMpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY3JlYXRlX2NhcHR1cmVk
X2FyZ3VtZW50cyk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3Vt
ZW50czogewogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBcmd1bWVudHMsIGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZjEyYTE3ZTdjNDU1MjljYmIzZTQ5ZWQ3
MjVlMWQ4YWFhOGU4NjI1Yy4uNTQ0NzNhMjcwNThlMTY0MzRjYzg2MDE4N2VkMmFhODEwYzYwOGI2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMTgzLDYgKzE4Myw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9j
b25zdHJ1Y3Q6CiAgICAgY2FzZSBvcF9pbml0X2xhenlfcmVnOgogICAgIGNhc2Ugb3BfY3JlYXRl
X2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAg
Y2FzZSBvcF90ZWFyX29mZl9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRfYnlf
dmFsOgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CkBAIC0yMjIsNyArMjIzLDcg
QEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICB9CiAKICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIHBjWzRdLnUu
b3BlcmFuZCA9PSBjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkKKyAgICAg
ICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgJiYgcGNbNF0udS5vcGVy
YW5kID09IGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKS5vZmZzZXQoKQogICAgICAgICAg
ICAgJiYgIXBjWzZdLnUub3BlcmFuZCkKICAgICAgICAgICAgIHJldHVybiBDYW5JbmxpbmU7CiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGVkMjA0MmEyZjQ5ODVhODg0M2Y1MjcyOGMx
N2Q1MGU4YWRhZjA2MWEuLmI3Nzg0NGE0NGIxZWE1MGFjZGUzMTMzZGU2ZjdmMmFiNDBlOTQ1OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zMDgsNyAr
MzA4LDggQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgd3JpdGUoU2lkZVN0YXRl
KTsKICAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKKworICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVudHM6CiAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHM6CiAgICAgICAgIHJlYWQoVmFyaWFibGVzKTsKICAgICAgICAgcmVhZChIZWFw
T2JqZWN0Q291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4
IGJmNDVhYmM1OWY2NWQ0MzNhMDZiODEwMjE3NjY2ZGVhOGExNmRjYTkuLmQ5NTE4ZWViMzNkODgz
ZjZkY2QwYTAxNDZhZWI2ODQyOGQyNzE4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKQEAgLTIwOSw2ICsyMDksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHM6CisgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKICAgICBjYXNl
IFRvVGhpczoKICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5
U3RvcmFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDlhOWY4NWM2Y2M3YmY3MDIzOGRiZGI4ZjYzM2ZhYWI5NzQyYzJjYTAuLmZiYTAzMmRjYmFj
YWM4NzFkYjcyYmMxOWUzYzAzMDVlNjk2Y2E4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTE4MSw2ICsxMTgxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAg
ICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgorICAgICAgICBjYXNlIENyZWF0ZUNhcHR1cmVk
QXJndW1lbnRzOgogICAgICAgICBjYXNlIFBoYW50b21Bcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
VGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBlNTg0YTE5ZDliYTRlYmIxYzUyNzM3
ZjJhZDNiYzdkNTVhZTYxZjM4Li5iZmYyYzdiYWJkZDY0MjRiNmJlZjc5ZmM5ZDhmMzllZjQ5OTMx
YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC00NDAsNyArNDQwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fcHJvZmlsZWRCbG9jay0+dW5jaGVja2Vk
QXJndW1lbnRzUmVnaXN0ZXIoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1l
KTsKLSAgICAgICAgaWYgKCFjb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkKKyAgICAgICAgaWYg
KCFjb2RlQmxvY2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpKQogICAgICAgICAgICAgcmV0dXJu
IFZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdp
c3Rlcihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkgKwpAQCAtNTE2LDkg
KzUxNiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUodmFsdWVQcm9maWxlRm9yKG5vZGUpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB1c2Vz
QXJndW1lbnRzKCkgY29uc3QKKyAgICBib29sIHVzZXNBcmd1bWVudHNSZWdpc3RlcigpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKTsKKyAg
ICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKTsKICAgICB9
CiAgICAgCiAgICAgQmxvY2tJbmRleCBudW1CbG9ja3MoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
cy5zaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA1
NjcwNjMwNGY5NzQwNjJiMjRiNGRkNGFkMDQ5YmJkN2FlNjM4YTQxLi5iYmJmNTMzY2I2YjQ3ZTc0
MmFhM2IxMDJiYzJlOWIyMGJmODY3YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC0yNjcsNiArMjY3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIE5vZGVzIHVzZWQgZm9yIGFyZ3VtZW50cy4gU2ltaWxhciB0byBsZXhpY2Fs
IGVudmlyb25tZW50IHN1cHBvcnQsIG9ubHkgaXQgbWFrZXMgZXZlbiBsZXNzICovXAogICAgIC8q
IHNlbnNlLiAqL1wKICAgICBtYWNybyhDcmVhdGVBcmd1bWVudHMsIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBt
YWNybyhQaGFudG9tQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhUZWFyT2Zm
QXJndW1lbnRzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlBcmd1bWVudHNM
ZW5ndGgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAppbmRl
eCBiYzBjMGY3YTJkNWFhNWE0MTgwNDY1OTMyNmQ5YTdjMjAyMGUyYmVmLi5hYzA0ZmFhYzdkNzZh
YzYwOTlhYTE4M2IyZmQ4MWMzOTkyNjRiZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCkBAIC0yMDcsNyArMjA3
LDcgQEAgdm9pZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlQ29uc3RhbnQoKSkpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0
dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBKU1N0YWNrOjpDYWxs
ZWUpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBMZWF2ZSB0aGUgY2FwdHVyZWQgYXJndW1lbnRz
IGluIHJlZ1QzLgotICAgICAgICBpZiAoYmFzZWxpbmVDb2RlQmxvY2stPnVzZXNBcmd1bWVudHMo
KSkKKyAgICAgICAgaWYgKGJhc2VsaW5lQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIo
KSkKICAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihW
aXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihiYXNlbGluZUNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSku
b2Zmc2V0KCkpKSwgR1BSSW5mbzo6cmVnVDMpOwogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkgLy8g
c28gdGhpcyBpcyB0aGUgMzItYml0IHBhcnQKICAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihiYXNlbGluZUNvZGVCbG9jayksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgSlNTdGFjazo6Q29kZUJsb2NrKSkpOwpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgcmVp
ZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2Um
IGV4aXQpCiAgICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoVmlydHVhbFJlZ2lzdGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIoYmFzZWxpbmVDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVy
KCkpLm9mZnNldCgpKSksIEdQUkluZm86OnJlZ1QzKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1i
aXQgcGFydAogICAgICAgICAKLSAgICAgICAgaWYgKGJhc2VsaW5lQ29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGJhc2VsaW5lQ29kZUJsb2NrLT51c2VzQXJndW1lbnRz
UmVnaXN0ZXIoKSkgewogICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG5vQXJndW1l
bnRzID0gaml0LmJyYW5jaFRlc3RQdHIoQXNzZW1ibHlIZWxwZXJzOjpaZXJvLCBHUFJJbmZvOjpy
ZWdUMyk7CiAgICAgICAgICAgICBqaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QzLCBBcmd1bWVudHM6Om9mZnNldE9mUmVnaXN0ZXJzKCkpKTsKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIEFyZ3VtZW50c1JlY292ZXJ5R2VuZXJhdG9yOjpnZW5lcmF0ZUZv
cigKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGlubGluZUNhbGxGcmFtZSktPnVzZXNBcmd1bWVudHMoKSkKKyAgICBpZiAoIWppdC5iYXNlbGlu
ZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNSZWdpc3RlciA9
IGppdC5iYXNlbGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKGlubGluZUNhbGxGcmFtZSk7CiAgICAg
aWYgKG1fZGlkQ3JlYXRlQXJndW1lbnRzT2JqZWN0LmFkZChpbmxpbmVDYWxsRnJhbWUpLmlzTmV3
RW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lz
ZUxvY2FsQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNl
TG9jYWxDbG9iYmVyaXplLmgKaW5kZXggNzViNjc2YTRlMjY3ZGQ1YTBlZDljZWIxY2M5MDFhNTdi
NzBhMTkzYi4uNDZiNzFiMjk0ZThjNmZhYjFlZmQwMDkxNWMzYjk5Nzc0ZTc1NjdlMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXpl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgd3JpdGVU
b3AoKQogICAgIHsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9jb2RlQmxvY2stPnVzZXNBcmd1bWVu
dHMoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1Jl
Z2lzdGVyKCkgfHwgbV9ncmFwaC5tX2NvZGVCbG9jay0+aGFzQ2FwdHVyZWRBcmd1bWVudHMoKSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpOyBpLS0gPiAxOykKICAgICAgICAgICAgICAgICBtX3dyaXRlKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKICAgICAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZv
aWQgZm9yRWFjaExvY2FsUmVhZEJ5VW53aW5kKEdyYXBoJiBncmFwaCwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBjb25zdCBSZWFkRnVuCiB7CiAgICAgaWYgKGdyYXBoLnVuY2hlY2tlZEFjdGl2YXRp
b25SZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgcmVhZChncmFwaC5hY3RpdmF0aW9uUmVn
aXN0ZXIoKSk7Ci0gICAgaWYgKGdyYXBoLm1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpCisg
ICAgaWYgKGdyYXBoLm1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkKICAgICAg
ICAgcmVhZCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoZ3JhcGguYXJndW1lbnRzUmVnaXN0
ZXJGb3IobnVsbHB0cikpKTsKICAgICAKICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1l
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDQxODEwNzU1MzlkZmQ1M2E4M2ZhMTc3Nzcx
NTRjZDc3ZmZkYTYzZDEuLjU5ZTQwOGY0NWQzOWViNmNjMGNkMTRkYTE4NjhlNWVkYWM1NGUwMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01MTUsNyArNTE1LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjU3RyaW5nT2JqZWN0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNl
IENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZUFyZ3VtZW50czog
ewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNBcmd1bWVudHMpOwog
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCmluZGV4IGUwZjcyMGMwOTg4MjNmM2VhZWY1NWY3OTQwM2Y0MDFkMWNhYmYyYTQu
LjkxNjk1ZGFmOGE0ZjU4ODlmMGU3MWViYzkxNDAzMWVlMzc3ZTVlMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMTgsNiArMjE4LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgSW46CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgorICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVu
dHM6CiAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50
czoKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZjA5ZjZhMzk1MzA5Yjlj
M2FkZTNjYzg0NTM4YTkxOGI4NjMyNWE2Yy4uOTI5ODFlNzE2M2Y0ZjZmMGIwM2IxOGVkMTU0MmU5
NDYxNjg1ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC00MjUwLDcgKzQyNTAsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgICAgICAKKworICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVu
dHM6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50
cywgcmVzdWx0R1BSLCBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
anNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1faml0LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgaWYgKG1faml0LmNvZGVCbG9jaygpLT5o
YXNTbG93QXJndW1lbnRzKCkKKyAgICAgICAgICAgIHx8IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9k
ZSgpCisgICAgICAgICAgICB8fCAhZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSkgeworICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIpOworICAgICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIxID0gc2NyYXRjaDEuZ3By
KCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aHM7CisgICAgICAgIGVtaXRBbGxv
Y2F0ZUFyZ3VtZW50cyhyZXN1bHRHUFIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1Bh
dGhzKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
cywgdGhpcywgb3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50czogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2Uu
Y3BwCmluZGV4IDhjODBmMjhjYmNkODAyNmMxODEwZGFhNmIyNTBiZmZlMDQxMjIxZDQuLmQ0MTlk
YjMyZTYxMGI4ODAxM2M3MzU4NmJjODg3YTllNzY0MWE1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcApAQCAtOTgsNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKGludCBpID0gc3ltYm9sVGFibGUtPmNhcHR1cmVT
dGFydCgpOyBpID4gc3ltYm9sVGFibGUtPmNhcHR1cmVFbmQoKTsgaS0tKQogICAgICAgICAgICAg
ICAgIHVzZWRMb2NhbHMuc2V0KFZpcnR1YWxSZWdpc3RlcihpKS50b0xvY2FsKCkpOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChjb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAgICAg
IGlmIChjb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpIHsKICAgICAgICAgICAg
IHVzZWRMb2NhbHMuc2V0KGNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpLnRvTG9jYWwo
KSk7CiAgICAgICAgICAgICB1c2VkTG9jYWxzLnNldCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoY29kZUJsb2NrKCktPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLnRvTG9jYWwoKSk7CiAgICAgICAg
IH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWxsb2NhdGlv
blt2YXJpYWJsZS0+bG9jYWwoKS50b0xvY2FsKCldKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jaygpLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkgewogICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoCiAg
ICAgICAgICAgICAgICAgYWxsb2NhdGlvbltjb2RlQmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIo
KS50b0xvY2FsKCldKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKaW5kZXggMjZhN2JjNWVkNzY3ZWRmNTY3MzY3MWQw
MjM1MzU2MjIzYmQ2M2VjYS4uYWE4MjE4YmYyYTkyYjg5NmQ2ZGNjYzQ3ZWE3MDgyNDNmNzllY2E2
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCkBAIC0yNzksNyAr
Mjc5LDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgewor
ICAgIGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgIGNv
ZGVCbG9jay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoCiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpICsgbG9jYWxzT2Zmc2V0
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKaW5kZXggZWJmMzlmOWE5N2UyNzVmNzk4ZGYyMzE5ZjFiZmVjZDAxOTM0ZTdl
Mi4uNjdjOWYxYmMxOTE5NjJhNWZkZDViM2M5ZmNiYzljZTMxM2I2ZTFhNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NTQs
NyArNDU0LDcgQEAgc3RhdGljIGJvb2wgdW53aW5kQ2FsbEZyYW1lKFN0YWNrVmlzaXRvciYgdmlz
aXRvcikKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChjb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0g
RnVuY3Rpb25Db2RlICYmIGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7CisgICAgaWYgKGNv
ZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgKGNvZGVCbG9jay0+dXNlc0Fy
Z3VtZW50c1JlZ2lzdGVyKCkgfHwgY29kZUJsb2NrLT5oYXNDYXB0dXJlZEFyZ3VtZW50cygpKSkg
ewogICAgICAgICBpZiAoQXJndW1lbnRzKiBhcmd1bWVudHMgPSB2aXNpdG9yLT5leGlzdGluZ0Fy
Z3VtZW50cygpKSB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgICAgICBpZiAodmlzaXRv
ci0+aXNJbmxpbmVkRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXggZWI4MjE0OWM2M2I1NzFiMzM3MTMwMGVhNDlm
YmY3NjRkNzY4ZTE5NC4uM2JlMzFhYzkzMWU0Y2Q4OGNmMWIxZThiMzQ4MTQzZGYwNTlkMTVmOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAKQEAgLTI4NSw5ICsyODUsMTYgQEAgQXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1l
OjpleGlzdGluZ0FyZ3VtZW50cygpCiB7CiAgICAgaWYgKGNvZGVCbG9jaygpLT5jb2RlVHlwZSgp
ICE9IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFjb2RlQmxvY2so
KS0+dXNlc0FyZ3VtZW50cygpKQorCisgICAgaWYgKGNvZGVCbG9jaygpLT5oYXNDYXB0dXJlZEFy
Z3VtZW50cygpKSB7CisgICAgICAgIGludCBhcmd1bWVudHNJbmRleCA9IGNvZGVCbG9jaygpLT5j
YXB0dXJlZEFyZ3VtZW50c0luZGV4KCk7CisgICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBl
bnZpcm9ubWVudCA9IGNhbGxGcmFtZSgpLT5sZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICAgICAg
cmV0dXJuIGpzQ2FzdDxBcmd1bWVudHMqPihlbnZpcm9ubWVudC0+cmVnaXN0ZXJBdChhcmd1bWVu
dHNJbmRleCkuZ2V0KCkpOworICAgIH0KKworICAgIGlmICghY29kZUJsb2NrKCktPnVzZXNBcmd1
bWVudHNSZWdpc3RlcigpKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKKwogICAgIFZpcnR1YWxS
ZWdpc3RlciByZWc7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IDY1MTZjYzQ0MmM2YTVhYzJmOTM2NjUzY2M3YmRlYWQ4Y2RiMjdl
MGYuLjk1YTk4Y2ZlYjRmMjUzZGIxMmJmNDAxZTg5ZGExNDllZWM5MDE0YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTIxMCw2ICsyMTAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQogICAgICAgICBE
RUZJTkVfT1Aob3BfaW5pdF9sYXp5X3JlZykKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9h
cmd1bWVudHMpCisgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRz
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApp
bmRleCBkYzE2OTQ0NjNmNjAyZDdlYWZhNzM5MzNkMDY3Y2Q1ZjdlM2U5OGY2Li5lZjRlYjYzZGY5
YmE1MDJlOGYxOGJhYWE3Y2QyMGI1NjViNGY0YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
QEAgLTQ2OSw2ICs0NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29w
X2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlz
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfYXJndW1lbnRzKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1l
bnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCmluZGV4IDQ5NDFjNjM1YjAzODRhYjc5YWNjZjZhN2ExNzUwNGU0MzY2Njdh
MzAuLjEzMDJlYzY5MjNiYjdiMzdhYTY0OGMyYmI4ZGE4MzM5YmZjZDY1ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEpJVDo6Y29t
cGlsZUxvYWRWYXJhcmdzKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIAogICAgIEp1bXBMaXN0
IHNsb3dDYXNlOwogICAgIEp1bXBMaXN0IGVuZDsKLSAgICBib29sIGNhbk9wdGltaXplID0gbV9j
b2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKQorICAgIGJvb2wgY2FuT3B0aW1pemUgPSBtX2NvZGVC
bG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkKICAgICAgICAgJiYgYXJndW1lbnRzID09IG1f
Y29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpCiAgICAgICAgICYmICFtX2Nv
ZGVCbG9jay0+c3ltYm9sVGFibGUoKS0+c2xvd0FyZ3VtZW50cygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBhMDAxODI4MWI3ZTk3YTA4MWFhMDI2ZWI1
YjI3ODNiNTY2N2E3YmIzLi5kYzljMjkxMjNmMDI5MGNlYjAyYzhmNmVkZmZjOTIzODkzZGU1NWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTY4Myw2ICs2
ODMsMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGFyZ3NDcmVhdGVkLmxpbmsodGhpcyk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRz
KTsKKyAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwOGU5ZDRhNzhh
NzE4ZjdlYTA5ZGI3YzVhOTc1ZmU2YjYyZWU3YmJiLi43YTBmYTFjZmM2ZmIxNjFhODRlMWRlZTI4
MmM1ZjNlYWU5MDc5YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTE1OTIsNyArMTU5Miw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWCiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQXJndW1lbnRzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNDZWxsKiBhcmd1bWVudHNDZWxsLCBKU0NlbGwqKQogewotICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpKTsKICAgICBqc0Nhc3Q8QXJndW1lbnRzKj4o
YXJndW1lbnRzQ2VsbCktPnRlYXJPZmYoZXhlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDA4MzI1MzNlMTQyNTEyMjRmYzUy
NWU1OTE5NDdhMWFhZWIwMzg4NjIuLjA5MTVhYTc4OWFmN2Y5NTg5Yjg4NWJjYWU0MDI4ZjFhOGY1
Yzg0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcApAQCAtMTI0OCw3ICsxMjQ4LDYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2NhbGxfZXZhbCkKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1
bWVudHMpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCktPnVzZXNBcmd1bWVudHMoKSk7CiAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBqc0Nhc3Q8
QXJndW1lbnRzKj4oZXhlYy0+dW5jaGVja2VkUihWaXJ0dWFsUmVnaXN0ZXIocGNbMV0udS5vcGVy
YW5kKS5vZmZzZXQoKSkuanNWYWx1ZSgpKTsKICAgICBhcmd1bWVudHMtPnRlYXJPZmYoZXhlYyk7
CiAgICAgTExJTlRfRU5EKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGNmZmM4N2MxYWFkOWJhZTFm
MTE5MGJhMjUzM2IyNWI3ZDM2OTZmMDQuLmM2MTliM2IzMzA0N2NiZWM3NDQ4YWE2NTMwNDI2Mjg3
ZTUxMTNlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC03NDIsNiArNzQyLDExIEBAIF9sbGludF9v
cF9jcmVhdGVfYXJndW1lbnRzOgogLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKICAgICBkaXNwYXRj
aCgyKQogCitfbGxpbnRfb3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cykKKyAgICBkaXNwYXRjaCgyKQogCiBfbGxpbnRf
b3BfY3JlYXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2Zjhk
Y2JlOGZiY2FjODc1ZjlhYThlMThlNTNmOGIzNjUzMTcwYmMwLi5hMTY1MDBjZmEwNTA3MzI4YTZi
M2QyYzcyYzhkMGMwZThjYWJjNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNjIwLDcgKzYyMCw2IEBAIF9s
bGludF9vcF9pbml0X2xhenlfcmVnOgogICAgIHN0b3JlcSBWYWx1ZUVtcHR5LCBbY2ZyLCB0MCwg
OF0KICAgICBkaXNwYXRjaCgyKQogCi0KIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCkBAIC02
MjksNiArNjI4LDExIEBAIF9sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgogLm9wQ3JlYXRlQXJn
dW1lbnRzRG9uZToKICAgICBkaXNwYXRjaCgyKQogCitfbGxpbnRfb3BfY3JlYXRlX2NhcHR1cmVk
X2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQwKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NyZWF0ZV9jYXB0dXJlZF9h
cmd1bWVudHMpCisgICAgZGlzcGF0Y2goMikKIAogX2xsaW50X29wX2NyZWF0ZV90aGlzOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDE4NjdkODRmOThhZWI0YjBkNDM2YWI4ZmM0MGRiNjhj
YTA2NjI2YTcuLjYwMzE5ZjkzYThlNDU1ZjFmMzQyMDdmNjlmMjA0MGUxZWQ3YTBhMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMjI4LDYgKzIyOCwxNSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3Vt
ZW50cykKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9j
YXB0dXJlZF9hcmd1bWVudHMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUodm0sIGV4ZWMpKTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVu
dHM7CisgICAgRU5EKCk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhp
cykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAppbmRleCBkOGEzZTJiM2QxYWEwY2E2MWQ1YzEzMDBkYjE5ZDNjYjU3
ZjYyZjgxLi5lNTJjZmQxZDI5MTI1Yjg0OWQ1ZmI1NzRhNWZlZWE1OTgyMDU5NDBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMTg2
LDYgKzE4Niw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNo
ZWNrKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hl
Y2spOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b3VjaF9lbnRyeSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9lbnRlcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9jYWxsZWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240490</attachid>
            <date>2014-10-27 12:16:03 -0700</date>
            <delta_ts>2016-09-17 07:03:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137841-20141027121612.patch</filename>
            <type>text/plain</type>
            <size>105400</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWNhZTYyMDhmYTNkN2YyZDg0NWY5NmIyOGVlOWIyNWU0OTYxMGY2Li5mMzMwNWM1ZGVjNDIwMDg1
MzM3MmNkOTdhNDY4YTYwNmRkMDI1YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDkgQEAKKzIwMTQtMTAtMTcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBEb24ndCBhbGxvY2F0ZSBzdGFjayBzbG90cyBmb3IgY2FwdHVyZWQgdmFyaWFi
bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppc0NhcHR1cmVkKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpuYW1lRm9y
UmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNldEFyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjphcmd1bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5jaGVj
a2VkQXJndW1lbnRzUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1
bWVudHNSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzQ2FwdHVyZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNhcHR1cmVkQXJndW1lbnRzSW5kZXgp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6dXNl
c0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omhh
c0NhcHR1cmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnNl
dENhcHR1cmVkQXJndW1lbnRJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpjYXB0dXJlZEFyZ3VtZW50c0luZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OnVzZXNBcmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplQ2FwdHVyZWRWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpy
ZXNvbHZlQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxSZXNv
bHZlVG9Bcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1v
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVybik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChK
U0M6OkNhcHR1cmVkVmFyaWFibGU6OkNhcHR1cmVkVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpD
YXB0dXJlZFZhcmlhYmxlOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpDYXB0dXJlZFZhcmlh
YmxlOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6Q2FwdHVyZWRWYXJpYWJsZTo6b3BlcmF0
b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6CisgICAgICAgIChKU0M6OkNhcHR1cmVkVmFyaWFibGU6
OnJlZ2lzdGVySUQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ2FwdHVy
ZWRWYXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Y2FwdHVyZU1vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2hvdWxkQ3JlYXRlQXJn
dW1lbnRzRWFnZXJseSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlOjpvYnNlcnZlQmFkQXJndW1lbnRzVXNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjppc09LVG9PcHRpbWl6ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6
CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZp
eHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6dXNlc0FyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyk6CisgICAgICAgIChK
U0M6OkRGRzo6QXJndW1lbnRzUmVjb3ZlcnlHZW5lcmF0b3I6OmdlbmVyYXRlRm9yKToKKyAgICAg
ICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9yOjp3cml0ZVRvcCk6CisgICAgICAgIChKU0M6
OkRGRzo6Zm9yRWFjaExvY2FsUmVhZEJ5VW53aW5kKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwv
RlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9u
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFtZTo6ZXhpc3RpbmdBcmd1bWVudHMp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jcmVhdGVf
Y2FwdHVyZWRfYXJndW1lbnRzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorCiAy
MDE0LTEwLTI1ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiB0aW1lbGluZXMgc2hvdWxkIG5vdCBjb3VudCB0aW1lIGVsYXBz
ZWQgd2hpbGUgcGF1c2VkIGluIHRoZSBkZWJ1Z2dlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDFjMDQ1NGVkNDZhM2VhMmUzZDJh
NjM5NDdkNjNiZGFkMzQyMjJjMGQuLjcxYjA4ZTYyZGY2NDBkYTM2YzVhMjI2Y2U4NjM2M2MyODM5
YTAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b3Vj
aF9lbnRyeSIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW5p
dF9sYXp5X3JlZyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Y3JlYXRlX2FyZ3VtZW50cyIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cyIsICJsZW5ndGgiIDogMiB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX3RoaXMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9jYWxsZWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3RvX3RoaXMiLCAibGVuZ3RoIiA6IDQgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAKaW5kZXggOTI2MzM0YzQ0NGM5YzJmM2RmY2M5NTAxMmNkMGE0YTAzMTA0ZDJk
OS4uYzc3NjFjNDQ4OTY0MGEwMGM5MGNjNTE3ZmJkYzI0ZTMyM2MxYWE2OSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAKQEAgLTUwLDExICs1MCw2IEBAIHN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKICAgICBpZiAo
IXZpcnR1YWxSZWcuaXNMb2NhbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAg
aWYgKGNvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCkKLSAgICAgICAgJiYgb3BlcmFuZCA8PSBjb2Rl
QmxvY2stPmNhcHR1cmVTdGFydCgpCi0gICAgICAgICYmIG9wZXJhbmQgPiBjb2RlQmxvY2stPmNh
cHR1cmVFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC02MiwxMCArNTcsNyBAQCBzdGF0aWMgdm9pZCBzZXRGb3JPcGVyYW5kKENvZGVC
bG9jayogY29kZUJsb2NrLCBGYXN0Qml0VmVjdG9yJiBiaXRzLCBpbnQgb3BlcmFuZAogewogICAg
IEFTU0VSVChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKTsK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAgICBpZiAodmlydHVh
bFJlZy5vZmZzZXQoKSA+IGNvZGVCbG9jay0+Y2FwdHVyZVN0YXJ0KCkpCi0gICAgICAgIGJpdHMu
c2V0KHZpcnR1YWxSZWcudG9Mb2NhbCgpKTsKLSAgICBlbHNlCi0gICAgICAgIGJpdHMuc2V0KHZp
cnR1YWxSZWcudG9Mb2NhbCgpIC0gY29kZUJsb2NrLT5jYXB0dXJlQ291bnQoKSk7CisgICAgYml0
cy5zZXQodmlydHVhbFJlZy50b0xvY2FsKCkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMTg4LDgg
KzE4MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7CiAgICAgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0g
ICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPQotICAgICAgICB1bmxpbmtlZENvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMgLSBtX2NvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCk7Cisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnM7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIzNSwxOCArMjI2LDExIEBAIGJvb2wgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3Bl
cmFuZCwgdW5zaWduCiAgICAgcmV0dXJuIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZl
KG1fY29kZUJsb2NrLCByZXN1bHQsIG9wZXJhbmQpOwogfQogCi1GYXN0Qml0VmVjdG9yIGdldExp
dmVuZXNzSW5mbyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0
KQorRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm8oQ29kZUJsb2NrKiwgY29uc3QgRmFzdEJp
dFZlY3RvciYgb3V0KQogewogICAgIEZhc3RCaXRWZWN0b3IgcmVzdWx0OwogCi0gICAgdW5zaWdu
ZWQgbnVtQ2FwdHVyZWRWYXJzID0gY29kZUJsb2NrLT5jYXB0dXJlQ291bnQoKTsKLSAgICBpZiAo
bnVtQ2FwdHVyZWRWYXJzKSB7Ci0gICAgICAgIGludCBmaXJzdENhcHR1cmVkTG9jYWwgPSBWaXJ0
dWFsUmVnaXN0ZXIoY29kZUJsb2NrLT5jYXB0dXJlU3RhcnQoKSkudG9Mb2NhbCgpOwotICAgICAg
ICByZXN1bHQucmVzaXplKG91dC5udW1CaXRzKCkgKyBudW1DYXB0dXJlZFZhcnMpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ2FwdHVyZWRWYXJzOyArK2kpCi0gICAgICAg
ICAgICByZXN1bHQuc2V0KGZpcnN0Q2FwdHVyZWRMb2NhbCArIGkpOwotICAgIH0gZWxzZQotICAg
ICAgICByZXN1bHQucmVzaXplKG91dC5udW1CaXRzKCkpOworICAgIHJlc3VsdC5yZXNpemUob3V0
Lm51bUJpdHMoKSk7CiAKICAgICBpbnQgb3V0TGVuZ3RoID0gb3V0Lm51bUJpdHMoKTsKICAgICBB
U1NFUlQob3V0TGVuZ3RoID49IDApOwpAQCAtMjU0LDE1ICsyMzgsNyBAQCBGYXN0Qml0VmVjdG9y
IGdldExpdmVuZXNzSW5mbyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgb3V0KQogICAgICAgICBpZiAoIW91dC5nZXQoaSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpZiAoIW51bUNhcHR1cmVkVmFycykgewotICAgICAgICAgICAgcmVzdWx0LnNl
dChpKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpID4gY29kZUJsb2NrLT5jYXB0dXJlU3Rh
cnQoKSkKLSAgICAgICAgICAgIHJlc3VsdC5zZXQoaSk7Ci0gICAgICAgIGVsc2UgCi0gICAgICAg
ICAgICByZXN1bHQuc2V0KG51bUNhcHR1cmVkVmFycyArIGkpOworICAgICAgICByZXN1bHQuc2V0
KGkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKaW5kZXggNjU4N2NkMjk3MDAyMzE3ZGMxODI2NDg0ZTQwNTExNzdkYTM3YjIyYy4u
ZDA4MmYwYTBlMjVlZTA2MDdkNWM1YWY3MGI1MDU1ODI1MDllMjAyMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oCkBAIC0zMiwxOSArMzIsMTcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGludCBvcGVyYW5kKQoraW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShDb2RlQmxvY2sq
LCBpbnQgb3BlcmFuZCkKIHsKICAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLmlzQXJn
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG9wZXJhbmQgPD0gY29k
ZUJsb2NrLT5jYXB0dXJlU3RhcnQoKSAmJiBvcGVyYW5kID4gY29kZUJsb2NrLT5jYXB0dXJlRW5k
KCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90
QWx3YXlzTGl2ZUlzTGl2ZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgb3V0LCBpbnQgb3BlcmFuZCkKK2lubGluZSBib29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNM
aXZlSXNMaXZlKENvZGVCbG9jayosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJh
bmQpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAgaWYg
KHZpcnR1YWxSZWcub2Zmc2V0KCkgPiBjb2RlQmxvY2stPmNhcHR1cmVTdGFydCgpKQotICAgICAg
ICByZXR1cm4gb3V0LmdldCh2aXJ0dWFsUmVnLnRvTG9jYWwoKSk7Ci0gICAgc2l6ZV90IGluZGV4
ID0gdmlydHVhbFJlZy50b0xvY2FsKCkgLSBjb2RlQmxvY2stPmNhcHR1cmVDb3VudCgpOworICAg
IHNpemVfdCBpbmRleCA9IHZpcnR1YWxSZWcudG9Mb2NhbCgpOwogICAgIGlmIChpbmRleCA+PSBv
dXQubnVtQml0cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG91dC5nZXQo
aW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAppbmRleCBlNjBjMTRmYmViOTY2MmM3OGZmMzc3NmJkOGFmNmQ3YzM1OTM5YmQ0Li5hZjBk
MmEyNjhmMDVhYzQ0YjNjMzVjMDEwN2FjYzAwMzBhMTFlNjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNjAsNiArNjAsNyBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9uZXdfZnVuYzoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiAKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfdG9fdGhpczoKICAgICBjYXNlIG9wX3Byb2ZpbGVfd2lsbF9jYWxsOgogICAg
IGNhc2Ugb3BfcHJvZmlsZV9kaWRfY2FsbDoKQEAgLTM2Niw2ICszNjcsNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LAogICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czoK
KyAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9kZWxf
YnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjQ3
YzdjMWI4N2Y1OTllY2Q0NGRlYjg4ZTZlZDFiYWU5MzE0OTcyZC4uNjlkYWIyN2QwODQ3ZGM3Zjlh
MWMxODc5ODg1ODc0MmUwN2FkODU1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTU3MiwyMSArNTcyLDI3IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKIAogICAgIG91dC5wcmludCgqdGhpcyk7CiAg
ICAgb3V0LnByaW50ZigKLSAgICAgICAgIjogJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXM7
ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKSIs
CisgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIo
cyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocyk7ICVkIGNhcHR1cmVkIHZh
cmlhYmxlKHMpIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIG1fbnVtUGFy
YW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CisgICAgICAgIG1fbnVt
UGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycywgbV9udW1DYXB0dXJl
ZFZhcnMpOwogICAgIGlmIChzeW1ib2xUYWJsZSgpICYmIHN5bWJvbFRhYmxlKCktPmNhcHR1cmVD
b3VudCgpKSB7CiAgICAgICAgIG91dC5wcmludGYoCi0gICAgICAgICAgICAiOyAlZCBjYXB0dXJl
ZCB2YXIocykgKGZyb20gciVkIHRvIHIlZCwgaW5jbHVzaXZlKSIsCi0gICAgICAgICAgICBzeW1i
b2xUYWJsZSgpLT5jYXB0dXJlQ291bnQoKSwgc3ltYm9sVGFibGUoKS0+Y2FwdHVyZVN0YXJ0KCks
IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKSArIDEpOworICAgICAgICAgICAgIjsgJWQgY2Fw
dHVyZWQgdmFyKHMpIiwKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlKCktPmNhcHR1cmVDb3VudCgp
KTsKICAgICB9Ci0gICAgaWYgKHVzZXNBcmd1bWVudHMoKSkgeworICAgIGlmICh1c2VzQXJndW1l
bnRzUmVnaXN0ZXIoKSkgewogICAgICAgICBvdXQucHJpbnRmKAogICAgICAgICAgICAgIjsgdXNl
cyBhcmd1bWVudHMsIGluIHIlZCwgciVkIiwKICAgICAgICAgICAgIGFyZ3VtZW50c1JlZ2lzdGVy
KCkub2Zmc2V0KCksCiAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJn
dW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOwogICAgIH0KKworICAgIGlmIChoYXNDYXB0dXJl
ZEFyZ3VtZW50cygpKSB7CisgICAgICAgIG91dC5wcmludGYoCisgICAgICAgICAgICAiOyBjYXB0
dXJlcyBhcmd1bWVudHMsIGluIHIlZCIsCisgICAgICAgICAgICBjYXB0dXJlZEFyZ3VtZW50c0lu
ZGV4KCkpOworICAgIH0KICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgY29kZVR5cGUoKSA9
PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIG91dC5wcmludGYoIjsgbGV4aWNhbCBlbnZpcm9ubWVu
dCBpbiByJWQiLCBhY3RpdmF0aW9uUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgb3V0LnByaW50
ZigiXG4iKTsKQEAgLTc1Myw2ICs3NTksMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29k
ZSgKICAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9hcmd1bWVudHMiLCByMCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1bWVu
dHM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cyIsIHIwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzogewogICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBwcmludExvY2F0aW9u
T3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbml0X2xhenlf
cmVnIiwgcjApOwpAQCAtMTYwNCw2ICsxNjE1LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29w
eVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICwgbV9oZWFwKG90aGVyLm1f
aGVhcCkKICAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKG90aGVyLm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKQogICAgICwgbV9udW1WYXJzKG90aGVyLm1fbnVtVmFycykKKyAgICAsIG1fbnVtQ2FwdHVy
ZWRWYXJzKG90aGVyLm1fbnVtQ2FwdHVyZWRWYXJzKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90
aGVyLm1faXNDb25zdHJ1Y3RvcikKICAgICAsIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKHRydWUp
CiAgICAgLCBtX2RpZEZhaWxGVExDb21waWxhdGlvbihmYWxzZSkKQEAgLTE2NjQsNiArMTY3Niw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgLCBtX2hlYXAoJm1fZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApCiAgICAgLCBtX251bUNhbGxlZVJlZ2lzdGVycyh1bmxpbmtlZENvZGVCbG9j
ay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpCiAgICAgLCBtX251bVZhcnModW5saW5rZWRDb2RlQmxv
Y2stPm1fbnVtVmFycykKKyAgICAsIG1fbnVtQ2FwdHVyZWRWYXJzKHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bUNhcHR1cmVkVmFycykKICAgICAsIG1faXNDb25zdHJ1Y3Rvcih1bmxpbmtlZENvZGVC
bG9jay0+aXNDb25zdHJ1Y3RvcigpKQogICAgICwgbV9zaG91bGRBbHdheXNCZUlubGluZWQodHJ1
ZSkKICAgICAsIG1fZGlkRmFpbEZUTENvbXBpbGF0aW9uKGZhbHNlKQpAQCAtMTk3OCw5ICsxOTkx
LDEyIEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqIHVubGluCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXIocGNbNV0udS5pbmRleCkuaW1w
bCgpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRpZENsb25lU3ltYm9sVGFibGUp
OwotICAgICAgICAgICAgICAgIGlmIChpZGVudCAhPSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1
bWVudHMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlkZW50LmlzRW1wdHkoKSAmJiBpZGVudCAh
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpIHsKICAgICAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9zeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAg
ICAgICAgICAgICAgICAgU3ltYm9sVGFibGU6Ok1hcDo6aXRlcmF0b3IgaXRlciA9IG1fc3ltYm9s
VGFibGUtPmZpbmQobG9ja2VyLCB1aWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciA9
PSBtX3N5bWJvbFRhYmxlLT5lbmQobG9ja2VyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiRmFpbGVkIHdpdGggIiwgU3RyaW5nKHVpZCksICIgLS0gIiwgUmF3UG9pbnRlcih1
aWQpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoaXRlciAhPSBtX3N5bWJvbFRhYmxlLT5lbmQobG9ja2VyKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGl0ZXItPnZhbHVlLnByZXBhcmVUb1dhdGNoKHN5bWJvbFRhYmxlKCkpOwogICAgICAg
ICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdLnUud2F0Y2hwb2ludFNldCA9IGl0ZXIt
PnZhbHVlLndhdGNocG9pbnRTZXQoKTsKQEAgLTI4MzAsMTMgKzI4NDYsMTMgQEAgYm9vbCBDb2Rl
QmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKIH0KICNlbmRpZgogCi1ib29sIENvZGVC
bG9jazo6aXNDYXB0dXJlZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUpIGNvbnN0Citib29sIENvZGVCbG9jazo6aXNMb2dpY2FsbHlDYXB0
dXJlZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUpIGNvbnN0CiB7CiAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQotICAgICAgICBy
ZXR1cm4gb3BlcmFuZC50b0FyZ3VtZW50KCkgJiYgdXNlc0FyZ3VtZW50cygpOworICAgICAgICBy
ZXR1cm4gb3BlcmFuZC50b0FyZ3VtZW50KCkgJiYgKGhhc0NhcHR1cmVkQXJndW1lbnRzKCkgfHwg
dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpOwogCiAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKLSAg
ICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzLmdldChvcGVyYW5kLnRv
TG9jYWwoKSk7CisgICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmxvZ2ljYWxseUNhcHR1
cmVkVmFycy5nZXQob3BlcmFuZC50b0xvY2FsKCkpOwogCiAgICAgLy8gVGhlIGxleGljYWwgZW52
aXJvbm1lbnQgb2JqZWN0IGlzbid0IGluIHRoZSBjYXB0dXJlZCByZWdpb24sIGJ1dCBpdCdzICJj
YXB0dXJlZCIKICAgICAvLyBpbiB0aGUgc2Vuc2UgdGhhdCBzdG9yZXMgdG8gaXRzIGxvY2F0aW9u
IGNhbiBiZSBvYnNlcnZlZCBpbmRpcmVjdGx5LgpAQCAtMjg0NCwxNiArMjg2MCwxMiBAQCBib29s
IENvZGVCbG9jazo6aXNDYXB0dXJlZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIERpdHRv
IGZvciB0aGUgYXJndW1lbnRzIG9iamVjdC4KLSAgICBpZiAodXNlc0FyZ3VtZW50cygpICYmIG9w
ZXJhbmQgPT0gYXJndW1lbnRzUmVnaXN0ZXIoKSkKKyAgICBpZiAodXNlc0FyZ3VtZW50c1JlZ2lz
dGVyKCkgJiYgb3BlcmFuZCA9PSBhcmd1bWVudHNSZWdpc3RlcigpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAodXNlc0FyZ3VtZW50cygpICYmIG9wZXJhbmQgPT0gdW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKCkpKQorICAgIGlmICh1c2VzQXJndW1l
bnRzUmVnaXN0ZXIoKSAmJiBvcGVyYW5kID09IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihh
cmd1bWVudHNSZWdpc3RlcigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyBXZSdy
ZSBpbiBnbG9iYWwgY29kZSBzbyB0aGVyZSBhcmUgbm8gbG9jYWxzIHRvIGNhcHR1cmUKLSAgICBp
ZiAoIXN5bWJvbFRhYmxlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBz
eW1ib2xUYWJsZSgpLT5pc0NhcHR1cmVkKG9wZXJhbmQub2Zmc2V0KCkpOworICAgIHJldHVybiBm
YWxzZTsKIH0KIAogaW50IENvZGVCbG9jazo6ZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0
aW9uUmVnaXN0ZXJzKGludCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KQpAQCAtMjg2NywxMSArMjg3OSw2
IEBAIGludCBDb2RlQmxvY2s6OmZyYW1lUG9pbnRlck9mZnNldFRvR2V0QWN0aXZhdGlvblJlZ2lz
dGVycyhpbnQgbWFjaGluZUNhcHR1cmVTdGFyCiAgICAgLy8gQ29tcHV0ZSB3aGVyZSB3ZSBwdXQg
dGhlIGNhcHR1cmVkIHZhcmlhYmxlcy4gVGhpcyBvZmZzZXQgd2lsbCBwb2ludCB0aGUgcmVnaXN0
ZXJzCiAgICAgLy8gcG9pbnRlciBkaXJlY3RseSBhdCB0aGUgZmlyc3QgY2FwdHVyZWQgdmFyLgog
ICAgIG9mZnNldCArPSBtYWNoaW5lQ2FwdHVyZVN0YXJ0OwotICAgIAotICAgIC8vIE5vdyBjb21w
dXRlIHRoZSBvZmZzZXQgbmVlZGVkIHRvIG1ha2UgdGhlIHJ1bnRpbWUgc2VlIHRoZSBjYXB0dXJl
ZCB2YXJpYWJsZXMgYXQgdGhlCi0gICAgLy8gc2FtZSBvZmZzZXQgdGhhdCB0aGUgYnl0ZWNvZGUg
d291bGQgaGF2ZSB1c2VkLgotICAgIG9mZnNldCAtPSBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3Rh
cnQoKTsKLSAgICAKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCkBAIC0zODQ3LDcgKzM4NTQsNyBA
QCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlcikKICAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgibGV4aWNhbCBlbnZpcm9u
bWVudCIpOwogICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIgPT0gdGhpc1JlZ2lzdGVyKCkpCiAgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInRoaXMiKTsKLSAgICBpZiAodXNlc0FyZ3VtZW50cygp
KSB7CisgICAgaWYgKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgIGlmICh2aXJ0
dWFsUmVnaXN0ZXIgPT0gYXJndW1lbnRzUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWwoImFyZ3VtZW50cyIpOwogICAgICAgICBpZiAodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKCkpID09IHZpcnR1YWxSZWdpc3RlcikKQEAgLTM4
NzcsNiArMzg4NCw3IEBAIHN0cnVjdCBWZXJpZnlDYXB0dXJlZERlZiB7CiAgICAgICAgIGNhc2Ug
b3BfZW50ZXI6CiAgICAgICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICAgICAgY2FzZSBv
cF9jcmVhdGVfYXJndW1lbnRzOgorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9jYXB0dXJlZF9hcmd1
bWVudHM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTM4ODYsMTcgKzM4OTQsMTUgQEAgc3RydWN0IFZlcmlmeUNhcHR1cmVkRGVm
IHsKICAgICAgICAgaWYgKCF2aXJ0dWFsUmVnLmlzTG9jYWwoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAoY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkgJiYgdmlydHVhbFJl
ZyA9PSBjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpCisgICAgICAgIGlmIChjb2RlQmxv
Y2stPmhhc0NhcHR1cmVkQXJndW1lbnRzKCkgJiYgb3BlcmFuZCA9PSBjb2RlQmxvY2stPmNhcHR1
cmVkQXJndW1lbnRzSW5kZXgoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGNv
ZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIHZpcnR1YWxSZWcgPT0gdW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpCisgICAgICAgIGlm
IChjb2RlQmxvY2stPmhhc0NhcHR1cmVkQXJndW1lbnRzKCkgJiYgdmlydHVhbFJlZyA9PSB1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKGNvZGVCbG9jay0+Y2FwdHVy
ZWRBcmd1bWVudHNJbmRleCgpKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGNvZGVCbG9jay0+Y2FwdHVyZUNvdW50KCkgJiYgY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpLT5p
c0NhcHR1cmVkKG9wZXJhbmQpKSB7Ci0gICAgICAgICAgICBjb2RlQmxvY2stPmJlZ2luVmFsaWRh
dGlvbkRpZEZhaWwoKTsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICBBdCBiYyMiLCBieXRlY29k
ZU9mZnNldCwgIiBlbmNvdW50ZXJlZCBpbnZhbGlkIGFzc2lnbm1lbnQgdG8gY2FwdHVyZWQgdmFy
aWFibGUgbG9jIiwgdmlydHVhbFJlZy50b0xvY2FsKCksICIuXG4iKTsKLSAgICAgICAgICAgIGNv
ZGVCbG9jay0+ZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAgICAgaWYgKGNvZGVCbG9jay0+
dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgJiYgdmlydHVhbFJlZyA9PSBjb2RlQmxvY2stPmFyZ3Vt
ZW50c1JlZ2lzdGVyKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjb2RlQmxv
Y2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpICYmIHZpcnR1YWxSZWcgPT0gdW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0zOTE4LDMwICszOTI0LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAg
ICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAgICB9CiAgICAgCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9udW1DYWxsZWVSZWdpc3RlcnM7IGktLTspIHsKLSAgICAgICAgYm9vbCBpc0NhcHR1
cmVkID0gZmFsc2U7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjYXB0dXJlQ291bnQoKSkKLSAg
ICAgICAgICAgIGlzQ2FwdHVyZWQgPSByZWcub2Zmc2V0KCkgPD0gY2FwdHVyZVN0YXJ0KCkgJiYg
cmVnLm9mZnNldCgpID4gY2FwdHVyZUVuZCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzQ2Fw
dHVyZWQpIHsKLSAgICAgICAgICAgIGlmICghbGl2ZUF0SGVhZC5nZXQoaSkpIHsKLSAgICAgICAg
ICAgICAgICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgIFZhcmlhYmxlIGxvYyIsIGksICIgaXMgZXhwZWN0ZWQgdG8gYmUgbGl2ZSBiZWNhdXNl
IGl0IGlzIGNhcHR1cmVkLCBidXQgaXQgaXNuJ3QgbGl2ZS5cbiIpOwotICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOwotICAgICAgICAgICAg
ICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAobGl2ZUF0SGVhZC5nZXQoaSkpIHsKLSAgICAgICAgICAgICAg
ICBiZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiICAg
IFZhcmlhYmxlIGxvYyIsIGksICIgaXMgZXhwZWN0ZWQgdG8gYmUgZGVhZC5cbiIpOwotICAgICAg
ICAgICAgICAgIGRhdGFMb2coIiAgICBSZXN1bHQ6ICIsIGxpdmVBdEhlYWQsICJcbiIpOwotICAg
ICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7
IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewogICAgICAgICBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5
dGVjb2RlT2Zmc2V0OwogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA2NjBhNWM0ZTYxMmQ3OTVm
NDgzYzhjZDZlODhmZDU5OWNmYjg0OGQ2Li45OWE1YjJmYWE1NDAxYmIyMTFhZjY4NmM4NWEwOTRk
NGZhODk4NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC0zMjcsMTYgKzMyNywxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoYXJn
dW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpKTsKICAgICAgICAgbV9hcmd1bWVudHNSZWdpc3RlciA9
IGFyZ3VtZW50c1JlZ2lzdGVyOwotICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50cygpKTsKKyAg
ICAgICAgQVNTRVJUKHVzZXNBcmd1bWVudHNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgVmlydHVh
bFJlZ2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VS
VCh1c2VzQXJndW1lbnRzKCkpOworICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50c1JlZ2lzdGVy
KCkpOwogICAgICAgICByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3RlcjsKICAgICB9CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKCkKICAgICB7Ci0gICAgICAg
IGlmICghdXNlc0FyZ3VtZW50cygpKQorICAgICAgICBpZiAoIXVzZXNBcmd1bWVudHNSZWdpc3Rl
cigpKQogICAgICAgICAgICAgcmV0dXJuIFZpcnR1YWxSZWdpc3RlcigpOwogICAgICAgICByZXR1
cm4gYXJndW1lbnRzUmVnaXN0ZXIoKTsKICAgICB9CkBAIC0zNTYsNyArMzU2LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICB9CiAK
LSAgICBib29sIHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50c1JlZ2lz
dGVyLmlzVmFsaWQoKTsgfQorICAgIGJvb2wgdXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkgY29uc3Qg
eyByZXR1cm4gbV9hcmd1bWVudHNSZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKyAgICBib29sIGhhc0Nh
cHR1cmVkQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPmhhc0NhcHR1
cmVkQXJndW1lbnRzKCk7IH0KKyAgICBpbnQgY2FwdHVyZWRBcmd1bWVudHNJbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5jYXB0dXJlZEFyZ3VtZW50c0luZGV4KCk7IH0KIAog
ICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29uc3QKICAgICB7CkBAIC0zNjQsMjggKzM2Niwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsKICAgICB9CiAg
ICAgCi0gICAgdW5zaWduZWQgY2FwdHVyZUNvdW50KCkgY29uc3QKKyAgICBib29sIGhhc0NhcHR1
cmVkVmFyaWFibGVzKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghc3ltYm9sVGFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gc3ltYm9sVGFibGUoKS0+Y2Fw
dHVyZUNvdW50KCk7Ci0gICAgfQotICAgIAotICAgIGludCBjYXB0dXJlU3RhcnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKCFzeW1ib2xUYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3RhcnQoKTsKLSAgICB9Ci0g
ICAgCi0gICAgaW50IGNhcHR1cmVFbmQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFzeW1i
b2xUYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBzeW1ib2xU
YWJsZSgpLT5jYXB0dXJlRW5kKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29sIGlzQ2FwdHVyZWQoVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFtZSogPSAwKSBjb25zdDsKKyAgICBib29sIGlz
TG9naWNhbGx5Q2FwdHVyZWQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIElubGluZUNhbGxGcmFt
ZSogPSAwKSBjb25zdDsKICAgICAKICAgICBpbnQgZnJhbWVQb2ludGVyT2Zmc2V0VG9HZXRBY3Rp
dmF0aW9uUmVnaXN0ZXJzKGludCBtYWNoaW5lQ2FwdHVyZVN0YXJ0KTsKICAgICBpbnQgZnJhbWVQ
b2ludGVyT2Zmc2V0VG9HZXRBY3RpdmF0aW9uUmVnaXN0ZXJzKCk7CkBAIC05MDksNiArODk3LDcg
QEAgcHVibGljOgogCiAgICAgaW50IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwogICAgIGludCBtX251
bVZhcnM7CisgICAgaW50IG1fbnVtQ2FwdHVyZWRWYXJzOwogICAgIGJvb2wgbV9pc0NvbnN0cnVj
dG9yIDogMTsKICAgICAKICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgcHVibGljOyBpdCdz
IHRoZSByZXNwb25zaWJpbGl0eSBvZiBhbnlvbmUgZG9pbmcgYW55CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAppbmRleCAwM2RkNzgxZWM3OGE1MmRmMGEwY2Ey
MjU5ODljOTM1YjFkMjk1YzRiLi41ZWY4YzA3ODMzYTE1N2JlOTQxNjgxODIwYjVlZmFmOTQxZGVm
N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKQEAg
LTE2OSw3ICsxNjksNyBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBXcml0ZUJhcnJp
ZXI8U2NyaXB0RXhlY3V0YWJsZT4gZXhlY3V0YWJsZTsKICAgICBWYWx1ZVJlY292ZXJ5IGNhbGxl
ZVJlY292ZXJ5OwogICAgIENvZGVPcmlnaW4gY2FsbGVyOwotICAgIEJpdFZlY3RvciBjYXB0dXJl
ZFZhcnM7IC8vIEluZGV4ZWQgYnkgdGhlIG1hY2hpbmUgY2FsbCBmcmFtZSdzIHZhcmlhYmxlIG51
bWJlcmluZy4KKyAgICBCaXRWZWN0b3IgbG9naWNhbGx5Q2FwdHVyZWRWYXJzOyAvLyBJbmRleGVk
IGJ5IHRoZSBtYWNoaW5lIGNhbGwgZnJhbWUncyB2YXJpYWJsZSBudW1iZXJpbmcuCiAKICAgICBz
aWduZWQgc3RhY2tPZmZzZXQgOiAyOTsKICAgICB1bnNpZ25lZCBraW5kIDogMjsgLy8gcmVhbCB0
eXBlIGlzIEtpbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDZjMjkzY2NmOThkNTY3MzI2ZGM0MmZhYmQ1ZGZhNDFk
MjNmNmMyYzEuLjU5MmEzNDRlODRhZWZmZDAyYmFiMzE2NDBhZjdhNjE3Y2NkYjA0ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcApAQCAtMTk4LDExICsxOTgsMTMgQEAgU3RyaW5nIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZVR5cGUsIGNv
bnN0IEV4ZWN1dGFibGVJbmZvJiBpbmZvKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAg
ICAsIG1fbnVtVmFycygwKQorICAgICwgbV9udW1DYXB0dXJlZFZhcnMoMCkKICAgICAsIG1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKDApCiAgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKICAgICAsIG1fdm0o
dm0pCiAgICAgLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKQogICAgICwg
bV9nbG9iYWxPYmplY3RSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKKyAgICAsIG1fY2FwdHVy
ZWRBcmd1bWVudHNJbmRleCgwKQogICAgICwgbV9uZWVkc0Z1bGxTY29wZUNoYWluKGluZm8ubV9u
ZWVkc0FjdGl2YXRpb24pCiAgICAgLCBtX3VzZXNFdmFsKGluZm8ubV91c2VzRXZhbCkKICAgICAs
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGZhbHNlKQpAQCAtMjEwLDYgKzIxMiw3IEBAIFVu
bGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaW5mby5tX2lzQ29u
c3RydWN0b3IpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzKGZhbHNlKQogICAgICwgbV9p
c0J1aWx0aW5GdW5jdGlvbihpbmZvLm1faXNCdWlsdGluRnVuY3Rpb24pCisgICAgLCBtX2hhc0Nh
cHR1cmVkQXJndW1lbnRzKGZhbHNlKQogICAgICwgbV9maXJzdExpbmUoMCkKICAgICAsIG1fbGlu
ZUNvdW50KDApCiAgICAgLCBtX2VuZENvbHVtbihVSU5UX01BWCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggNjVmMjhiZDYw
ZmM3NTA4MGQ2YTY1ZDc5NjEzZjlkNWVhOTQ1MjFmNi4uMGYzM2U0Mzk2MmY0OTdkZGI0MGZiZDU4
NTVmOTQ1Mjc3OTEyOTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTI4NSw5ICsyODUsMTcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0QWN0aXZhdGlvblJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciBhY3RpdmF0aW9uUmVn
aXN0ZXIpIHsgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA9IGFjdGl2YXRpb25SZWdpc3Rl
cjsgfQogCiAgICAgdm9pZCBzZXRBcmd1bWVudHNSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgYXJn
dW1lbnRzUmVnaXN0ZXIpIHsgbV9hcmd1bWVudHNSZWdpc3RlciA9IGFyZ3VtZW50c1JlZ2lzdGVy
OyB9Ci0gICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHNS
ZWdpc3Rlci5pc1ZhbGlkKCk7IH0KKyAgICBib29sIHVzZXNBcmd1bWVudHNSZWdpc3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXIuaXNWYWxpZCgpOyB9CisKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50
c1JlZ2lzdGVyOyB9CiAKKyAgICBib29sIGhhc0NhcHR1cmVkQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDYXB0dXJlZEFyZ3VtZW50czsgfQorICAgIHZvaWQgc2V0Q2FwdHVyZWRBcmd1
bWVudEluZGV4KGludCBjYXB0dXJlZEFyZ3VtZW50c0luZGV4KQorICAgIHsKKyAgICAgICAgbV9j
YXB0dXJlZEFyZ3VtZW50c0luZGV4ID0gY2FwdHVyZWRBcmd1bWVudHNJbmRleDsKKyAgICAgICAg
bV9oYXNDYXB0dXJlZEFyZ3VtZW50cyA9IHRydWU7CisgICAgfQorICAgIGludCBjYXB0dXJlZEFy
Z3VtZW50c0luZGV4KCkgY29uc3QgeyAgcmV0dXJuIG1fY2FwdHVyZWRBcmd1bWVudHNJbmRleDsg
fQogCiAgICAgYm9vbCB1c2VzR2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxP
YmplY3RSZWdpc3Rlci5pc1ZhbGlkKCk7IH0KICAgICB2b2lkIHNldEdsb2JhbE9iamVjdFJlZ2lz
dGVyKFZpcnR1YWxSZWdpc3RlciBnbG9iYWxPYmplY3RSZWdpc3RlcikgeyBtX2dsb2JhbE9iamVj
dFJlZ2lzdGVyID0gZ2xvYmFsT2JqZWN0UmVnaXN0ZXI7IH0KQEAgLTUyMiw2ICs1MzAsNyBAQCBw
cml2YXRlOgogICAgIFZpcnR1YWxSZWdpc3RlciBtX2FyZ3VtZW50c1JlZ2lzdGVyOwogICAgIFZp
cnR1YWxSZWdpc3RlciBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyOwogICAgIFZpcnR1YWxS
ZWdpc3RlciBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOworICAgIGludCBtX2NhcHR1cmVkQXJndW1l
bnRzSW5kZXg7CiAKICAgICBib29sIG1fbmVlZHNGdWxsU2NvcGVDaGFpbiA6IDE7CiAgICAgYm9v
bCBtX3VzZXNFdmFsIDogMTsKQEAgLTUzMCw2ICs1MzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0NvbnN0cnVjdG9yIDogMTsKICAgICBib29sIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAx
OwogICAgIGJvb2wgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CisgICAgYm9vbCBtX2hhc0NhcHR1
cmVkQXJndW1lbnRzIDogMTsKICAgICB1bnNpZ25lZCBtX2ZpcnN0TGluZTsKICAgICB1bnNpZ25l
ZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
aW5kZXggMzI3YjVkODVmMGIzMGEyMDIzNTBkMWE5Njk1Y2U1MmIwMTE3ZDRlYi4uZTEwOGEyNWVi
Y2MwYTgyN2FlY2YzYTJmNjAxYjhhMmNkN2I5NGI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEy
NywxMyArMTI3LDE0IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFZhcigKICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgV2F0Y2hNb2Rl
IHdhdGNoTW9kZSwgUmVnaXN0ZXJJRComIHIwKQogewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxz
aXplX3Q+KG1fY29kZUJsb2NrLT5tX251bVZhcnMpID09IG1fY2FsbGVlUmVnaXN0ZXJzLnNpemUo
KSk7Ci0gICAgCisKICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZSgp
Lm1fbG9jayk7CiAgICAgaW50IGluZGV4ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobV9jYWxs
ZWVSZWdpc3RlcnMuc2l6ZSgpKS5vZmZzZXQoKTsKLSAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KGluZGV4LCBjb25zdGFudE1vZGUgPT0gSXNDb25zdGFudCA/IFJlYWRPbmx5IDogMCk7Cisg
ICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgY29uc3RhbnRNb2RlID09IElzQ29u
c3RhbnQgPyBSZWFkT25seSA6IDAsIFN5bWJvbFRhYmxlRW50cnk6Ok5vdENhcHR1cmVkKTsKICAg
ICBTeW1ib2xUYWJsZTo6TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFibGUoKS5hZGQo
bG9ja2VyLCBpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKIAogICAgIGlmICghcmVzdWx0LmlzTmV3
RW50cnkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
aXNDYXB0dXJlZCgpKTsKICAgICAgICAgcjAgPSAmcmVnaXN0ZXJGb3IocmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5nZXRJbmRleCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1
MSw2ICsxNTIsMzYgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkVmFyKAogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRDYXB0dXJlZFZhcigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ29u
c3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgV2F0Y2hNb2RlIHdhdGNoTW9kZSwgQ2FwdHVyZWRWYXJp
YWJsZSYgcjApCit7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4obV9jb2RlQmxvY2st
Pm1fbnVtVmFycykgPT0gbV9jYWxsZWVSZWdpc3RlcnMuc2l6ZSgpKTsKKworICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlKCkubV9sb2NrKTsKKyAgICBTeW1ib2xUYWJs
ZUVudHJ5IG5ld0VudHJ5KG1fY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFycywgY29uc3RhbnRN
b2RlID09IElzQ29uc3RhbnQgPyBSZWFkT25seSA6IDAsIFN5bWJvbFRhYmxlRW50cnk6OkNhcHR1
cmVkKTsKKyAgICBTeW1ib2xUYWJsZTo6TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc3ltYm9sVGFi
bGUoKS5hZGQobG9ja2VyLCBpZGVudC5pbXBsKCksIG5ld0VudHJ5KTsKKworICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuaXND
YXB0dXJlZCgpKQorICAgICAgICAgICAgcjAuc2V0SW5kZXgocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXRJbmRleCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh3YXRjaE1vZGUgPT0gSXNXYXRjaGFi
bGUpIHsKKyAgICAgICAgd2hpbGUgKG1fd2F0Y2hhYmxlQ2FwdHVyZWRWYXJpYWJsZXMuc2l6ZSgp
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2NvZGVCbG9jay0+bV9udW1DYXB0dXJlZFZhcnMpKQor
ICAgICAgICAgICAgbV93YXRjaGFibGVDYXB0dXJlZFZhcmlhYmxlcy5hcHBlbmQoSWRlbnRpZmll
cigpKTsKKyAgICAgICAgbV93YXRjaGFibGVDYXB0dXJlZFZhcmlhYmxlcy5hcHBlbmQoaWRlbnQp
OworICAgIH0KKworICAgIHIwID0gYWRkQ2FwdHVyZWRWYXIoKTsKKworICAgIEFTU0VSVCh3YXRj
aE1vZGUgPT0gTm90V2F0Y2hhYmxlIHx8IHN0YXRpY19jYXN0PHNpemVfdD4obV9jb2RlQmxvY2st
Pm1fbnVtQ2FwdHVyZWRWYXJzKSA9PSBtX3dhdGNoYWJsZUNhcHR1cmVkVmFyaWFibGVzLnNpemUo
KSk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnByZXNlcnZlTGFzdFZhcigpCiB7CiAgICAgaWYgKChtX2ZpcnN0Q29uc3RhbnRJbmRleCA9IG1f
Y2FsbGVlUmVnaXN0ZXJzLnNpemUoKSkgIT0gMCkKQEAgLTI1NCw0MCArMjg1LDQ3IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uQm9keU5vZGUq
IGZ1bmN0aW9uQm9keSwgVW5sCiAgICAgfQogICAgIFJlZ2lzdGVySUQqIGxvY2FsQXJndW1lbnRz
UmVnaXN0ZXIgPSBudWxscHRyOwogICAgIFJlZ2lzdGVySUQqIHNjcmF0Y2ggPSBhZGRWYXIoKTsK
LSAgICBtX3N5bWJvbFRhYmxlLT5zZXRDYXB0dXJlU3RhcnQodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobV9jb2RlQmxvY2stPm1fbnVtVmFycykub2Zmc2V0KCkpOwotCisgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIoc2NyYXRjaCk7CiAgICAgaWYgKGZ1bmN0aW9uQm9keS0+dXNlc0FyZ3VtZW50cygp
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkgeyAvLyBNYXkgcmVpZnkgYXJndW1lbnRzIG9iamVj
dC4KLSAgICAgICAgUmVnaXN0ZXJJRCogdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyID0gYWRk
VmFyKCk7IC8vIEFub255bW91cywgc28gaXQgY2FuJ3QgYmUgbW9kaWZpZWQgYnkgdXNlciBjb2Rl
LgotICAgICAgICBSZWdpc3RlcklEKiBhcmd1bWVudHNSZWdpc3RlciA9IGFkZFZhcihwcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzLCBJc1ZhcmlhYmxlLCBOb3RXYXRjaGFibGUpOyAvLyBDYW4gYmUg
Y2hhbmdlZCBieSBhc3NpZ25pbmcgdG8gJ2FyZ3VtZW50cycuCi0KLSAgICAgICAgbG9jYWxBcmd1
bWVudHNSZWdpc3RlciA9IGFyZ3VtZW50c1JlZ2lzdGVyOwotCi0gICAgICAgIC8vIFdlIGNhbiBz
YXZlIGEgbGl0dGxlIHNwYWNlIGJ5IGhhcmQtY29kaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCB0aGUg
dHdvCi0gICAgICAgIC8vICdhcmd1bWVudHMnIHZhbHVlcyBhcmUgc3RvcmVkIGluIGNvbnNlY3V0
aXZlIHJlZ2lzdGVycywgYW5kIHN0b3JpbmcKLSAgICAgICAgLy8gb25seSB0aGUgaW5kZXggb2Yg
dGhlIGFzc2lnbmFibGUgb25lLgotICAgICAgICBjb2RlQmxvY2stPnNldEFyZ3VtZW50c1JlZ2lz
dGVyKGFyZ3VtZW50c1JlZ2lzdGVyLT52aXJ0dWFsUmVnaXN0ZXIoKSk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXItPnZpcnR1YWxSZWdpc3RlcigpID09IEpTQzo6dW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkpOwotCi0gICAgICAgIGVtaXRJ
bml0TGF6eVJlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKTsKLSAgICAgICAgZW1pdEluaXRMYXp5
UmVnaXN0ZXIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKTsKKyAgICAgICAgaWYgKG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpIHsKKyAgICAgICAgICAgIENhcHR1cmVkVmFyaWFibGUg
Y2FwdHVyZWRVbm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRDYXB0dXJlZFZhcigpOyAv
LyBBbm9ueW1vdXMsIHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29kZS4KKyAgICAg
ICAgICAgIENhcHR1cmVkVmFyaWFibGUgY2FwdHVyZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZENh
cHR1cmVkVmFyKHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIElzVmFyaWFibGUsIE5vdFdhdGNo
YWJsZSk7IC8vIENhbiBiZSBjaGFuZ2VkIGJ5IGFzc2lnbmluZyB0byAnYXJndW1lbnRzJy4KKwor
ICAgICAgICAgICAgaWYgKCFmdW5jdGlvbkJvZHktPm1vZGlmaWVzQXJndW1lbnRzKCkpCisgICAg
ICAgICAgICAgICAgbG9jYWxBcmd1bWVudHNSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
ICAgICAvLyBXZSBjYW4gc2F2ZSBhIGxpdHRsZSBzcGFjZSBieSBoYXJkLWNvZGluZyB0aGUga25v
d2xlZGdlIHRoYXQgdGhlIHR3bworICAgICAgICAgICAgLy8gJ2FyZ3VtZW50cycgdmFsdWVzIGFy
ZSBzdG9yZWQgaW4gY29uc2VjdXRpdmUgcmVnaXN0ZXJzLCBhbmQgc3RvcmluZworICAgICAgICAg
ICAgLy8gb25seSB0aGUgaW5kZXggb2YgdGhlIGFzc2lnbmFibGUgb25lLgorICAgICAgICAgICAg
Y29kZUJsb2NrLT5zZXRDYXB0dXJlZEFyZ3VtZW50SW5kZXgoY2FwdHVyZWRBcmd1bWVudHNSZWdp
c3Rlci5pbmRleCgpKTsKKworICAgICAgICAgICAgZW1pdE9wY29kZShvcF9jcmVhdGVfY2FwdHVy
ZWRfYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY3JhdGNo
LT5pbmRleCgpKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKGNhcHR1
cmVkVW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRz
LCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKGNhcHR1
cmVkQXJndW1lbnRzUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIHNjcmF0Y2gp
OworICAgICAgICAgICAgaWYgKGxvY2FsQXJndW1lbnRzUmVnaXN0ZXIpCisgICAgICAgICAgICAg
ICAgZW1pdE1vdmUobG9jYWxBcmd1bWVudHNSZWdpc3Rlciwgc2NyYXRjaCk7CisKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVCghY29kZUJsb2NrLT51c2VzRXZhbCgpKTsKKyAg
ICAgICAgICAgIFJlZ2lzdGVySUQqIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZFZh
cigpOyAvLyBBbm9ueW1vdXMsIHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29kZS4K
KyAgICAgICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50c1JlZ2lzdGVyID0gYWRkVmFyKHByb3Bl
cnR5TmFtZXMoKS5hcmd1bWVudHMsIElzVmFyaWFibGUsIE5vdFdhdGNoYWJsZSk7IC8vIENhbiBi
ZSBjaGFuZ2VkIGJ5IGFzc2lnbmluZyB0byAnYXJndW1lbnRzJy4KKworICAgICAgICAgICAgbG9j
YWxBcmd1bWVudHNSZWdpc3RlciA9IGFyZ3VtZW50c1JlZ2lzdGVyOworCisgICAgICAgICAgICAv
LyBXZSBjYW4gc2F2ZSBhIGxpdHRsZSBzcGFjZSBieSBoYXJkLWNvZGluZyB0aGUga25vd2xlZGdl
IHRoYXQgdGhlIHR3bworICAgICAgICAgICAgLy8gJ2FyZ3VtZW50cycgdmFsdWVzIGFyZSBzdG9y
ZWQgaW4gY29uc2VjdXRpdmUgcmVnaXN0ZXJzLCBhbmQgc3RvcmluZworICAgICAgICAgICAgLy8g
b25seSB0aGUgaW5kZXggb2YgdGhlIGFzc2lnbmFibGUgb25lLgorICAgICAgICAgICAgY29kZUJs
b2NrLT5zZXRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHNSZWdpc3Rlci0+dmlydHVhbFJlZ2lz
dGVyKCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlci0+dmlydHVhbFJlZ2lzdGVyKCkgPT0g
SlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoY29kZUJsb2NrLT5hcmd1bWVudHNSZWdp
c3RlcigpKSk7CisKKyAgICAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKGFyZ3VtZW50c1Jl
Z2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRJbml0TGF6eVJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlQXJndW1l
bnRzRWFnZXJseSgpIHx8IHNob3VsZFRlYXJPZmZBcmd1bWVudHNFYWdlcmx5KCkpIHsKLSAgICAg
ICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50cyk7Ci0gICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwotICAgICAgICAg
ICAgaWYgKG1fY29kZUJsb2NrLT5oYXNBY3RpdmF0aW9uUmVnaXN0ZXIoKSkgewotICAgICAgICAg
ICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50c1JlZ2lzdGVyID0gJnJlZ2lzdGVyRm9yKG1fY29k
ZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBp
bml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShhcmd1bWVudHNSZWdpc3RlciwgcHJvcGVydHlOYW1l
cygpLmFyZ3VtZW50cywgYXJndW1lbnRzUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIFJlZ2lz
dGVySUQqIHVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyID0gJnJlZ2lzdGVyRm9yKEpTQzo6dW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3Rlcigp
KS5vZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUo
dW5jaGVja2VkQXJndW1lbnRzUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIHVu
Y2hlY2tlZEFyZ3VtZW50c1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25C
b2R5LT5tb2RpZmllc0FyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRPcGNv
ZGUob3BfbW92KTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFy
Z3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOwot
ICAgICAgICAgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX21vdik7Ci0gICAgICAgICAgICAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh1bmNoZWNrZWRBcmd1bWVudHNSZWdpc3Rlci0+aW5k
ZXgoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25z
dGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpLT5pbmRleCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
bG9jYWxBcmd1bWVudHNSZWdpc3RlciA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKHNob3VsZFRlYXJPZmZBcmd1bWVudHNFYWdlcmx5KCkpIHsKKyAgICAgICAg
ICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOworICAgICAgICAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1bWVudHNSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY29kZUJsb2NrLT5oYXNBY3RpdmF0aW9uUmVn
aXN0ZXIoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTUsMTIgKzMz
MywxNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFs
bFRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpOwogCiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gZmFsc2U7Ci0gICAg
VmVjdG9yPFJlZ2lzdGVySUQqLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gY2FwdHVyZWRBcmd1
bWVudHM7CisgICAgVmVjdG9yPENhcHR1cmVkVmFyaWFibGUsIDAsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBjYXB0dXJlZEFyZ3VtZW50QnVmZmVyOworICAgIFZlY3RvcjxDYXB0dXJlZFZhcmlhYmxl
KiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGNhcHR1cmVkQXJndW1lbnRzOwogICAgIGlmIChm
dW5jdGlvbkJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkgfHwgc2hvdWxkQ2FwdHVyZUFsbFRo
ZVRoaW5ncykgewogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMgPSAqZnVu
Y3Rpb25Cb2R5LT5wYXJhbWV0ZXJzKCk7CiAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzLnJlc2l6
ZShwYXJhbWV0ZXJzLnNpemUoKSk7CisgICAgICAgIGNhcHR1cmVkQXJndW1lbnRCdWZmZXIucmVz
aXplKHBhcmFtZXRlcnMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
YXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBjYXB0dXJlZEFyZ3VtZW50c1tp
XSA9IDA7CisgICAgICAgICAgICBjYXB0dXJlZEFyZ3VtZW50c1tpXSA9IG51bGxwdHI7CisKICAg
ICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcmFtZXRlcnMuYXQoaSk7CiAgICAgICAgICAgICBp
ZiAoIXBhdHRlcm4tPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTMwOCw3ICszNDksOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICAgICAg
aWYgKCFmdW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSAmJiAhc2hvdWxkQ2FwdHVyZUFsbFRo
ZVRoaW5ncykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNhcHR1cmVz
QW55QXJndW1lbnRCeU5hbWUgPSB0cnVlOwotICAgICAgICAgICAgY2FwdHVyZWRBcmd1bWVudHNb
aV0gPSBhZGRWYXIoKTsKKyAgICAgICAgICAgIGNhcHR1cmVkQXJndW1lbnRzW2ldID0gJmNhcHR1
cmVkQXJndW1lbnRCdWZmZXJbaV07CisgICAgICAgICAgICAqY2FwdHVyZWRBcmd1bWVudHNbaV0g
PSBhZGRDYXB0dXJlZFZhcigpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMjcsNyArMzY5LDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25C
b2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICAgICAgICAgbV9zeW1ib2xUYWJsZS0+c2V0U2xv
d0FyZ3VtZW50cyhXVEY6Om1vdmUoc2xvd0FyZ3VtZW50cykpOwogICAgIH0KIAotICAgIFJlZ2lz
dGVySUQqIGNhbGxlZVJlZ2lzdGVyID0gcmVzb2x2ZUNhbGxlZShmdW5jdGlvbkJvZHkpOyAvLyBN
YXkgcHVzaCB0byB0aGUgc2NvcGUgY2hhaW4gYW5kL29yIGFkZCBhIGNhcHR1cmVkIHZhci4KKyAg
ICBhdXRvIGNhbGxlZUxvY2F0aW9uID0gcmVzb2x2ZUNhbGxlZShmdW5jdGlvbkJvZHkpOyAvLyBN
YXkgcHVzaCB0byB0aGUgc2NvcGUgY2hhaW4gYW5kL29yIGFkZCBhIGNhcHR1cmVkIHZhci4KIAog
ICAgIGNvbnN0IERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0YWNr
ID0gZnVuY3Rpb25Cb2R5LT5mdW5jdGlvblN0YWNrKCk7CiAgICAgY29uc3QgRGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrJiB2YXJTdGFjayA9IGZ1bmN0aW9uQm9keS0+dmFyU3RhY2soKTsKQEAg
LTMzOSw3ICszODEsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGJvdW5kUGFyYW1ldGVyUHJvcGVydGllcy5zaXplKCk7IGkrKykgewog
ICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBib3VuZFBhcmFtZXRlclByb3Bl
cnRpZXNbaV07CiAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5jYXB0dXJlcyhpZGVudCkg
fHwgc2hvdWxkQ2FwdHVyZUFsbFRoZVRoaW5ncykKLSAgICAgICAgICAgICAgICBhZGRWYXIoaWRl
bnQsIElzVmFyaWFibGUsIElzV2F0Y2hhYmxlKTsKKyAgICAgICAgICAgICAgICBhZGRDYXB0dXJl
ZFZhcihpZGVudCwgSXNWYXJpYWJsZSwgSXNXYXRjaGFibGUpOwogICAgICAgICB9CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlvblN0YWNrW2ldOwpA
QCAtMzQ3LDE3ICszODksMTcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25Cb2R5LCBVbmwKICAgICAgICAgICAg
IGlmIChmdW5jdGlvbkJvZHktPmNhcHR1cmVzKGlkZW50KSB8fCBzaG91bGRDYXB0dXJlQWxsVGhl
VGhpbmdzKSB7CiAgICAgICAgICAgICAgICAgbV9mdW5jdGlvbnMuYWRkKGlkZW50LmltcGwoKSk7
CiAgICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKHNjcmF0Y2gsIGZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICAgICBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShhZGRWYXIoaWRlbnQsIElz
VmFyaWFibGUsIElzV2F0Y2hhYmxlKSwgaWRlbnQsIHNjcmF0Y2gpOworICAgICAgICAgICAgICAg
IGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKGFkZENhcHR1cmVkVmFyKGlkZW50LCBJc1Zhcmlh
YmxlLCBJc1dhdGNoYWJsZSksIGlkZW50LCBzY3JhdGNoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHZhclN0YWNrW2ldLmZp
cnN0OwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpIHx8IHNo
b3VsZENhcHR1cmVBbGxUaGVUaGluZ3MpCi0gICAgICAgICAgICAgICAgYWRkVmFyKGlkZW50LCAo
dmFyU3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpID8gSXND
b25zdGFudCA6IElzVmFyaWFibGUsIElzV2F0Y2hhYmxlKTsKKyAgICAgICAgICAgICAgICBhZGRD
YXB0dXJlZFZhcihpZGVudCwgKHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tz
OjpJc0NvbnN0YW50KSA/IElzQ29uc3RhbnQgOiBJc1ZhcmlhYmxlLCBJc1dhdGNoYWJsZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX3N5bWJvbFRhYmxlLT5zZXRDYXB0dXJlRW5kKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGNvZGVCbG9jay0+bV9udW1WYXJzKS5vZmZzZXQoKSk7CisgICAg
bV9zeW1ib2xUYWJsZS0+c2V0Q2FwdHVyZWRDb3VudChtX2NvZGVCbG9jay0+bV9udW1DYXB0dXJl
ZFZhcnMpOwogCiAgICAgYm9vbCBjYW5MYXppbHlDcmVhdGVGdW5jdGlvbnMgPSAhZnVuY3Rpb25C
b2R5LT5uZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygpICYmICFtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzICYmICFtX3ZtLT50eXBlUHJvZmlsZXIoKTsKICAgICBtX2ZpcnN0TGF6eUZ1
bmN0aW9uID0gY29kZUJsb2NrLT5tX251bVZhcnM7CkBAIC0zODEsMTIgKzQyMywxMiBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2Rl
KiBmdW5jdGlvbkJvZHksIFVubAogICAgICAgICBtX2xhc3RMYXp5RnVuY3Rpb24gPSBjYW5MYXpp
bHlDcmVhdGVGdW5jdGlvbnMgPyBjb2RlQmxvY2stPm1fbnVtVmFycyA6IG1fZmlyc3RMYXp5RnVu
Y3Rpb247CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYm91bmRQYXJhbWV0ZXJQcm9w
ZXJ0aWVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGJvdW5kUGFyYW1ldGVyUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGlmICghZnVuY3Rp
b25Cb2R5LT5jYXB0dXJlcyhpZGVudCkpCisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uQm9keS0+
Y2FwdHVyZXMoaWRlbnQpICYmIGlkZW50ICE9IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAg
ICAgICAgICAgICAgICAgYWRkVmFyKGlkZW50LCBJc1ZhcmlhYmxlLCBJc1dhdGNoYWJsZSk7CiAg
ICAgICAgIH0KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YXJTdGFjay5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSB2YXJTdGFja1tp
XS5maXJzdDsKLSAgICAgICAgICAgIGlmICghZnVuY3Rpb25Cb2R5LT5jYXB0dXJlcyhpZGVudCkp
CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpICYmIGlkZW50
ICE9IHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgYWRkVmFyKGlk
ZW50LCAodmFyU3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQp
ID8gSXNDb25zdGFudCA6IElzVmFyaWFibGUsIE5vdFdhdGNoYWJsZSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC00MTIsMTggKzQ1NCwxOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHksIFVubAogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBzaW1wbGVQYXJhbWV0ZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBCaW5kaW5nTm9kZSo+KHBhdHRlcm4pOwotICAgICAgICBpZiAo
Y2FwdHVyZWRBcmd1bWVudHMuc2l6ZSgpICYmIGNhcHR1cmVkQXJndW1lbnRzW2ldKSB7CisgICAg
ICAgIGJvb2wgY2FwdHVyZWQgPSBjYXB0dXJlZEFyZ3VtZW50cy5zaXplKCkgJiYgY2FwdHVyZWRB
cmd1bWVudHNbaV07CisgICAgICAgIGlmIChjYXB0dXJlZCkgewogICAgICAgICAgICAgQVNTRVJU
KChmdW5jdGlvbkJvZHktPmhhc0NhcHR1cmVkVmFyaWFibGVzKCkgJiYgZnVuY3Rpb25Cb2R5LT5j
YXB0dXJlcyhzaW1wbGVQYXJhbWV0ZXItPmJvdW5kUHJvcGVydHkoKSkpIHx8IHNob3VsZENhcHR1
cmVBbGxUaGVUaGluZ3MpOwogICAgICAgICAgICAgaW5kZXggPSBjYXB0dXJlZEFyZ3VtZW50c1tp
XS0+aW5kZXgoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQgb3JpZ2luYWwobmV4dFBhcmFtZXRl
ckluZGV4KTsKLSAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKGNhcHR1cmVk
QXJndW1lbnRzW2ldLCBzaW1wbGVQYXJhbWV0ZXItPmJvdW5kUHJvcGVydHkoKSwgJm9yaWdpbmFs
KTsKKyAgICAgICAgICAgIGluaXRpYWxpemVDYXB0dXJlZFZhcmlhYmxlKCpjYXB0dXJlZEFyZ3Vt
ZW50c1tpXSwgc2ltcGxlUGFyYW1ldGVyLT5ib3VuZFByb3BlcnR5KCksICZvcmlnaW5hbCk7CiAg
ICAgICAgIH0KLSAgICAgICAgYWRkUGFyYW1ldGVyKHNpbXBsZVBhcmFtZXRlci0+Ym91bmRQcm9w
ZXJ0eSgpLCBpbmRleCk7CisgICAgICAgIGFkZFBhcmFtZXRlcihzaW1wbGVQYXJhbWV0ZXItPmJv
dW5kUHJvcGVydHkoKSwgaW5kZXgsIGNhcHR1cmVkKTsKICAgICB9CiAgICAgcHJlc2VydmVMYXN0
VmFyKCk7CiAKICAgICAvLyBXZSBkZWNsYXJlIHRoZSBjYWxsZWUncyBuYW1lIGxhc3QgYmVjYXVz
ZSBpdCBzaG91bGQgbG9zZSB0byBhIHZhciwgZnVuY3Rpb24sIGFuZC9vciBwYXJhbWV0ZXIgZGVj
bGFyYXRpb24uCi0gICAgYWRkQ2FsbGVlKGZ1bmN0aW9uQm9keSwgY2FsbGVlUmVnaXN0ZXIpOwor
ICAgIGFkZENhbGxlZShmdW5jdGlvbkJvZHksIGNhbGxlZUxvY2F0aW9uKTsKIAogICAgIGlmIChp
c0NvbnN0cnVjdG9yKCkpIHsKICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVy
KTsKQEAgLTQ5OCw3ICs1NDEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCogcmVnKQogICAgIHJldHVybiByZWc7CiB9CiAK
LVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJs
ZShSZWdpc3RlcklEKiBkc3QsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUmVnaXN0
ZXJJRCogdmFsdWUpCitDYXB0dXJlZFZhcmlhYmxlIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFs
aXplQ2FwdHVyZWRWYXJpYWJsZShDYXB0dXJlZFZhcmlhYmxlIGRzdCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKIAogICAgIG1fY29kZUJsb2Nr
LT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CkBA
IC01MDcsNDIgKzU1MCw1MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlh
bGl6ZUNhcHR1cmVkVmFyaWFibGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdAogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eU5hbWUpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChS
ZXNvbHZlTW9kZUFuZFR5cGUoVGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIpLm9wZXJh
bmQoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwotICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh3YXRjaGFi
bGVDYXB0dXJlZFZhcmlhYmxlKGRzdC5pbmRleCgpKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC5pbmRleCgpKTsKICAgICByZXR1cm4gZHN0OwogfQogCi1SZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6cmVzb2x2ZUNhbGxlZShGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJv
ZHlOb2RlKQorQnl0ZWNvZGVHZW5lcmF0b3I6OkNhbGxlZUxvY2F0aW9uIEJ5dGVjb2RlR2VuZXJh
dG9yOjpyZXNvbHZlQ2FsbGVlKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUpCiB7
CiAgICAgaWYgKCFmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQo
KSwgZnVuY3Rpb25Cb2R5Tm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIENhbGxlZUxvY2F0aW9uKCk7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1l
U2NvcGVJc0R5bmFtaWMobV9jb2RlQmxvY2stPnVzZXNFdmFsKCksIG1fY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQ2FsbGVlTG9j
YXRpb24oKTsKIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVl
KTsKICAgICBpZiAoZnVuY3Rpb25Cb2R5Tm9kZS0+Y2FwdHVyZXMoZnVuY3Rpb25Cb2R5Tm9kZS0+
aWRlbnQoKSkpCi0gICAgICAgIHJldHVybiBpbml0aWFsaXplQ2FwdHVyZWRWYXJpYWJsZShhZGRW
YXIoKSwgZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwgJm1fY2FsbGVlUmVnaXN0ZXIpOworICAg
ICAgICByZXR1cm4gQ2FsbGVlTG9jYXRpb24obnVsbHB0ciwgaW5pdGlhbGl6ZUNhcHR1cmVkVmFy
aWFibGUoYWRkQ2FwdHVyZWRWYXIoKSwgZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKSwgJm1fY2Fs
bGVlUmVnaXN0ZXIpKTsKIAotICAgIHJldHVybiAmbV9jYWxsZWVSZWdpc3RlcjsKKyAgICByZXR1
cm4gQ2FsbGVlTG9jYXRpb24oJm1fY2FsbGVlUmVnaXN0ZXIsIENhcHR1cmVkVmFyaWFibGUoKSk7
CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENhbGxlZShGdW5jdGlvbkJvZHlOb2Rl
KiBmdW5jdGlvbkJvZHlOb2RlLCBSZWdpc3RlcklEKiBjYWxsZWVSZWdpc3RlcikKK3ZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmFkZENhbGxlZShGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHlO
b2RlLCBDYWxsZWVMb2NhdGlvbiBjYWxsZWVMb2NhdGlvbikKIHsKLSAgICBpZiAoIWNhbGxlZVJl
Z2lzdGVyKQorICAgIGlmIChjYWxsZWVMb2NhdGlvbi5maXJzdCkgeworICAgICAgICBzeW1ib2xU
YWJsZSgpLmFkZChmdW5jdGlvbkJvZHlOb2RlLT5pZGVudCgpLmltcGwoKSwgU3ltYm9sVGFibGVF
bnRyeShjYWxsZWVMb2NhdGlvbi5maXJzdC0+aW5kZXgoKSwgUmVhZE9ubHksIFN5bWJvbFRhYmxl
RW50cnk6Ok5vdENhcHR1cmVkKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IWNhbGxlZUxvY2F0aW9uLnNlY29uZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3ltYm9sVGFi
bGUoKS5hZGQoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKS5pbXBsKCksIFN5bWJvbFRhYmxlRW50
cnkoY2FsbGVlUmVnaXN0ZXItPmluZGV4KCksIFJlYWRPbmx5KSk7CisgICAgc3ltYm9sVGFibGUo
KS5hZGQoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnko
Y2FsbGVlTG9jYXRpb24uc2Vjb25kLmluZGV4KCksIFJlYWRPbmx5LCBTeW1ib2xUYWJsZUVudHJ5
OjpDYXB0dXJlZCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRQYXJhbWV0ZXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBwYXJhbWV0ZXJJbmRleCkKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmFkZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHBh
cmFtZXRlckluZGV4LCBib29sIGlzQ2FwdHVyZWQpCiB7CiAgICAgLy8gUGFyYW1ldGVycyBvdmVy
d3JpdGUgdmFyIGRlY2xhcmF0aW9ucywgYnV0IG5vdCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCiAg
ICAgU3RyaW5nSW1wbCogcmVwID0gaWRlbnQuaW1wbCgpOwogICAgIGlmICghbV9mdW5jdGlvbnMu
Y29udGFpbnMocmVwKSkgewotICAgICAgICBzeW1ib2xUYWJsZSgpLnNldChyZXAsIHBhcmFtZXRl
ckluZGV4KTsKLSAgICAgICAgUmVnaXN0ZXJJRCYgcGFyYW1ldGVyID0gcmVnaXN0ZXJGb3IocGFy
YW1ldGVySW5kZXgpOwotICAgICAgICBwYXJhbWV0ZXIuc2V0SW5kZXgocGFyYW1ldGVySW5kZXgp
OworICAgICAgICBpZiAoaXNDYXB0dXJlZCkgeworICAgICAgICAgICAgc3ltYm9sVGFibGUoKS5z
ZXQocmVwLCBTeW1ib2xUYWJsZUVudHJ5KHBhcmFtZXRlckluZGV4LCBTeW1ib2xUYWJsZUVudHJ5
OjpDYXB0dXJlZCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3ltYm9sVGFibGUo
KS5zZXQocmVwLCBTeW1ib2xUYWJsZUVudHJ5KHBhcmFtZXRlckluZGV4LCBTeW1ib2xUYWJsZUVu
dHJ5OjpOb3RDYXB0dXJlZCkpOworICAgICAgICAgICAgUmVnaXN0ZXJJRCYgcGFyYW1ldGVyID0g
cmVnaXN0ZXJGb3IocGFyYW1ldGVySW5kZXgpOworICAgICAgICAgICAgcGFyYW1ldGVyLnNldElu
ZGV4KHBhcmFtZXRlckluZGV4KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvIG1haW50
YWluIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24sIHdlIGhhdmUgdG8gYWxsb2NhdGUgdW5pcXVlIHNw
YWNlIGZvcgpAQCAtNTYyLDcgKzYxNCw3IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OndpbGxS
ZXNvbHZlVG9Bcmd1bWVudHMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgaWYgKGVudHJ5
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9jb2RlQmxvY2st
PnVzZXNBcmd1bWVudHMoKSAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX2xvY2Fs
QXJndW1lbnRzUmVnaXN0ZXIpCisgICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVn
aXN0ZXIoKSAmJiBtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBtX2xvY2FsQXJndW1lbnRz
UmVnaXN0ZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwMzMsNyArMTA4NSw2IEBAIHVuc2lnbmVkIEJ5dGVjb2RlR2VuZXJhdG9yOjphZGRSZWdF
eHAoUmVnRXhwKiByKQogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNb3ZlKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjKQogewogICAgIG1fc3RhdGljUHJvcGVydHlB
bmFseXplci5tb3YoZHN0LT5pbmRleCgpLCBzcmMtPmluZGV4KCkpOwotICAgIEFTU0VSVChkc3Qt
PnZpcnR1YWxSZWdpc3RlcigpID09IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpIHx8
ICFpc0NhcHR1cmVkKGRzdC0+aW5kZXgoKSkpOwogICAgIGVtaXRPcGNvZGUob3BfbW92KTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoc3JjLT5pbmRleCgpKTsKQEAgLTEyMTYsMTEgKzEyNjcsNiBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRHbG9iYWxPYmplY3QoUmVnaXN0ZXJJRCogZHN0
KQogICAgIHJldHVybiBtX2dsb2JhbE9iamVjdFJlZ2lzdGVyOwogfQogCi1ib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjppc0NhcHR1cmVkKGludCBvcGVyYW5kKQotewotICAgIHJldHVybiBtX3N5bWJv
bFRhYmxlICYmIG1fc3ltYm9sVGFibGUtPmlzQ2FwdHVyZWQob3BlcmFuZCk7Ci19Ci0KIExvY2Fs
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsb2NhbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsK
ICAgICBpZiAocHJvcGVydHkgPT0gcHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKQpAQCAt
MTIzNiwxMiArMTI4MiwxMSBAQCBMb2NhbCBCeXRlY29kZUdlbmVyYXRvcjo6bG9jYWwoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHkpCiAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gTG9jYWwoKTsKIAorICAgIGlmIChlbnRyeS5pc0NhcHR1cmVkKCkgJiYgbV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3RlcikKKyAgICAgICAgcmV0dXJuIExvY2FsKCk7CiAKICAgICBSZWdp
c3RlcklEKiBsb2NhbCA9IGNyZWF0ZUxhenlSZWdpc3RlcklmTmVjZXNzYXJ5KCZyZWdpc3RlckZv
cihlbnRyeS5nZXRJbmRleCgpKSk7CiAKLSAgICBpZiAoaXNDYXB0dXJlZChsb2NhbC0+aW5kZXgo
KSkgJiYgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcikKLSAgICAgICAgcmV0dXJuIExvY2Fs
KCk7Ci0KICAgICByZXR1cm4gTG9jYWwobG9jYWwsIGVudHJ5LmdldEF0dHJpYnV0ZXMoKSwgaXNB
cmd1bWVudHMgPyBMb2NhbDo6U3BlY2lhbExvY2FsIDogTG9jYWw6Ok5vcm1hbExvY2FsKTsKIH0K
IApAQCAtMTI1NCwxMSArMTI5OSwxMiBAQCBMb2NhbCBCeXRlY29kZUdlbmVyYXRvcjo6Y29uc3RM
b2NhbChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKICAgICBpZiAoZW50cnkuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBMb2NhbCgpOwogCisgICAgaWYgKGVudHJ5LmlzQ2FwdHVyZWQoKSAm
JiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKQorICAgICAgICByZXR1cm4gTG9jYWwoKTsK
KwogICAgIFJlZ2lzdGVySUQqIGxvY2FsID0gY3JlYXRlTGF6eVJlZ2lzdGVySWZOZWNlc3Nhcnko
JnJlZ2lzdGVyRm9yKGVudHJ5LmdldEluZGV4KCkpKTsKIAogICAgIGJvb2wgaXNBcmd1bWVudHMg
PSBwcm9wZXJ0eSA9PSBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzOwotICAgIGlmIChpc0NhcHR1
cmVkKGxvY2FsLT5pbmRleCgpKSAmJiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKQotICAg
ICAgICByZXR1cm4gTG9jYWwoKTsKIAogICAgIHJldHVybiBMb2NhbChsb2NhbCwgZW50cnkuZ2V0
QXR0cmlidXRlcygpLCBpc0FyZ3VtZW50cyA/IExvY2FsOjpTcGVjaWFsTG9jYWwgOiBMb2NhbDo6
Tm9ybWFsTG9jYWwpOwogfQpAQCAtMTM2OCw3ICsxNDE0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRUb1Njb3BlKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBJZGVu
dGlmaWUKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOwogICAgIGlm
IChpbmZvLmlzTG9jYWwoKSkgewogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoUmVzb2x2
ZU1vZGVBbmRUeXBlKHJlc29sdmVNb2RlLCBMb2NhbENsb3N1cmVWYXIpLm9wZXJhbmQoKSk7Ci0g
ICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh3YXRjaGFibGVWYXJpYWJsZShyZWdpc3RlckZv
cihpbmZvLmxvY2FsSW5kZXgoKSkuaW5kZXgoKSkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQod2F0Y2hhYmxlQ2FwdHVyZWRWYXJpYWJsZShpbmZvLmxvY2FsSW5kZXgoKSkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChSZXNvbHZlTW9kZUFuZFR5
cGUocmVzb2x2ZU1vZGUsIHJlc29sdmVUeXBlKCkpLm9wZXJhbmQoKSk7CiAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKQEAgLTE3MzUsMTAgKzE3ODEsMTAgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSWZOZWNlc3NhcnkoKQogICAgIGlmIChtX2NvZGVU
eXBlICE9IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmICghbV9j
b2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkKKyAgICBpZiAoIW1fY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzUmVnaXN0ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHNob3VsZFRlYXJP
ZmZBcmd1bWVudHNFYWdlcmx5KCkgfHwgc2hvdWxkQ3JlYXRlQXJndW1lbnRzRWFnZXJseSgpKQor
ICAgIGlmIChzaG91bGRUZWFyT2ZmQXJndW1lbnRzRWFnZXJseSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwpAQCAtMTkzNCwxOSArMTk4
MCwyMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGxWYXJhcmdzKE9w
Y29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCogZHN0LAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJldHVybihSZWdpc3RlcklEKiBzcmMpCiB7Ci0gICAgaWYgKG1fY29kZUJs
b2NrLT51c2VzQXJndW1lbnRzKCkgJiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAx
ICYmICFpc1N0cmljdE1vZGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NyYXRj
aFJlZ2lzdGVyOwotICAgICAgICBpbnQgYXJndW1lbnRzSW5kZXggPSB1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpOwot
ICAgICAgICBpZiAobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciAmJiBtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSkgewotICAgICAgICAgICAgc2NyYXRjaFJlZ2lzdGVyID0gbmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgICAgICBlbWl0R2V0T3duU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdldCgp
LCBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzLCBPd25TY29wZUZvclJldHVybik7Ci0gICAgICAg
ICAgICBSZXNvbHZlU2NvcGVJbmZvIHNjb3BlSW5mbyh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKTsKLSAgICAgICAg
ICAgIGVtaXRHZXRGcm9tU2NvcGUoc2NyYXRjaFJlZ2lzdGVyLmdldCgpLCBzY3JhdGNoUmVnaXN0
ZXIuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIFRocm93SWZOb3RGb3VuZCwgc2Nv
cGVJbmZvKTsKLSAgICAgICAgICAgIGFyZ3VtZW50c0luZGV4ID0gc2NyYXRjaFJlZ2lzdGVyLT5p
bmRleCgpOwotICAgICAgICB9CisgICAgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVn
aXN0ZXIoKSAmJiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDEgJiYgIWlzU3RyaWN0
TW9kZSgpKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyKTsKICAgICAgICAgZW1pdE9wY29kZShvcF90ZWFyX29mZl9hcmd1bWVudHMpOwotICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzSW5kZXgpOwotICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlciA/IG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXItPmluZGV4KCkgOiBlbWl0TG9hZCgwLCBKU1ZhbHVlKCkpLT5p
bmRleCgpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3RlcihtX2NvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0ZXIoKSkub2Zmc2V0KCkpOwor
ICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZW1pdExvYWQoMCwgSlNWYWx1ZSgpKS0+aW5k
ZXgoKSk7CisgICAgfSBlbHNlIGlmIChtX2NvZGVCbG9jay0+aGFzQ2FwdHVyZWRBcmd1bWVudHMo
KSAmJiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDEgJiYgIWlzU3RyaWN0TW9kZSgp
KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NyYXRjaFJlZ2lzdGVyID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIGVtaXRHZXRPd25TY29wZShzY3JhdGNoUmVnaXN0ZXIuZ2V0KCksIHBy
b3BlcnR5TmFtZXMoKS5leGVjdXRpb25Db3VudCwgT3duU2NvcGVGb3JSZXR1cm4pOworICAgICAg
ICBSZXNvbHZlU2NvcGVJbmZvIHNjb3BlSW5mbyhtX2NvZGVCbG9jay0+Y2FwdHVyZWRBcmd1bWVu
dHNJbmRleCgpKTsKKyAgICAgICAgZW1pdEdldEZyb21TY29wZShzY3JhdGNoUmVnaXN0ZXIuZ2V0
KCksIHNjcmF0Y2hSZWdpc3Rlci5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmV4ZWN1dGlvbkNvdW50
LCBUaHJvd0lmTm90Rm91bmQsIHNjb3BlSW5mbyk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdGVh
cl9vZmZfYXJndW1lbnRzKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjcmF0Y2hS
ZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICB9CiAKICAgICAvLyBDb25zdHJ1
Y3RvcnMgdXNlIG9wX3JldF9vYmplY3Rfb3JfdGhpcyB0byBjaGVjayB0aGUgcmVzdWx0IGlzIGFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggNDZkNTkwZGU3MDE2YTEyZDM2M2Y5NDYwMTNlMjE4MmZkNGFjYmMz
Mi4uZmYwYWMzYWU0OWJhZmIyMDZjOTRiNzBmYjJkMTJiZDNmOTZkNGNmNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtMTc5LDExICsxNzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSog
dHJ5RGF0YTsKICAgICB9OwogCi0gICAgZW51bSBDYXB0dXJlTW9kZSB7Ci0gICAgICAgIE5vdENh
cHR1cmVkLAotICAgICAgICBJc0NhcHR1cmVkCi0gICAgfTsKLQogICAgIGNsYXNzIExvY2FsIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIExvY2FsKCkKQEAgLTI1Myw2ICsyNDgsMjMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFByb2ZpbGVUeXBlQnl0ZWNvZGVGdW5jdGlvblJldHVyblN0YXRl
bWVudAogICAgIH07CiAKKyAgICBzdHJ1Y3QgQ2FwdHVyZWRWYXJpYWJsZSB7CisgICAgICAgIENh
cHR1cmVkVmFyaWFibGUoKQorICAgICAgICAgICAgOiBtX2luZGV4KC0xKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBpbnQgaW5kZXgoKSBjb25zdCB7IEFTU0VSVChtX2luZGV4ID49
IDApOyByZXR1cm4gbV9pbmRleDsgfQorICAgICAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGlu
ZGV4KSB7IEFTU0VSVChtX2luZGV4IDwgMCk7IG1faW5kZXggPSBpbmRleDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPCAwOyB9CisKKyAgICAgICAg
dHlwZWRlZiBpbnQgKENhcHR1cmVkVmFyaWFibGU6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKKyAg
ICAgICAgb3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5k
ZXggPj0gMCA/ICZDYXB0dXJlZFZhcmlhYmxlOjptX2luZGV4IDogbnVsbHB0cjsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgaW50IG1faW5kZXg7CisgICAgfTsKKwogICAgIGNsYXNzIEJ5dGVj
b2RlR2VuZXJhdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgpAQCAtMjgxLDkgKzI5Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGhh
c1NhZmVMb2NhbEFyZ3VtZW50c1JlZ2lzdGVyKCkgeyByZXR1cm4gbV9sb2NhbEFyZ3VtZW50c1Jl
Z2lzdGVyOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIHVuY2hlY2tlZExvY2FsQXJndW1lbnRzUmVn
aXN0ZXIoKTsKIAotICAgICAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQpOwotICAgICAg
ICBDYXB0dXJlTW9kZSBjYXB0dXJlTW9kZShpbnQgb3BlcmFuZCkgeyByZXR1cm4gaXNDYXB0dXJl
ZChvcGVyYW5kKSA/IElzQ2FwdHVyZWQgOiBOb3RDYXB0dXJlZDsgfQotICAgICAgICAKICAgICAg
ICAgTG9jYWwgbG9jYWwoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBMb2NhbCBjb25zdExv
Y2FsKGNvbnN0IElkZW50aWZpZXImKTsKIApAQCAtMzQ0LDggKzM1Myw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOb2RlOjplbWl0Q29kZSBhc3N1bWVzIHRo
YXQgZHN0LCBpZiBwcm92aWRlZCwgaXMgZWl0aGVyIGEgbG9jYWwgb3IgYSByZWZlcmVuY2VkIHRl
bXBvcmFyeS4KICAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0
KCkgfHwgIWRzdC0+aXNUZW1wb3JhcnkoKSB8fCBkc3QtPnJlZkNvdW50KCkpOwotICAgICAgICAg
ICAgLy8gU2hvdWxkIG5ldmVyIHN0b3JlIGRpcmVjdGx5IGludG8gYSBjYXB0dXJlZCB2YXJpYWJs
ZS4KLSAgICAgICAgICAgIEFTU0VSVCghZHN0IHx8IGRzdCA9PSBpZ25vcmVkUmVzdWx0KCkgfHwg
IWlzQ2FwdHVyZWQoZHN0LT5pbmRleCgpKSk7CiAgICAgICAgICAgICBpZiAoIW1fdm0tPmlzU2Fm
ZVRvUmVjdXJzZSgpKSB7CiAgICAgICAgICAgICAgICAgZW1pdFRocm93RXhwcmVzc2lvblRvb0Rl
ZXBFeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zNjIsOCArMzY5LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5vZGU6OmVtaXRD
b2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVkLCBpcyBlaXRoZXIgYSBsb2NhbCBvciBh
IHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAgICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09
IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBvcmFyeSgpIHx8IGRzdC0+cmVmQ291bnQo
KSk7Ci0gICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgc3RvcmUgZGlyZWN0bHkgaW50byBhIGNh
cHR1cmVkIHZhcmlhYmxlLgotICAgICAgICAgICAgQVNTRVJUKCFkc3QgfHwgZHN0ID09IGlnbm9y
ZWRSZXN1bHQoKSB8fCAhaXNDYXB0dXJlZChkc3QtPmluZGV4KCkpKTsKICAgICAgICAgICAgIGlm
ICghbV92bS0+aXNTYWZlVG9SZWN1cnNlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVtaXRU
aHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gbi0+
ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpOwpAQCAtNjA3LDYgKzYxMiwyMyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICAvLyBBZGRzIGEgdmFyIHNsb3QgYW5kIG1hcHMgaXQgdG8gdGhlIG5h
bWUgaWRlbnQgaW4gc3ltYm9sVGFibGUoKS4KICAgICAgICAgZW51bSBXYXRjaE1vZGUgeyBJc1dh
dGNoYWJsZSwgTm90V2F0Y2hhYmxlIH07CisKKyAgICAgICAgQ2FwdHVyZWRWYXJpYWJsZSBhZGRD
YXB0dXJlZFZhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIENhcHR1cmVkVmFyaWFibGUgcmVz
dWx0OworICAgICAgICAgICAgcmVzdWx0LnNldEluZGV4KG1fY29kZUJsb2NrLT5tX251bUNhcHR1
cmVkVmFycysrKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAg
ICAgICBDYXB0dXJlZFZhcmlhYmxlIGFkZENhcHR1cmVkVmFyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBDb25zdGFudE1vZGUgY29uc3RhbnRNb2RlLCBXYXRjaE1vZGUgd2F0Y2hNb2RlKQorICAg
ICAgICB7CisgICAgICAgICAgICBDYXB0dXJlZFZhcmlhYmxlIGxvY2FsOworICAgICAgICAgICAg
YWRkQ2FwdHVyZWRWYXIoaWRlbnQsIGNvbnN0YW50TW9kZSwgd2F0Y2hNb2RlLCBsb2NhbCk7Cisg
ICAgICAgICAgICByZXR1cm4gbG9jYWw7CisgICAgICAgIH0KKworICAgICAgICBib29sIGFkZENh
cHR1cmVkVmFyKGNvbnN0IElkZW50aWZpZXImLCBDb25zdGFudE1vZGUsIFdhdGNoTW9kZSwgQ2Fw
dHVyZWRWYXJpYWJsZSYpOworCiAgICAgICAgIFJlZ2lzdGVySUQqIGFkZFZhcihjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQ29uc3RhbnRNb2RlIGNvbnN0YW50TW9kZSwgV2F0Y2hNb2RlIHdhdGNo
TW9kZSkKICAgICAgICAgewogICAgICAgICAgICAgUmVnaXN0ZXJJRCogbG9jYWw7CkBAIC02MjUs
OSArNjQ3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgaW5kZXggb2YgdGhlIGFkZGVkIHZhci4KLSAgICAgICAgdm9pZCBhZGRQYXJhbWV0
ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRleCk7Ci0gICAgICAgIFJlZ2lz
dGVySUQqIHJlc29sdmVDYWxsZWUoRnVuY3Rpb25Cb2R5Tm9kZSopOwotICAgICAgICB2b2lkIGFk
ZENhbGxlZShGdW5jdGlvbkJvZHlOb2RlKiwgUmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGFk
ZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiwgaW50IHBhcmFtZXRlckluZGV4LCBib29sIGlz
Q2FwdHVyZWQpOworICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxSZWdpc3RlcklEKiwgQ2FwdHVy
ZWRWYXJpYWJsZT4gQ2FsbGVlTG9jYXRpb247CisgICAgICAgIENhbGxlZUxvY2F0aW9uIHJlc29s
dmVDYWxsZWUoRnVuY3Rpb25Cb2R5Tm9kZSopOworICAgICAgICB2b2lkIGFkZENhbGxlZShGdW5j
dGlvbkJvZHlOb2RlKiwgQ2FsbGVlTG9jYXRpb24pOwogCiAgICAgICAgIHZvaWQgcHJlc2VydmVM
YXN0VmFyKCk7CiAKQEAgLTY1OSw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb25zdHJ1Y3RWYXJhcmdzKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBm
aXJzdEZyZWVSZWdpc3RlciwgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCog
cHJvZmlsZUhvb2tSZWdpc3RlciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxWYXJhcmdzKE9wY29kZUlELCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIFJlZ2lzdGVySUQqIHRoaXNSZWdpc3RlciwgUmVn
aXN0ZXJJRCogYXJndW1lbnRzLCBSZWdpc3RlcklEKiBmaXJzdEZyZWVSZWdpc3RlciwgaW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCwgUmVnaXN0ZXJJRCogcHJvZmlsZUhvb2tSZWdpc3RlciwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKLSAgICAgICAgUmVnaXN0ZXJJRCog
aW5pdGlhbGl6ZUNhcHR1cmVkVmFyaWFibGUoUmVnaXN0ZXJJRCogZHN0LCBjb25zdCBJZGVudGlm
aWVyJiwgUmVnaXN0ZXJJRCopOworICAgICAgICBDYXB0dXJlZFZhcmlhYmxlIGluaXRpYWxpemVD
YXB0dXJlZFZhcmlhYmxlKENhcHR1cmVkVmFyaWFibGUgZHN0LCBjb25zdCBJZGVudGlmaWVyJiwg
UmVnaXN0ZXJJRCopOwogCiAgICAgICAgIC8vIFdlJ2xsIG1heSB3YW50IGEgbm9uLXJldHVybiBt
b2RlIGluIGZ1dHVyZSwgYnV0IGN1cnJlbnRseQogICAgICAgICAvLyB0aGlzIGlzIG9ubHkgdXNl
ZCBkdXJpbmcgZW1pdFJldHVybigpLiBlbWl0UmV0dXJuKCkgb2NjdXJzCkBAIC03MDUsMTMgKzcy
OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG1fY29kZVR5cGUgPT0g
RnVuY3Rpb25Db2RlICYmIGlzU3RyaWN0TW9kZSgpICYmIG1fc2NvcGVOb2RlLT5tb2RpZmllc1Bh
cmFtZXRlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVu
dHNFYWdlcmx5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY29kZVR5cGUgIT0gRnVu
Y3Rpb25Db2RlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybiBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICYmIG1fY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCk7Ci0gICAgICAgIH0KLQogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VGhyb3dFeHBy
ZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOwogCiAgICAgICAgIHZvaWQgY3JlYXRlQXJndW1lbnRz
SWZOZWNlc3NhcnkoKTsKQEAgLTczNCw2ICs3NTAsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiB3YXRjaGFibGVWYXJpYWJsZShvcGVyYW5kKSAhPSBV
SU5UX01BWDsKICAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIHdhdGNoYWJsZUNhcHR1cmVk
VmFyaWFibGUoaW50IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPj0gbV93YXRjaGFibGVDYXB0dXJlZFZhcmlhYmxlcy5zaXplKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworICAgICAgICAgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBtX3dhdGNoYWJsZUNhcHR1cmVkVmFyaWFibGVzW2luZGV4XTsKKyAgICAgICAg
ICAgIGlmIChpZGVudC5pc051bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CisgICAgICAgICAgICByZXR1cm4gYWRkQ29uc3RhbnQoaWRlbnQpOworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCBoYXNXYXRjaGFibGVDYXB0dXJlZFZhcmlhYmxlKGludCBpbmRleCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIHdhdGNoYWJsZUNhcHR1cmVkVmFyaWFibGUoaW5kZXgp
ICE9IFVJTlRfTUFYOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8VW5saW5r
ZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1faW5zdHJ1Y3Rpb25zOwog
CkBAIC03NTcsNiArNzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQq
IG1fbG9jYWxBcmd1bWVudHNSZWdpc3RlcjsKIAogICAgICAgICBWZWN0b3I8SWRlbnRpZmllciwg
MTY+IG1fd2F0Y2hhYmxlVmFyaWFibGVzOworICAgICAgICBWZWN0b3I8SWRlbnRpZmllciwgMTY+
IG1fd2F0Y2hhYmxlQ2FwdHVyZWRWYXJpYWJsZXM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxS
ZWdpc3RlcklELCAzMj4gbV9jb25zdGFudFBvb2xSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21lbnRl
ZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9jYWxsZWVSZWdpc3RlcnM7CiAgICAgICAgIFNlZ21l
bnRlZFZlY3RvcjxSZWdpc3RlcklELCAzMj4gbV9wYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CmluZGV4IDJiZDk5ZTIwMmM2ZGNmNmZlYTdlMWMxMDJhZmUxMDIwOWFlMDk4YzEuLmY0ZTE2YzMw
OTRlZjc1NzE1NzBhMjNiOWUxNWEzNDBkNWUyMzJjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTEyOTgsNyArMTI5OCwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBmb3JO
b2RlKG5vZGUpLmZpbHRlcih+U3BlY0VtcHR5KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tZXJn
ZShTcGVjQXJndW1lbnRzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBD
cmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNBcmd1bWVudHMpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50
czoKICAgICAgICAgLy8gRG9lcyBub3RoaW5nIHRoYXQgaXMgdXNlci12aXNpYmxlLgogICAgICAg
ICBicmVhazsKQEAgLTE0MzEsNyArMTQzNSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgotICAg
ICAgICBjbG9iYmVyQ2FwdHVyZWRWYXJzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRCeUlkOgpAQCAtMjA3NSw3ICsyMDc4
LDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Y2xvYmJl
ckNhcHR1cmVkVmFycyhjb25zdCBDb2RlT3JpZ2kKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbigiREZHIEFJIENsb2JiZXIgQ2FwdHVyZWQgVmFycyIpOwogICAgIGlmIChjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSkgewotICAgICAgICBjb25zdCBCaXRWZWN0b3ImIGNhcHR1
cmVkVmFycyA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZhcnM7CisgICAg
ICAgIGNvbnN0IEJpdFZlY3RvciYgY2FwdHVyZWRWYXJzID0gY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUtPmxvZ2ljYWxseUNhcHR1cmVkVmFyczsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IGNh
cHR1cmVkVmFycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGlmICghY2FwdHVyZWRWYXJz
LnF1aWNrR2V0KGkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjA4MywxMyArMjA4
NiwxMyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpjbG9i
YmVyQ2FwdHVyZWRWYXJzKGNvbnN0IENvZGVPcmlnaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IG1fY29kZUJsb2NrLT5tX251bVZhcnM7IGktLTspIHsK
LSAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jay0+aXNDYXB0dXJlZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpKSkpCisgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2stPmlzTG9naWNhbGx5Q2Fw
dHVyZWQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkpKQogICAgICAgICAgICAgICAgIG1fc3Rh
dGUudmFyaWFibGVzKCkubG9jYWwoaSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGZvciAoc2l6ZV90IGkgPSBtX3N0YXRlLnZhcmlhYmxlcygpLm51bWJlck9mQXJndW1l
bnRzKCk7IGktLTspIHsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSkKKyAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0xv
Z2ljYWxseUNhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSkKICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkuYXJndW1lbnQoaSkubWFrZUhlYXBUb3AoKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCA5MjBjNDY2MmNiMTY3ODcwZmNiYjQ5
NGZmODhkMzMyNDZmYmVlMjBjLi40NWFiOGMyMDE4NmJmZjkzZGQwY2VjZTRmMWM4ZjBhMGM4YWI2
ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTE2Nyw2ICsxNjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IDA7IGluZGV4SW5C
bG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJsb2NrKSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRB
cmd1bWVudHM6CiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gSWdub3JlIHRoaXMgb3AuIElmIHdlIHNlZSBhIGxvbmUgQ3JlYXRl
QXJndW1lbnRzIHRoZW4gd2Ugd2FudCB0bwogICAgICAgICAgICAgICAgICAgICAvLyBjb21wbGV0
ZWx5IGlnbm9yZSBpdCBiZWNhdXNlOgpAQCAtNjQ1LDYgKzY0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHM6IHsKICAgICAgICAgICAgIG1fY3JlYXRlc0FyZ3VtZW50cy5hZGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTc0MSw3ICs3NDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKworICAgICAgICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOgogICAgICAg
ICBjYXNlIENyZWF0ZUFyZ3VtZW50czogewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggN2Y5MDc2ODc3M2Q2NjZlYzU5MGIzNDk0NWEwYWUyNmE0MDQ5MzY5ZC4uNTEyYmMx
YTkxYWE4NjkzMjRjODk2NWYxMTgwMDczNGRiZDVlYzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBw
cml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubG9jYWwobG9jYWwpOwotICAgICAgICBib29sIGlzQ2FwdHVyZWQg
PSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZChvcGVyYW5kLCBpbmxpbmVDYWxsRnJhbWUoKSk7Cisg
ICAgICAgIGJvb2wgaXNMb2dpY2FsbHlDYXB0dXJlZCA9IG1fY29kZUJsb2NrLT5pc0xvZ2ljYWxs
eUNhcHR1cmVkKG9wZXJhbmQsIGlubGluZUNhbGxGcmFtZSgpKTsKICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgaGFzIHR3byBnb2FsczogMSkgbGluayB0b2dldGhlciB2YXJpYWJsZSBhY2Nlc3Mg
ZGF0YXMsIGFuZCAyKQogICAgICAgICAvLyB0cnkgdG8gYXZvaWQgY3JlYXRpbmcgcmVkdW5kYW50
IEdldExvY2Fscy4gKDEpIGlzIHJlcXVpcmVkIGZvcgpAQCAtMzU3LDkgKzM1Nyw5IEBAIHByaXZh
dGU6CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgdmFyaWFibGUg
PSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJn
ZUlzQ2FwdHVyZWQoaXNDYXB0dXJlZCk7CisgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VJc0Nh
cHR1cmVkKGlzTG9naWNhbGx5Q2FwdHVyZWQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoIWlzQ2FwdHVyZWQpIHsKKyAgICAgICAgICAgIGlmICghaXNMb2dpY2FsbHlDYXB0dXJlZCkg
ewogICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAg
IGNhc2UgR2V0TG9jYWw6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMzcw
LDcgKzM3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NE
YXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOworICAgICAgICAgICAgdmFyaWFibGUgPSBuZXdWYXJp
YWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXNMb2dpY2FsbHlDYXB0dXJlZCk7CiAgICAgICAgIAog
ICAgICAgICBub2RlID0gaW5qZWN0TGF6eU9wZXJhbmRTcGVjdWxhdGlvbihhZGRUb0dyYXBoKEdl
dExvY2FsLCBPcEluZm8odmFyaWFibGUpKSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJp
YWJsZXNBdFRhaWwubG9jYWwobG9jYWwpID0gbm9kZTsKQEAgLTM4MCwxNSArMzgwLDE1IEBAIHBy
aXZhdGU6CiAgICAgTm9kZSogc2V0TG9jYWwoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUq
IHZhbHVlLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBsb2NhbCA9IG9wZXJhbmQudG9Mb2NhbCgpOwotICAgICAgICBib29sIGlzQ2FwdHVyZWQg
PSBtX2NvZGVCbG9jay0+aXNDYXB0dXJlZChvcGVyYW5kLCBpbmxpbmVDYWxsRnJhbWUoKSk7Cisg
ICAgICAgIGJvb2wgaXNMb2dpY2FsbHlDYXB0dXJlZCA9IG1fY29kZUJsb2NrLT5pc0xvZ2ljYWxs
eUNhcHR1cmVkKG9wZXJhbmQsIGlubGluZUNhbGxGcmFtZSgpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzZXRNb2RlICE9IEltbWVkaWF0ZU5ha2VkU2V0KSB7CiAgICAgICAgICAgICBBcmd1bWVu
dFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0gZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2Nh
bChvcGVyYW5kKTsKLSAgICAgICAgICAgIGlmIChpc0NhcHR1cmVkIHx8IGFyZ3VtZW50UG9zaXRp
b24pCisgICAgICAgICAgICBpZiAoaXNMb2dpY2FsbHlDYXB0dXJlZCB8fCBhcmd1bWVudFBvc2l0
aW9uKQogICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0KG9wZXJhbmQsIGFyZ3VtZW50UG9zaXRp
b24pOwogICAgICAgICB9CiAKLSAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXNDYXB0dXJlZCk7Cisg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFi
bGVBY2Nlc3NEYXRhKG9wZXJhbmQsIGlzTG9naWNhbGx5Q2FwdHVyZWQpOwogICAgICAgICB2YXJp
YWJsZUFjY2Vzc0RhdGEtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSk7CiAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VD
aGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCkBAIC00MDUsMTUgKzQwNSwxNSBAQCBwcml2YXRlOgog
ICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBtX251bUFyZ3VtZW50cyk7CiAgICAgICAgIAogICAg
ICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVu
dChhcmd1bWVudCk7Ci0gICAgICAgIGJvb2wgaXNDYXB0dXJlZCA9IG1fY29kZUJsb2NrLT5pc0Nh
cHR1cmVkKG9wZXJhbmQpOworICAgICAgICBib29sIGlzTG9naWNhbGx5Q2FwdHVyZWQgPSBtX2Nv
ZGVCbG9jay0+aXNMb2dpY2FsbHlDYXB0dXJlZChvcGVyYW5kKTsKIAogICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlOwogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUpIHsKICAg
ICAgICAgICAgIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAg
ICAgICB2YXJpYWJsZS0+bWVyZ2VJc0NhcHR1cmVkKGlzQ2FwdHVyZWQpOworICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlSXNDYXB0dXJlZChpc0xvZ2ljYWxseUNhcHR1cmVkKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKCFpc0NhcHR1cmVkKSB7CisgICAgICAgICAgICBpZiAoIWlz
TG9naWNhbGx5Q2FwdHVyZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKICAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0NhcHR1cmVkKTsKKyAgICAgICAgICAg
IHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQsIGlzTG9naWNhbGx5Q2Fw
dHVyZWQpOwogICAgICAgICAKICAgICAgICAgbm9kZSA9IGluamVjdExhenlPcGVyYW5kU3BlY3Vs
YXRpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlKSkpOwogICAgICAgICBt
X2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5vZGU7
CkBAIC00MzUsOSArNDM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnQg
PSBvcGVyYW5kLnRvQXJndW1lbnQoKTsKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50IDwgbV9udW1B
cmd1bWVudHMpOwogICAgICAgICAKLSAgICAgICAgYm9vbCBpc0NhcHR1cmVkID0gbV9jb2RlQmxv
Y2stPmlzQ2FwdHVyZWQob3BlcmFuZCk7CisgICAgICAgIGJvb2wgaXNMb2dpY2FsbHlDYXB0dXJl
ZCA9IG1fY29kZUJsb2NrLT5pc0xvZ2ljYWxseUNhcHR1cmVkKG9wZXJhbmQpOwogCi0gICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nl
c3NEYXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOworICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kLCBpc0xv
Z2ljYWxseUNhcHR1cmVkKTsKIAogICAgICAgICAvLyBBbHdheXMgZmx1c2ggYXJndW1lbnRzLCBl
eGNlcHQgZm9yICd0aGlzJy4gSWYgJ3RoaXMnIGlzIGNyZWF0ZWQgYnkgdXMsCiAgICAgICAgIC8v
IHRoZW4gbWFrZSBzdXJlIHRoYXQgaXQncyBuZXZlciB1bmJveGVkLgpAQCAtNTAxLDcgKzUwMSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBmbHVzaERpcmVjdChWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCwgQXJndW1lbnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbikKICAgICB7Ci0gICAg
ICAgIGJvb2wgaXNDYXB0dXJlZCA9IG1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKG9wZXJhbmQsIGlu
bGluZUNhbGxGcmFtZSgpKTsKKyAgICAgICAgYm9vbCBpc0xvZ2ljYWxseUNhcHR1cmVkID0gbV9j
b2RlQmxvY2stPmlzTG9naWNhbGx5Q2FwdHVyZWQob3BlcmFuZCwgaW5saW5lQ2FsbEZyYW1lKCkp
OwogICAgICAgICAKICAgICAgICAgQVNTRVJUKCFvcGVyYW5kLmlzQ29uc3RhbnQoKSk7CiAgICAg
ICAgIApAQCAtNTExLDkgKzUxMSw5IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAo
bm9kZSkgewogICAgICAgICAgICAgdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUlzQ2FwdHVyZWQoaXNDYXB0dXJlZCk7Cisg
ICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VJc0NhcHR1cmVkKGlzTG9naWNhbGx5Q2FwdHVyZWQp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nl
c3NEYXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOworICAgICAgICAgICAgdmFyaWFibGUgPSBuZXdW
YXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCwgaXNMb2dpY2FsbHlDYXB0dXJlZCk7CiAgICAgICAg
IAogICAgICAgICBub2RlID0gYWRkVG9HcmFwaChGbHVzaCwgT3BJbmZvKHZhcmlhYmxlKSk7CiAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZChvcGVyYW5kKSA9
IG5vZGU7CkBAIC01MzUsNyArNTM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmd1bWVudCA9IG51bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQogICAgICAgICAgICAg
Zmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOwogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxv
Y2FsIDwgaW5saW5lU3RhY2tFbnRyeS0+bV9jb2RlQmxvY2stPm1fbnVtVmFyczsgKytsb2NhbCkg
ewotICAgICAgICAgICAgaWYgKCFpbmxpbmVTdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+aXNDYXB0
dXJlZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkpKQorICAgICAgICAgICAgaWYgKCFp
bmxpbmVTdGFja0VudHJ5LT5tX2NvZGVCbG9jay0+aXNMb2dpY2FsbHlDYXB0dXJlZCh2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKSkpOwogICAgICAgICB9CkBAIC04NjgsNiArODY4LDcg
QEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPENvbnN0YW50QnVmZmVyS2V5LCB1bnNpZ25lZD4gbV9j
b25zdGFudEJ1ZmZlckNhY2hlOwogICAgIAogICAgIFZlY3RvcjxWYXJpYWJsZVdhdGNocG9pbnRT
ZXQqLCAxNj4gbV9sb2NhbFdhdGNocG9pbnRzOworICAgIFZlY3RvcjxWYXJpYWJsZVdhdGNocG9p
bnRTZXQqLCAxNj4gbV9jYXB0dXJlZExvY2FsV2F0Y2hwb2ludHM7CiAgICAgCiAgICAgc3RydWN0
IElubGluZVN0YWNrRW50cnkgewogICAgICAgICBCeXRlQ29kZVBhcnNlciogbV9ieXRlQ29kZVBh
cnNlcjsKQEAgLTIzMjQsNyArMjMyNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3Vt
ZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEoCi0gICAgICAgICAg
ICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpLCBtX2NvZGVCbG9jay0+
aXNDYXB0dXJlZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpKTsKKyAgICAg
ICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCksIG1fY29kZUJs
b2NrLT5pc0xvZ2ljYWxseUNhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3Vt
ZW50KSkpOwogICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGlu
Z0ZhaWxlZCgKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwogICAgICAgICAgICAgdmFy
aWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKApAQCAtMzQwNyw2ICszNDA4LDEz
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfYXJndW1lbnRzKTsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2Ugb3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50czogeworICAgICAgICAgICAg
bV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CisgICAgICAgICAgICBOb2RlKiBjcmVhdGVB
cmd1bWVudHMgPSBhZGRUb0dyYXBoKENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzKTsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
IGNyZWF0ZUFyZ3VtZW50cyk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jcmVhdGVfY2Fw
dHVyZWRfYXJndW1lbnRzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZf
YXJndW1lbnRzOiB7CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFzQXJndW1lbnRzID0gdHJ1ZTsK
ICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGVhck9mZkFyZ3VtZW50cywgZ2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpKTsKQEAgLTM2ODQsMTkgKzM2OTIs
MTkgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnko
CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5raW5kID0ga2luZDsKICAgICAgICAgCiAgICAg
ICAgIGlmIChtX2lubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKLSAgICAg
ICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZhcnMgPSBtX2lubGluZUNhbGxGcmFt
ZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzOworICAgICAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUtPmxvZ2ljYWxseUNhcHR1cmVkVmFycyA9IG1faW5saW5lQ2FsbEZyYW1l
LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lLT5sb2dpY2FsbHlDYXB0dXJlZFZhcnM7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZhcnMgPSBieXRl
Q29kZVBhcnNlci0+bV9ncmFwaC5tX291dGVybW9zdENhcHR1cmVkVmFyczsKKyAgICAgICAgICAg
IG1faW5saW5lQ2FsbEZyYW1lLT5sb2dpY2FsbHlDYXB0dXJlZFZhcnMgPSBieXRlQ29kZVBhcnNl
ci0+bV9ncmFwaC5tX291dGVybW9zdENhcHR1cmVkVmFyczsKIAogICAgICAgICBmb3IgKGludCBp
ID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7IGktLTspIHsKICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBhcmd1bWVudCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwotICAg
ICAgICAgICAgaWYgKGNvZGVCbG9jay0+aXNDYXB0dXJlZChhcmd1bWVudCkpCi0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmNhcHR1cmVkVmFycy5zZXQoVmlydHVhbFJlZ2lzdGVy
KGFyZ3VtZW50Lm9mZnNldCgpICsgbV9pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xv
Y2FsKCkpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+aXNMb2dpY2FsbHlDYXB0dXJlZChh
cmd1bWVudCkpCisgICAgICAgICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmxvZ2ljYWxseUNh
cHR1cmVkVmFycy5zZXQoVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50Lm9mZnNldCgpICsgbV9pbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0KS50b0xvY2FsKCkpOwogICAgICAgICB9CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykgewogICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0g
ICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0NhcHR1cmVkKGxvY2FsKSkKLSAgICAgICAgICAg
ICAgICBtX2lubGluZUNhbGxGcmFtZS0+Y2FwdHVyZWRWYXJzLnNldChWaXJ0dWFsUmVnaXN0ZXIo
bG9jYWwub2Zmc2V0KCkgKyBtX2lubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwo
KSk7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5pc0xvZ2ljYWxseUNhcHR1cmVkKGxvY2Fs
KSkKKyAgICAgICAgICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+bG9naWNhbGx5Q2FwdHVyZWRW
YXJzLnNldChWaXJ0dWFsUmVnaXN0ZXIobG9jYWwub2Zmc2V0KCkgKyBtX2lubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBieXRlQ29k
ZVBhcnNlci0+YnVpbGRPcGVyYW5kTWFwc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODgwLDcgKzM4ODgs
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICBtX2RmZ0NvZGVC
bG9jay0+Z2V0U3R1YkluZm9NYXAobV9kZmdTdHViSW5mb3MpOwogICAgIH0KICAgICAKLSAgICBp
ZiAobV9jb2RlQmxvY2stPmNhcHR1cmVDb3VudCgpKSB7CisgICAgaWYgKG1fY29kZUJsb2NrLT5o
YXNDYXB0dXJlZFZhcmlhYmxlcygpKSB7CiAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSA9IG1fY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBDb25jdXJyZW50SklUTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgU3ltYm9sVGFibGU6Ok1h
cDo6aXRlcmF0b3IgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIpOwpAQCAtMzg4OSwx
MCArMzg5NywxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgICAgICBW
YXJpYWJsZVdhdGNocG9pbnRTZXQqIHNldCA9IGl0ZXItPnZhbHVlLndhdGNocG9pbnRTZXQoKTsK
ICAgICAgICAgICAgIGlmICghc2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgc2l6ZV90IGluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihWaXJ0dWFsUmVnaXN0ZXIo
aXRlci0+dmFsdWUuZ2V0SW5kZXgoKSkudG9Mb2NhbCgpKTsKLSAgICAgICAgICAgIHdoaWxlICht
X2xvY2FsV2F0Y2hwb2ludHMuc2l6ZSgpIDw9IGluZGV4KQotICAgICAgICAgICAgICAgIG1fbG9j
YWxXYXRjaHBvaW50cy5hcHBlbmQobnVsbHB0cik7Ci0gICAgICAgICAgICBtX2xvY2FsV2F0Y2hw
b2ludHNbaW5kZXhdID0gc2V0OworICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gaXRlci0+dmFs
dWUuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIGlmIChpdGVyLT52YWx1ZS5pc0NhcHR1cmVkKCkp
IHsKKyAgICAgICAgICAgICAgICB3aGlsZSAobV9jYXB0dXJlZExvY2FsV2F0Y2hwb2ludHMuc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgICAgICAgICBtX2NhcHR1cmVkTG9jYWxXYXRjaHBv
aW50cy5hcHBlbmQobnVsbHB0cik7CisgICAgICAgICAgICAgICAgbV9jYXB0dXJlZExvY2FsV2F0
Y2hwb2ludHNbaW5kZXhdID0gc2V0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB3aGlsZSAobV9sb2NhbFdhdGNocG9pbnRzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAg
ICAgICAgICAgICAgbV9sb2NhbFdhdGNocG9pbnRzLmFwcGVuZChudWxscHRyKTsKKyAgICAgICAg
ICAgICAgICBtX2xvY2FsV2F0Y2hwb2ludHNbaW5kZXhdID0gc2V0OworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGYxMmExN2U3YzQ1NTI5Y2JiM2U0OWVkNzI1ZTFkOGFhYThl
ODYyNWMuLjU0NDczYTI3MDU4ZTE2NDM0Y2M4NjAxODdlZDJhYTgxMGM2MDhiNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE4Myw2ICsx
ODMsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY29uc3RydWN0Ogog
ICAgIGNhc2Ugb3BfaW5pdF9sYXp5X3JlZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6
CisgICAgY2FzZSBvcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfdGVh
cl9vZmZfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKICAgICBj
YXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgpAQCAtMjIyLDcgKzIyMyw3IEBAIENhcGFiaWxp
dHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjCiAgICAgfQogCiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6Ci0gICAg
ICAgIGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSAmJiBwY1s0XS51Lm9wZXJhbmQgPT0g
Y29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpCisgICAgICAgIGlmIChjb2Rl
QmxvY2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpICYmIHBjWzRdLnUub3BlcmFuZCA9PSBjb2Rl
QmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkKICAgICAgICAgICAgICYmICFwY1s2
XS51Lm9wZXJhbmQpCiAgICAgICAgICAgICByZXR1cm4gQ2FuSW5saW5lOwogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGhhbmRsZSB0aGlzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAppbmRleCBlZDIwNDJhMmY0OTg1YTg4NDNmNTI3MjhjMTdkNTBlOGFkYWYw
NjFhLi5iNzc4NDRhNDRiMWVhNTBhY2RlMzEzM2RlNmY3ZjJhYjQwZTk0NTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMzA4LDcgKzMwOCw4IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9y
JiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAg
IHdyaXRlKFdhdGNocG9pbnRfZmlyZSk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKKyAg
ICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
OgogICAgICAgICByZWFkKFZhcmlhYmxlcyk7CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBiZjQ1YWJjNTlm
NjVkNDMzYTA2YjgxMDIxNzY2NmRlYThhMTZkY2E5Li5kOTUxOGVlYjMzZDg4M2Y2ZGNkMGEwMTQ2
YWViNjg0MjhkMjcxODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CkBAIC0yMDksNiArMjA5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRz
OgorICAgIGNhc2UgQ3JlYXRlQ2FwdHVyZWRBcmd1bWVudHM6CiAgICAgY2FzZSBUb1RoaXM6CiAg
ICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA3OWJmOTA4
NGJmYjcwMDZjMDA3ODM1MTRkNjYyYjcyNzQxN2ZkMmVkLi5lMWM4YzhlYTNkMjMxNjdkZWEyNDk0
ZjVmN2Q4Y2Y1ZTUzODA3NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEyMDgsNiArMTIwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNl
IENyZWF0ZUFyZ3VtZW50czoKKyAgICAgICAgY2FzZSBDcmVhdGVDYXB0dXJlZEFyZ3VtZW50czoK
ICAgICAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgogICAgICAgICBjYXNlIFRlYXJPZmZBcmd1
bWVudHM6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IGNmYTBhNDBjOWI3YTE3OTI3NGUwZDZjODczNDY2
OTZmMzE5MjBmNWQuLjE5MzZkMWRjN2NkMDdiOTAzMjk5NzVhNjRiMDYwY2Q5ZWY3OWY5MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEdy
YXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRT
dGF0ZSkKICAgICAgICAgbV9tdXN0SGFuZGxlVmFsdWVzW2ldID0gZnJlZXplRnJhZ2lsZShwbGFu
Lm11c3RIYW5kbGVWYWx1ZXNbaV0pOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fY29k
ZUJsb2NrLT5tX251bVZhcnM7IGktLTspIHsKLSAgICAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0Nh
cHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKSkKKyAgICAgICAgaWYgKG1fY29kZUJs
b2NrLT5pc0xvZ2ljYWxseUNhcHR1cmVkKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpKSkKICAg
ICAgICAgICAgIG1fb3V0ZXJtb3N0Q2FwdHVyZWRWYXJzLnNldChpKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZTU4NGExOWQ5YmE0ZWJiMWM1MjczN2Yy
YWQzYmM3ZDU1YWU2MWYzOC4uMGFjZDE2ZDhhNGQyMDU2MDIyOTNhYzE0ODg4ZTk3OWUwNTVhNDJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMzcxLDcgKzM3MSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAg
ICAgcmV0dXJuIG1fb3V0ZXJtb3N0Q2FwdHVyZWRWYXJzOwotICAgICAgICByZXR1cm4gaW5saW5l
Q2FsbEZyYW1lLT5jYXB0dXJlZFZhcnM7CisgICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUt
PmxvZ2ljYWxseUNhcHR1cmVkVmFyczsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1N0cmljdE1v
ZGVGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBtX3Byb2ZpbGVkQmxvY2stPnVuY2hlY2tlZEFyZ3VtZW50c1Jl
Z2lzdGVyKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2Vs
aW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7Ci0gICAgICAg
IGlmICghY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpCisgICAgICAgIGlmICghY29kZUJsb2Nr
LT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVn
aXN0ZXIoKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBWaXJ0dWFsUmVnaXN0ZXIoY29kZUJs
b2NrLT5hcmd1bWVudHNSZWdpc3RlcigpLm9mZnNldCgpICsKQEAgLTUxNiw5ICs1MTYsOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVl
UHJvZmlsZUZvcihub2RlKSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgdXNlc0FyZ3VtZW50cygp
IGNvbnN0CisgICAgYm9vbCB1c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCk7CisgICAgICAgIHJldHVy
biBtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCk7CiAgICAgfQogICAgIAogICAg
IEJsb2NrSW5kZXggbnVtQmxvY2tzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3Muc2l6ZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggNTY3MDYzMDRmOTc0
MDYyYjI0YjRkZDRhZDA0OWJiZDdhZTYzOGE0MS4uYmJiZjUzM2NiNmI0N2U3NDJhYTNiMTAyYmMy
ZTliMjBiZjg2N2EyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtMjY3LDYgKzI2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBOb2RlcyB1c2VkIGZvciBhcmd1bWVudHMuIFNpbWlsYXIgdG8gbGV4aWNhbCBlbnZpcm9ubWVu
dCBzdXBwb3J0LCBvbmx5IGl0IG1ha2VzIGV2ZW4gbGVzcyAqL1wKICAgICAvKiBzZW5zZS4gKi9c
CiAgICAgbWFjcm8oQ3JlYXRlQXJndW1lbnRzLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhD
cmVhdGVDYXB0dXJlZEFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUGhhbnRv
bUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oVGVhck9mZkFyZ3VtZW50cywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldE15QXJndW1lbnRzTGVuZ3RoLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKaW5kZXggYmMwYzBmN2Ey
ZDVhYTVhNDE4MDQ2NTkzMjZkOWE3YzIwMjBlMmJlZi4uYWMwNGZhYWM3ZDc2YWM2MDk5YWExODNi
MmZkODFjMzk5MjY0YmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJh
c2UmIGV4aXQpCiAgICAgICAgICAgICBqaXQuc3RvcmU2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZUNv
bnN0YW50KCkpKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVy
KShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwogICAg
ICAgICAKICAgICAgICAgLy8gTGVhdmUgdGhlIGNhcHR1cmVkIGFyZ3VtZW50cyBpbiByZWdUMy4K
LSAgICAgICAgaWYgKGJhc2VsaW5lQ29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpCisgICAgICAg
IGlmIChiYXNlbGluZUNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAg
ICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoVmlydHVhbFJlZ2lz
dGVyKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoYmFzZWxpbmVDb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLm9mZnNldCgpKSks
IEdQUkluZm86OnJlZ1QzKTsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC8vIHNvIHRoaXMgaXMg
dGhlIDMyLWJpdCBwYXJ0CiAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2spLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpTU3Rh
Y2s6OkNvZGVCbG9jaykpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIHJlaWZ5SW5saW5lZENh
bGxGcmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogICAg
ICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKFZpcnR1YWxS
ZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGJhc2VsaW5lQ29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpKS5vZmZzZXQo
KSkpLCBHUFJJbmZvOjpyZWdUMyk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkgLy8gZW5kaW5n
IHRoZSAjZWxzZSBwYXJ0LCBzbyBkaXJlY3RseSBhYm92ZSBpcyB0aGUgMzItYml0IHBhcnQKICAg
ICAgICAgCi0gICAgICAgIGlmIChiYXNlbGluZUNvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB7
CisgICAgICAgIGlmIChiYXNlbGluZUNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkp
IHsKICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBub0FyZ3VtZW50cyA9IGppdC5i
cmFuY2hUZXN0UHRyKEFzc2VtYmx5SGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDMpOwogICAg
ICAgICAgICAgaml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuc3Rv
cmVQdHIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpy
ZWdUMywgQXJndW1lbnRzOjpvZmZzZXRPZlJlZ2lzdGVycygpKSk7CkBAIC0zMjEsNyArMzIxLDcg
QEAgdm9pZCBBcmd1bWVudHNSZWNvdmVyeUdlbmVyYXRvcjo6Z2VuZXJhdGVGb3IoCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAoIWppdC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxs
RnJhbWUpLT51c2VzQXJndW1lbnRzKCkpCisgICAgaWYgKCFqaXQuYmFzZWxpbmVDb2RlQmxvY2tG
b3IoaW5saW5lQ2FsbEZyYW1lKS0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSBqaXQuYmFzZWxp
bmVBcmd1bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOwogICAgIGlmIChtX2RpZENy
ZWF0ZUFyZ3VtZW50c09iamVjdC5hZGQoaW5saW5lQ2FsbEZyYW1lKS5pc05ld0VudHJ5KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWNpc2VMb2NhbENsb2Ji
ZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZS5oCmluZGV4IDc1YjY3NmE0ZTI2N2RkNWEwZWQ5Y2ViMWNjOTAxYTU3YjcwYTE5M2IuLjQ2
YjcxYjI5NGU4YzZmYWIxZWZkMDA5MTVjM2I5OTc3NGU3NTY3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oCkBAIC0x
NDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHdyaXRlVG9wKCkKICAgICB7
Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGgubV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpIHx8
IG1fZ3JhcGgubV9jb2RlQmxvY2stPmhhc0NhcHR1cmVkQXJndW1lbnRzKCkpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KTsgaS0tID4gMTspCiAgICAgICAgICAgICAgICAgbV93cml0ZSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKSk7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIGZvckVhY2hM
b2NhbFJlYWRCeVVud2luZChHcmFwaCYgZ3JhcGgsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29u
c3QgUmVhZEZ1bgogewogICAgIGlmIChncmFwaC51bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXIo
KS5pc1ZhbGlkKCkpCiAgICAgICAgIHJlYWQoZ3JhcGguYWN0aXZhdGlvblJlZ2lzdGVyKCkpOwot
ICAgIGlmIChncmFwaC5tX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKQorICAgIGlmIChncmFw
aC5tX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgIHJlYWQodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGdyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG51bGxw
dHIpKSk7CiAgICAgCiAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9
IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxG
cmFtZSA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAppbmRleCA0MTgxMDc1NTM5ZGZkNTNhODNmYTE3Nzc3MTU0Y2Q3N2ZmZGE2
M2QxLi41OWU0MDhmNDVkMzllYjZjYzBjZDE0ZGExODY4ZTVlZGFjNTRlMDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcApAQCAtNTE1LDcgKzUxNSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVjdCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKKyAgICAgICAgY2FzZSBDcmVhdGVDYXB0
dXJlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjQXJndW1lbnRzKTsKICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCBlMGY3MjBjMDk4ODIzZjNlYWVmNTVmNzk0MDNmNDAxZDFjYWJmMmE0Li45MTY5NWRhZjhh
NGY1ODg5ZjBlNzFlYmM5MTQwMzFlZTM3N2U1ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjE4LDYgKzIxOCw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIEluOgogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIENy
ZWF0ZUFyZ3VtZW50czoKKyAgICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOgogICAgIGNh
c2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICBjYXNlIFRlYXJPZmZBcmd1bWVudHM6CiAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGYwOWY2YTM5NTMwOWI5YzNhZGUzY2M4NDUz
OGE5MThiODYzMjVhNmMuLjkyOTgxZTcxNjNmNGY2ZjBiMDNiMThlZDE1NDJlOTQ2MTY4NWQyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcApAQCAtNDI1MCw3ICs0MjUwLDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICAgICAgCisKKyAgICBjYXNlIENyZWF0ZUNhcHR1cmVkQXJndW1lbnRzOiB7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMsIHJlc3VsdEdQ
Uiwgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGpzQ2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihtX2ppdC5ncmFwaCgpLmV4ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSk7CisgICAgICAgIGlmIChtX2ppdC5jb2RlQmxvY2soKS0+aGFzU2xvd0FyZ3Vt
ZW50cygpCisgICAgICAgICAgICB8fCBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKQorICAgICAg
ICAgICAgfHwgIWV4ZWN1dGFibGUtPnBhcmFtZXRlckNvdW50KCkpIHsKKyAgICAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0
ZUFyZ3VtZW50cywgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSMSA9IHNjcmF0Y2gxLmdwcigpOworICAgICAg
ICBHUFJSZWcgc2NyYXRjaEdQUjIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGhzOworICAgICAgICBlbWl0QWxsb2NhdGVBcmd1bWVu
dHMocmVzdWx0R1BSLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRocyk7CisgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aHMsIHRoaXMsIG9w
ZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0R1BSKSk7CisgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBDcmVh
dGVBcmd1bWVudHM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAppbmRleCA4
YzgwZjI4Y2JjZDgwMjZjMTgxMGRhYTZiMjUwYmZmZTA0MTIyMWQ0Li5mZGI4ZjczMmY5YzQwMGMx
YjZjZWE3MTRhYmUwOWMzM2YzZGZjYTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5jcHAKQEAgLTk0LDExICs5NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gRW5zdXJlIHRoYXQgY2FwdHVyZWQgdmFyaWFibGVzIGFuZCBjYXB0dXJlZCBp
bmxpbmUgYXJndW1lbnRzIGFyZSBwaW5uZWQgZG93bi4KICAgICAgICAgLy8gVGhleSBzaG91bGQg
aGF2ZSBiZWVuIGJlY2F1c2Ugb2YgZmx1c2hlcywgZXhjZXB0IHRoYXQgdGhlIGZsdXNoZXMgY2Fu
IGJlIG9wdGltaXplZAogICAgICAgICAvLyBhd2F5LgotICAgICAgICBpZiAoc3ltYm9sVGFibGUp
IHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSBzeW1ib2xUYWJsZS0+Y2FwdHVyZVN0YXJ0KCk7
IGkgPiBzeW1ib2xUYWJsZS0+Y2FwdHVyZUVuZCgpOyBpLS0pCi0gICAgICAgICAgICAgICAgdXNl
ZExvY2Fscy5zZXQoVmlydHVhbFJlZ2lzdGVyKGkpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jaygpLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSkgewogICAgICAgICAgICAgdXNlZExv
Y2Fscy5zZXQoY29kZUJsb2NrKCktPmFyZ3VtZW50c1JlZ2lzdGVyKCkudG9Mb2NhbCgpKTsKICAg
ICAgICAgICAgIHVzZWRMb2NhbHMuc2V0KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihjb2Rl
QmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSkudG9Mb2NhbCgpKTsKICAgICAgICAgfQpAQCAt
MTUyLDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uW3Zhcmlh
YmxlLT5sb2NhbCgpLnRvTG9jYWwoKV0pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBp
ZiAoY29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSkgeworICAgICAgICBpZiAoY29kZUJsb2Nr
KCktPnVzZXNBcmd1bWVudHNSZWdpc3RlcigpKSB7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgYXJndW1lbnRzUmVnaXN0ZXIgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbCgKICAgICAgICAg
ICAgICAgICBhbGxvY2F0aW9uW2NvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpLnRvTG9j
YWwoKV0pOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoCkBAIC0yMDgsMTMgKzIwNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHN5bWJvbFRhYmxlKSB7
Ci0gICAgICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmNhcHR1cmVDb3VudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2FwdHVyZVN0YXJ0TG9jYWwgPSBhbGxvY2F0aW9uWwotICAgICAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIoY29kZUJsb2NrKCktPnN5bWJvbFRhYmxlKCkt
PmNhcHR1cmVTdGFydCgpKS50b0xvY2FsKCldOwotICAgICAgICAgICAgICAgIEFTU0VSVChjYXB0
dXJlU3RhcnRMb2NhbCAhPSBVSU5UX01BWCk7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
Y2hpbmVDYXB0dXJlU3RhcnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChjYXB0dXJlU3RhcnRM
b2NhbCkub2Zmc2V0KCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fbWFjaGluZUNhcHR1cmVTdGFydCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKDApLm9m
ZnNldCgpOworICAgICAgICAgICAgbV9ncmFwaC5tX21hY2hpbmVDYXB0dXJlU3RhcnQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbCgwKS5vZmZzZXQoKTsKICAgICAgICAgCiAgICAgICAgICAgICAv
LyBUaGlzIGlzIGFuIGFib21pbmF0aW9uLiBJZiB3ZSBoYWQgY2FwdHVyZWQgYW4gYXJndW1lbnQg
dGhlbiB0aGUgYXJndW1lbnQgZW5kcwogICAgICAgICAgICAgLy8gdXAgYmVpbmcgInNsb3ciLCBt
ZWFuaW5nIHRoYXQgbG9hZHMgb2YgdGhlIGFyZ3VtZW50IGdvIHRocm91Z2ggYW4gZXh0cmEgbG9v
a3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAppbmRleCAyNmE3YmM1
ZWQ3NjdlZGY1NjczNjcxZDAyMzUzNTYyMjNiZDYzZWNhLi5hYTgyMThiZjJhOTJiODk2ZDZkY2Nj
NDdlYTcwODI0M2Y3OWVjYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENvbXBpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGls
ZS5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25T
dGFja01hcHMoCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKGNvZGVCbG9jay0+dXNl
c0FyZ3VtZW50cygpKSB7CisgICAgaWYgKGNvZGVCbG9jay0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVy
KCkpIHsKICAgICAgICAgY29kZUJsb2NrLT5zZXRBcmd1bWVudHNSZWdpc3RlcigKICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3Rlcihjb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0
KCkgKyBsb2NhbHNPZmZzZXQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBlYmYzOWY5YTk3ZTI3NWY3OThkZjIz
MTlmMWJmZWNkMDE5MzRlN2UyLi42N2M5ZjFiYzE5MTk2MmE1ZmRkNWIzYzlmY2JjOWNlMzEzYjZl
MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgYm9vbCB1bndpbmRDYWxsRnJhbWUo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUgJiYgY29kZUJsb2NrLT51c2VzQXJndW1lbnRz
KCkpIHsKKyAgICBpZiAoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiAo
Y29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKSB8fCBjb2RlQmxvY2stPmhhc0NhcHR1
cmVkQXJndW1lbnRzKCkpKSB7CiAgICAgICAgIGlmIChBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHZp
c2l0b3ItPmV4aXN0aW5nQXJndW1lbnRzKCkpIHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgICAgIGlmICh2aXNpdG9yLT5pc0lubGluZWRGcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCBlYjgyMTQ5YzYz
YjU3MWIzMzcxMzAwZWE0OWZiZjc2NGQ3NjhlMTk0Li4zYmUzMWFjOTMxZTRjZDg4Y2YxYjFlOGIz
NDgxNDNkZjA1OWQxNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjg1LDkgKzI4NSwxNiBAQCBBcmd1bWVudHMqIFN0
YWNrVmlzaXRvcjo6RnJhbWU6OmV4aXN0aW5nQXJndW1lbnRzKCkKIHsKICAgICBpZiAoY29kZUJs
b2NrKCktPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAoIWNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpCisKKyAgICBpZiAoY29kZUJsb2Nr
KCktPmhhc0NhcHR1cmVkQXJndW1lbnRzKCkpIHsKKyAgICAgICAgaW50IGFyZ3VtZW50c0luZGV4
ID0gY29kZUJsb2NrKCktPmNhcHR1cmVkQXJndW1lbnRzSW5kZXgoKTsKKyAgICAgICAgSlNMZXhp
Y2FsRW52aXJvbm1lbnQqIGVudmlyb25tZW50ID0gY2FsbEZyYW1lKCktPmxleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICByZXR1cm4ganNDYXN0PEFyZ3VtZW50cyo+KGVudmlyb25tZW50LT5y
ZWdpc3RlckF0KGFyZ3VtZW50c0luZGV4KS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKCFjb2Rl
QmxvY2soKS0+dXNlc0FyZ3VtZW50c1JlZ2lzdGVyKCkpCiAgICAgICAgIHJldHVybiAwOwotICAg
IAorCiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlZzsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19K
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTg2OTcwNjI2MmJlYTQxNTJlYmUz
ZjgxM2Q4Yzk3Y2UzOTQ1MGZlMy4uYzM2N2VkNmMzZjUxMzIzNzRkMGQ5ZmQ3MDNjNDdjY2I0ZjQy
ZTcxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjA0LDYgKzIwNCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Rv
X3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9pbml0X2xhenlfcmVnKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY3JlYXRlX2FyZ3VtZW50cykKKyAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9j
YXB0dXJlZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAg
REVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGRjMTY5NDQ2M2Y2MDJkN2VhZmE3MzkzM2QwNjdjZDVmN2Uz
ZTk4ZjYuLmVmNGViNjNkZjliYTUwMmU4ZjE4YmFhYTdjZDIwYjU2NWI0ZjRhOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtNDY5LDYgKzQ2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Ny
ZWF0ZV9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0
ZV9jYXB0dXJlZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggNDk0MWM2MzViMDM4NGFiNzlhY2Nm
NmE3YTE3NTA0ZTQzNjY2N2EzMC4uMTMwMmVjNjkyM2JiN2IzN2FhNjQ4YzJiYjhkYTgzMzliZmNk
NjVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgSklUOjpjb21waWxlTG9hZFZhcmFyZ3MoSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
KQogCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2U7CiAgICAgSnVtcExpc3QgZW5kOwotICAgIGJvb2wg
Y2FuT3B0aW1pemUgPSBtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpCisgICAgYm9vbCBjYW5P
cHRpbWl6ZSA9IG1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzUmVnaXN0ZXIoKQogICAgICAgICAm
JiBhcmd1bWVudHMgPT0gbV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkub2Zmc2V0KCkK
ICAgICAgICAgJiYgIW1fY29kZUJsb2NrLT5zeW1ib2xUYWJsZSgpLT5zbG93QXJndW1lbnRzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGEwMDE4Mjgx
YjdlOTdhMDgxYWEwMjZlYjViMjc4M2I1NjY3YTdiYjMuLmRjOWMyOTEyM2YwMjkwY2ViMDJjOGY2
ZWRmZmM5MjM4OTNkZTU1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtNjgzLDYgKzY4MywxNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfYXJndW1l
bnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXJnc0NyZWF0ZWQubGlu
ayh0aGlzKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25DcmVhdGVBcmd1bWVudHMpOworICAgIGVtaXRTdG9yZUNlbGwoZHN0LCByZXR1cm5WYWx1ZUdQ
Uik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2luaXRfbGF6eV9yZWcoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IDA4ZTlkNGE3OGE3MThmN2VhMDlkYjdjNWE5NzVmZTZiNjJlZTdiYmIuLjdhMGZhMWNm
YzZmYjE2MWE4NGUxZGVlMjgyYzVmM2VhZTkwNzliOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTU5Miw3ICsxNTkyLDYgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1YKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZBcmd1
bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFyZ3VtZW50c0NlbGwsIEpTQ2VsbCopCiB7
Ci0gICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkpOwogICAgIGpz
Q2FzdDxBcmd1bWVudHMqPihhcmd1bWVudHNDZWxsKS0+dGVhck9mZihleGVjKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMDgz
MjUzM2UxNDI1MTIyNGZjNTI1ZTU5MTk0N2ExYWFlYjAzODg2Mi4uMDkxNWFhNzg5YWY3Zjk1ODli
ODg1YmNhZTQwMjhmMWE4ZjVjODRmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMjQ4LDcgKzEyNDgsNiBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY2FsbF9ldmFsKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3RlYXJfb2ZmX2FyZ3VtZW50cykKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIEFTU0VS
VChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpKTsKICAgICBBcmd1bWVudHMqIGFy
Z3VtZW50cyA9IGpzQ2FzdDxBcmd1bWVudHMqPihleGVjLT51bmNoZWNrZWRSKFZpcnR1YWxSZWdp
c3RlcihwY1sxXS51Lm9wZXJhbmQpLm9mZnNldCgpKS5qc1ZhbHVlKCkpOwogICAgIGFyZ3VtZW50
cy0+dGVhck9mZihleGVjKTsKICAgICBMTElOVF9FTkQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
YzY2ZjAzNzA0YjU1NWFjYjM4NDY5NGM1NjlkZjE1MDRlNGY1NjY1Zi4uZjQxMjY1OTk5OTVmZmQy
OTk3ZmU1ZjZmYzI3NWViNmQ4MjE3ZTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTc0Miw2ICs3
NDIsMTEgQEAgX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CiAub3BDcmVhdGVBcmd1bWVudHNE
b25lOgogICAgIGRpc3BhdGNoKDIpCiAKK19sbGludF9vcF9jcmVhdGVfY2FwdHVyZWRfYXJndW1l
bnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBjYWxs
U2xvd1BhdGgoX3Nsb3dfcGF0aF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzKQorICAgIGRpc3Bh
dGNoKDIpCiAKIF9sbGludF9vcF9jcmVhdGVfdGhpczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCmluZGV4IGJhYzlmM2I3OTljZjMzZjk5NzIwNGY0ZjY4NWUwYTcyZTk1YWYxNWMuLjk2
YzZmOGU4NjNkNDMxNWRlMmUwMmM2YTk5ZmZlMjFmZmNmYzQzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC02
MjAsNyArNjIwLDYgQEAgX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CiAgICAgc3RvcmVxIFZhbHVl
RW1wdHksIFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKDIpCiAKLQogX2xsaW50X29wX2NyZWF0
ZV9hcmd1bWVudHM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MCkKQEAgLTYyOSw2ICs2MjgsMTEgQEAgX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVu
dHM6CiAub3BDcmVhdGVBcmd1bWVudHNEb25lOgogICAgIGRpc3BhdGNoKDIpCiAKK19sbGludF9v
cF9jcmVhdGVfY2FwdHVyZWRfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
Y3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cykKKyAgICBkaXNwYXRjaCgyKQogCiBfbGxpbnRfb3Bf
Y3JlYXRlX3RoaXM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMTg2N2Q4NGY5OGFlYjRi
MGQ0MzZhYjhmYzQwZGI2OGNhMDY2MjZhNy4uNjAzMTlmOTNhOGU0NTVmMWYzNDIwN2Y2OWYyMDQw
ZTFlZDdhMGEyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0yMjgsNiArMjI4LDE1IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfYXJndW1lbnRzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2NhcHR1cmVkX2FyZ3VtZW50cykKK3sKKyAgICBCRUdJTigpOworICAg
IEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZSh2bSwgZXhlYykp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5v
cGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBFTkQoKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGQ4YTNlMmIzZDFhYTBjYTYx
ZDVjMTMwMGRiMTlkM2NiNTdmNjJmODEuLmU1MmNmZDFkMjkxMjViODQ5ZDVmYjU3NGE1ZmVlYTU5
ODIwNTk0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0xODYsNiArMTg2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jYWxsX2FyaXR5Q2hlY2spOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
b25zdHJ1Y3RfYXJpdHlDaGVjayk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rv
dWNoX2VudHJ5KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3Vt
ZW50cyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9jYXB0dXJlZF9h
cmd1bWVudHMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2VudGVyKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X2NhbGxlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYTY4Yzc4ZTBkMWM4MGU0NWM4MzQw
MDU0Njk4OGUwOGU0NTAxZDE4Zi4uMGNiNmYyMGZiNDI4N2JkNzM3YmQ5ZjM5ZGVkODMxYzUwZTIw
NjBiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtNDU3LDcgKzQ1Nyw3IEBAIEpTR2xvYmFsT2JqZWN0OjpOZXdHbG9iYWxWYXIg
SlNHbG9iYWxPYmplY3Q6OmFkZEdsb2JhbFZhcihjb25zdCBJZGVudGlmaWVyJiBpZGVuCiB7CiAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUoKS0+bV9sb2NrKTsKICAg
ICBpbnQgaW5kZXggPSBzeW1ib2xUYWJsZSgpLT5zaXplKGxvY2tlcik7Ci0gICAgU3ltYm9sVGFi
bGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNvbnN0YW50TW9kZSA9PSBJc0NvbnN0YW50KSA/IFJl
YWRPbmx5IDogMCk7CisgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeShpbmRleCwgKGNvbnN0
YW50TW9kZSA9PSBJc0NvbnN0YW50KSA/IFJlYWRPbmx5IDogMCwgU3ltYm9sVGFibGVFbnRyeTo6
Q2FwdHVyZWQpOwogICAgIGlmIChjb25zdGFudE1vZGUgPT0gSXNWYXJpYWJsZSkKICAgICAgICAg
bmV3RW50cnkucHJlcGFyZVRvV2F0Y2goc3ltYm9sVGFibGUoKSk7CiAgICAgU3ltYm9sVGFibGU6
Ok1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHN5bWJvbFRhYmxlKCktPmFkZChsb2NrZXIsIGlkZW50
LmltcGwoKSwgbmV3RW50cnkpOwpAQCAtNzMzLDcgKzczMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiBnbG9iYWxzLCBpbnQgY291
bnQpCiAgICAgICAgIEFTU0VSVChnbG9iYWwuYXR0cmlidXRlcyAmIERvbnREZWxldGUpOwogICAg
ICAgICAKICAgICAgICAgaW50IGluZGV4ID0gc3ltYm9sVGFibGUoKS0+c2l6ZSgpOwotICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KGluZGV4LCBnbG9iYWwuYXR0cmlidXRlcyk7Cisg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkoaW5kZXgsIGdsb2JhbC5hdHRyaWJ1dGVz
LCBTeW1ib2xUYWJsZUVudHJ5OjpDYXB0dXJlZCk7CiAgICAgICAgIHN5bWJvbFRhYmxlKCktPmFk
ZChnbG9iYWwuaWRlbnRpZmllci5pbXBsKCksIG5ld0VudHJ5KTsKICAgICAgICAgcmVnaXN0ZXJB
dChpbmRleCkuc2V0KHZtKCksIHRoaXMsIGdsb2JhbC52YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2FsRW52aXJvbm1lbnQuY3Bw
CmluZGV4IGQ1Y2QxODk1NzVjYTU2YzNkYzUxYzQyYjQ0YjA4ZmJiMjBjNjVkYTQuLjI0MzkzNmU1
ZWRkY2FmMTkzOGY5MGEyNGI1NDVmZWFjODhhOTQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBpbmxpbmUgYm9vbCBKU0xleGljYWxFbnZpcm9ubWVudDo6c3ltYm9sVGFibGVQ
dXRXaXRoQXR0cmlidXRlcyhWTSYgdm0sIFByb3BlcnR5TgogICAgICAgICBpZiAoIWlzVmFsaWQo
ZW50cnkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZW50
cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKKyAgICAgICAgZW50cnkuc2V0QXR0cmlidXRl
cyhhdHRyaWJ1dGVzLCBlbnRyeS5jYXB0dXJlTW9kZSgpKTsKICAgICAgICAgcmVnID0gJnJlZ2lz
dGVyQXQoZW50cnkuZ2V0SW5kZXgoKSk7CiAgICAgfQogICAgIHJlZy0+c2V0KHZtLCB0aGlzLCB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGlj
YWxFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMZXhpY2Fs
RW52aXJvbm1lbnQuaAppbmRleCBjYmUwMDc2ZWRkYzg5YWY3N2ZmODQ3NDA5NDUyNWZjYTYyMGZj
YjYyLi5lMDU5ZjM2N2UyZGVjNDIwNWYyMjg0ODllMGZmMDFhMWIyN2ZkMGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xleGljYWxFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTGV4aWNhbEVudmlyb25tZW50LmgK
QEAgLTEzOCw5ICsxMzgsOSBAQCBBTFdBWVNfSU5MSU5FIEpTTGV4aWNhbEVudmlyb25tZW50KiBS
ZWdpc3Rlcjo6bGV4aWNhbEVudmlyb25tZW50KCkgY29uc3QKICAgICByZXR1cm4gYXNBY3RpdmF0
aW9uKGpzVmFsdWUoKSk7CiB9CiAKLWlubGluZSBpbnQgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OnJl
Z2lzdGVyc09mZnNldChTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCitpbmxpbmUgaW50IEpTTGV4
aWNhbEVudmlyb25tZW50OjpyZWdpc3RlcnNPZmZzZXQoU3ltYm9sVGFibGUqKQogewotICAgIHJl
dHVybiBzdG9yYWdlT2Zmc2V0KCkgKyAoKHN5bWJvbFRhYmxlLT5jYXB0dXJlQ291bnQoKSAtIHN5
bWJvbFRhYmxlLT5jYXB0dXJlU3RhcnQoKSAgLSAxKSAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pKTsKKyAgICByZXR1cm4gc3RvcmFnZU9mZnNldCgpOwogfQogCiBpbmxpbmUgc2l6ZV90
IEpTTGV4aWNhbEVudmlyb25tZW50OjpzdG9yYWdlT2Zmc2V0KCkKQEAgLTE2Myw5ICsxNjMsOSBA
QCBpbmxpbmUgc2l6ZV90IEpTTGV4aWNhbEVudmlyb25tZW50OjphbGxvY2F0aW9uU2l6ZShTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUpCiAKIGlubGluZSBib29sIEpTTGV4aWNhbEVudmlyb25tZW50
Ojppc1ZhbGlkSW5kZXgoaW50IGluZGV4KSBjb25zdAogewotICAgIGlmIChpbmRleCA+IHN5bWJv
bFRhYmxlKCktPmNhcHR1cmVTdGFydCgpKQorICAgIGlmIChpbmRleCA8IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoaW5kZXggPD0gc3ltYm9sVGFibGUoKS0+Y2FwdHVyZUVuZCgp
KQorICAgIGlmIChpbmRleCA+PSBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291bnQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTmFtZVNjb3BlLmgKaW5kZXggMjc3NTM0NjAxZTUzYzRjYmVjNDIxNGE3
MzA4Mjk2ZDFiZTZmNjEyYi4uYzcxYmY2MTdjNTRiZTU0NzFiYmQyYjg2OTE4NGUyYWVkZGQ0MWQ1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYW1lU2NvcGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hbWVTY29wZS5oCkBAIC03
Myw3ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICAgICAgbV9yZWdpc3RlclN0b3JlLnNldCh2bSwgdGhpcywgdmFsdWUpOwot
ICAgICAgICBzeW1ib2xUYWJsZSgpLT5hZGQoaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxl
RW50cnkoLTEsIGF0dHJpYnV0ZXMpKTsKKyAgICAgICAgc3ltYm9sVGFibGUoKS0+YWRkKGlkZW50
aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KC0xLCBhdHRyaWJ1dGVzLCBTeW1ib2xUYWJs
ZUVudHJ5OjpDYXB0dXJlZCkpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1i
b2xUYWJsZU9iamVjdC5oCmluZGV4IDJjZDlkMWJhMmIxMjcwYjdhMTgyYWZiOGM4YTQwMjA4MTc0
OGZiNGIuLjFjZDdlZjQwZTZiNTFiYzNmODRjYTY4YzYyYzU5NDUyNDg1NWM1ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgK
QEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1
dGVzKAogICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgaWYgKFZhcmlh
YmxlV2F0Y2hwb2ludFNldCogc2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpKQogICAgICAgICAg
ICAgc2V0LT5ub3RpZnlXcml0ZSh2bSwgdmFsdWUsIG9iamVjdCwgcHJvcGVydHlOYW1lKTsKLSAg
ICAgICAgZW50cnkuc2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKKyAgICAgICAgZW50cnkuc2V0
QXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBlbnRyeS5jYXB0dXJlTW9kZSgpKTsKICAgICAgICAgcmVn
ID0gJm9iamVjdC0+cmVnaXN0ZXJBdChlbnRyeS5nZXRJbmRleCgpKTsKICAgICB9CiAgICAgcmVn
LT5zZXQodm0sIG9iamVjdCwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDRkMWY0ODlkZjQyNWZiOWJkYjdhZDljNmY4NDJlOGUz
ZmZhNDRiYjMuLmJiOGUzN2I4MmEyOGUzYTM5ZWM2YjhlYjU2MmM4NjU5MTU5MTUzZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTEwMCw4
ICsxMDAsNyBAQCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGUoVk0mIHZtKQogICAgIDogSlNDZWxs
KHZtLCB2bS5zeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKICAgICAsIG1fcGFyYW1ldGVyQ291
bnRJbmNsdWRpbmdUaGlzKDApCiAgICAgLCBtX3VzZXNOb25TdHJpY3RFdmFsKGZhbHNlKQotICAg
ICwgbV9jYXB0dXJlU3RhcnQoMCkKLSAgICAsIG1fY2FwdHVyZUVuZCgwKQorICAgICwgbV9jYXB0
dXJlZFZhcmlhYmxlQ291bnQoMCkKICAgICAsIG1fZnVuY3Rpb25FbnRlcmVkT25jZShDbGVhcldh
dGNocG9pbnQpCiB7CiB9CkBAIC0xNDMsMTUgKzE0MiwxNCBAQCBTeW1ib2xUYWJsZSogU3ltYm9s
VGFibGU6OmNsb25lQ2FwdHVyZWROYW1lcyhWTSYgdm0pCiAgICAgCiAgICAgcmVzdWx0LT5tX3Bh
cmFtZXRlckNvdW50SW5jbHVkaW5nVGhpcyA9IG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlz
OwogICAgIHJlc3VsdC0+bV91c2VzTm9uU3RyaWN0RXZhbCA9IG1fdXNlc05vblN0cmljdEV2YWw7
Ci0gICAgcmVzdWx0LT5tX2NhcHR1cmVTdGFydCA9IG1fY2FwdHVyZVN0YXJ0OwotICAgIHJlc3Vs
dC0+bV9jYXB0dXJlRW5kID0gbV9jYXB0dXJlRW5kOworICAgIHJlc3VsdC0+bV9jYXB0dXJlZFZh
cmlhYmxlQ291bnQgPSBtX2NhcHR1cmVkVmFyaWFibGVDb3VudDsKIAogICAgIGZvciAoYXV0byBp
dGVyID0gbV9tYXAuYmVnaW4oKSwgZW5kID0gbV9tYXAuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpIHsKLSAgICAgICAgaWYgKCFpc0NhcHR1cmVkKGl0ZXItPnZhbHVlLmdldEluZGV4KCkpKQor
ICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICByZXN1bHQtPm1fbWFwLmFkZCgKICAgICAgICAgICAgIGl0ZXItPmtleSwK
LSAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkoaXRlci0+dmFsdWUuZ2V0SW5kZXgoKSwgaXRl
ci0+dmFsdWUuZ2V0QXR0cmlidXRlcygpKSk7CisgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5
KGl0ZXItPnZhbHVlLmdldEluZGV4KCksIGl0ZXItPnZhbHVlLmdldEF0dHJpYnV0ZXMoKSwgU3lt
Ym9sVGFibGVFbnRyeTo6Q2FwdHVyZWQpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fc2xvd0Fy
Z3VtZW50cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
aW5kZXggZjk0N2Q1YjA2OTUyYjZhZjVmMjQ2ZjRhNzMxY2JhYmY3OTA3MWE4OC4uYjdlNGY0YzVm
MjZjODY0Y2FlZWQxMzEyYzc2YzM0ZGM0ODQ3YzU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0xMzcsMjMgKzEzNywyNiBAQCBzdHJ1Y3QgU3lt
Ym9sVGFibGVFbnRyeSB7CiAgICAgICAgIGludHB0cl90IG1fYml0czsKICAgICB9OwogCisKKyAg
ICBlbnVtIENhcHR1cmVNb2RlIHsgQ2FwdHVyZWQsIE5vdENhcHR1cmVkIH07CisKICAgICBTeW1i
b2xUYWJsZUVudHJ5KCkKICAgICAgICAgOiBtX2JpdHMoU2xpbUZsYWcpCiAgICAgewogICAgIH0K
IAotICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4KQorICAgIFN5bWJvbFRhYmxlRW50cnko
aW50IGluZGV4LCBDYXB0dXJlTW9kZSBjYXB0dXJlZCkKICAgICAgICAgOiBtX2JpdHMoU2xpbUZs
YWcpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7Ci0gICAgICAg
IHBhY2soaW5kZXgsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIHBhY2soaW5kZXgsIGZhbHNlLCBm
YWxzZSwgY2FwdHVyZWQpOwogICAgIH0KIAotICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQorICAgIFN5bWJvbFRhYmxlRW50cnkoaW50IGluZGV4LCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBDYXB0dXJlTW9kZSBjYXB0dXJlZCkKICAgICAgICAgOiBtX2Jp
dHMoU2xpbUZsYWcpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNWYWxpZEluZGV4KGluZGV4KSk7
Ci0gICAgICAgIHBhY2soaW5kZXgsIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAm
IERvbnRFbnVtKTsKKyAgICAgICAgcGFjayhpbmRleCwgYXR0cmlidXRlcyAmIFJlYWRPbmx5LCBh
dHRyaWJ1dGVzICYgRG9udEVudW0sIGNhcHR1cmVkKTsKICAgICB9CiAgICAgCiAgICAgflN5bWJv
bFRhYmxlRW50cnkoKQpAQCAtMjAxLDE1ICsyMDQsMTkgQEAgc3RydWN0IFN5bWJvbFRhYmxlRW50
cnkgewogICAgICAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0czsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGlzQ2FwdHVyZWQoKSBjb25zdCB7IHJl
dHVybiBiaXRzKCkgJiBDYXB0dXJlZEZsYWc7IH0KKyAgICBDYXB0dXJlTW9kZSBjYXB0dXJlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FwdHVyZWQoKSA/IENhcHR1cmVkIDogTm90Q2FwdHVyZWQ7
IH0KKworCiAgICAgdW5zaWduZWQgZ2V0QXR0cmlidXRlcygpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gZ2V0RmFzdCgpLmdldEF0dHJpYnV0ZXMoKTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dEF0dHJpYnV0ZXModW5zaWduZWQgYXR0cmlidXRlcykKKyAgICB2b2lkIHNldEF0dHJpYnV0ZXMo
dW5zaWduZWQgYXR0cmlidXRlcywgQ2FwdHVyZU1vZGUgY2FwdHVyZWQpCiAgICAgewotICAgICAg
ICBwYWNrKGdldEluZGV4KCksIGF0dHJpYnV0ZXMgJiBSZWFkT25seSwgYXR0cmlidXRlcyAmIERv
bnRFbnVtKTsKKyAgICAgICAgcGFjayhnZXRJbmRleCgpLCBhdHRyaWJ1dGVzICYgUmVhZE9ubHks
IGF0dHJpYnV0ZXMgJiBEb250RW51bSwgY2FwdHVyZWQpOwogICAgIH0KIAogICAgIGJvb2wgaXNS
ZWFkT25seSgpIGNvbnN0CkBAIC0yNDIsNyArMjQ5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgaW50cHRyX3QgUmVhZE9ubHlGbGFnID0gMHgyOwogICAgIHN0YXRpYyBjb25zdCBpbnRw
dHJfdCBEb250RW51bUZsYWcgPSAweDQ7CiAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IE5vdE51
bGxGbGFnID0gMHg4OwotICAgIHN0YXRpYyBjb25zdCBpbnRwdHJfdCBGbGFnQml0cyA9IDQ7Cisg
ICAgc3RhdGljIGNvbnN0IGludHB0cl90IENhcHR1cmVkRmxhZyA9IDB4MTA7CisgICAgc3RhdGlj
IGNvbnN0IGludHB0cl90IEZsYWdCaXRzID0gNTsKICAgICAKICAgICBjbGFzcyBGYXRFbnRyeSB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMzA5LDcgKzMxNyw3IEBAIHBy
aXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZyZWVGYXRFbnRyeVNsb3coKTsK
IAotICAgIHZvaWQgcGFjayhpbnQgaW5kZXgsIGJvb2wgcmVhZE9ubHksIGJvb2wgZG9udEVudW0p
CisgICAgdm9pZCBwYWNrKGludCBpbmRleCwgYm9vbCByZWFkT25seSwgYm9vbCBkb250RW51bSwg
Q2FwdHVyZU1vZGUgY2FwdHVyZWQpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRmF0KCkpOwog
ICAgICAgICBpbnRwdHJfdCYgYml0c1JlZiA9IGJpdHMoKTsKQEAgLTMxOCw2ICszMjYsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYml0c1JlZiB8PSBSZWFkT25seUZsYWc7CiAgICAgICAgIGlm
IChkb250RW51bSkKICAgICAgICAgICAgIGJpdHNSZWYgfD0gRG9udEVudW1GbGFnOworICAgICAg
ICBpZiAoY2FwdHVyZWQgPT0gQ2FwdHVyZWQpCisgICAgICAgICAgICBiaXRzUmVmIHw9IENhcHR1
cmVkRmxhZzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1ZhbGlkSW5kZXgoaW50IGluZGV4KQpA
QCAtNDU2LDE5ICs0NjYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCgp
IHsgcmV0dXJuIG1fdXNlc05vblN0cmljdEV2YWw7IH0KICAgICB2b2lkIHNldFVzZXNOb25TdHJp
Y3RFdmFsKGJvb2wgdXNlc05vblN0cmljdEV2YWwpIHsgbV91c2VzTm9uU3RyaWN0RXZhbCA9IHVz
ZXNOb25TdHJpY3RFdmFsOyB9CiAKLSAgICBpbnQgY2FwdHVyZVN0YXJ0KCkgY29uc3QgeyByZXR1
cm4gbV9jYXB0dXJlU3RhcnQ7IH0KLSAgICB2b2lkIHNldENhcHR1cmVTdGFydChpbnQgY2FwdHVy
ZVN0YXJ0KSB7IG1fY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZVN0YXJ0OyB9Ci0KLSAgICBpbnQgY2Fw
dHVyZUVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVyZUVuZDsgfQotICAgIHZvaWQgc2V0Q2Fw
dHVyZUVuZChpbnQgY2FwdHVyZUVuZCkgeyBtX2NhcHR1cmVFbmQgPSBjYXB0dXJlRW5kOyB9Ci0K
LSAgICBpbnQgY2FwdHVyZUNvdW50KCkgY29uc3QgeyByZXR1cm4gLShtX2NhcHR1cmVFbmQgLSBt
X2NhcHR1cmVTdGFydCk7IH0KLSAgICAKLSAgICBib29sIGlzQ2FwdHVyZWQoaW50IG9wZXJhbmQp
Ci0gICAgewotICAgICAgICByZXR1cm4gb3BlcmFuZCA8PSBjYXB0dXJlU3RhcnQoKSAmJiBvcGVy
YW5kID4gY2FwdHVyZUVuZCgpOwotICAgIH0KLQogICAgIGludCBwYXJhbWV0ZXJDb3VudCgpIHsg
cmV0dXJuIG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzIC0gMTsgfQogICAgIGludCBwYXJh
bWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMoKSB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50SW5jbHVk
aW5nVGhpczsgfQogICAgIHZvaWQgc2V0UGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzKGludCBw
YXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMpIHsgbV9wYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1Ro
aXMgPSBwYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7IH0KQEAgLTQ4Myw2ICs0ODAsMjAgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCisgICAgaW50IGNhcHR1cmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdHVy
ZWRWYXJpYWJsZUNvdW50OyB9CisgICAgdm9pZCBzZXRDYXB0dXJlZENvdW50KGludCBjb3VudCkK
KyAgICB7CisKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICAgICAgaW50IGFjdHVhbENvdW50ID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiB2IDogbV9tYXAp
IHsKKyAgICAgICAgICAgIGlmICh2LnZhbHVlLmlzQ2FwdHVyZWQoKSkKKyAgICAgICAgICAgICAg
ICBhY3R1YWxDb3VudCsrOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChhY3R1YWxDb3VudCA8
PSBjb3VudCk7CisgICAgICAgIG1fY2FwdHVyZWRWYXJpYWJsZUNvdW50ID0gY291bnQ7CisgICAg
fQorCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgpAQCAtNTE0LDkgKzUy
NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9wYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7
CiAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsOwotCi0gICAgaW50IG1fY2FwdHVyZVN0YXJ0
OwotICAgIGludCBtX2NhcHR1cmVFbmQ7CisgICAgaW50IG1fY2FwdHVyZWRWYXJpYWJsZUNvdW50
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dBcmd1bWVudFtdPiBtX3Nsb3dBcmd1bWVudHM7
CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>