<?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>42322</bug_id>
          
          <creation_ts>2010-07-14 20:49:24 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs to support layoutTestController.dumpBackForwardList</short_desc>
          <delta_ts>2010-10-27 18:57:25 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251624</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:49:24 -0700</bug_when>
    <thetext>WebKitTestRunner needs to support layoutTestController.dumpBackForwardList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251641</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:58:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/8193631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299828</commentid>
    <comment_count>2</comment_count>
      <attachid>71944</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-26 15:09:37 -0700</bug_when>
    <thetext>Created attachment 71944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299837</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-26 15:14:14 -0700</bug_when>
    <thetext>Attachment 71944 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBackForwardList.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/mac/History/WebBackForwardListInternal.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 6 in 67 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>299896</commentid>
    <comment_count>4</comment_count>
      <attachid>71944</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-26 16:55:49 -0700</bug_when>
    <thetext>Comment on attachment 71944
Patch

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

This is going to need project changes for Qt and Windows.

&gt; WebKit2/Shared/API/c/WKURL.cpp:44
&gt; +    return toAPI(WebString::create(toImpl(url)-&gt;string()).leakRef());

This can call toCopiedAPI(toImpl(url)-&gt;string()) I believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300680</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-27 16:18:26 -0700</bug_when>
    <thetext>Committed r70723: &lt;http://trac.webkit.org/changeset/70723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300794</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-27 18:57:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70723 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71944</attachid>
            <date>2010-10-26 15:09:37 -0700</date>
            <delta_ts>2010-10-26 16:55:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42322-20101026150936.patch</filename>
            <type>text/plain</type>
            <size>160208</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDU3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMTAtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktp
dFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFj
a0ZvcndhcmRMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MjMyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84MTkzNjMxCisKKyAgICAgICAgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFy
QmFja0ZvcndhcmRMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MjMzMworICAgICAgICByZGFyOi8vcHJvYmxlbS84MTkzNjQzCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBleHBvcnRzLgorCisgICAgICAgICogaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuaDogQWRkZWQgY29tbWVudHMgYWJvdXQgZnV0dXJlIHJlZmFjdG9yaW5n
LgorICAgICAgICBNb3ZlZCBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IGNhbGxlZCBpbnNpZGUgV2Vi
Q29yZSBpbnRvIGEgc2VwYXJhdGUKKyAgICAgICAgc2VjdGlvbiwgdG8gYmUgcmVtb3ZlZCBsYXRl
ci4gQWRkZWQgYW4gaXNBY3RpdmUgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUKKyAgICAgICAgdXNl
IG9mIGVuYWJsZWQoKSBhbmQgZW50cmllcygpLgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3RJbXBsLmg6IFJlbW92ZWQgaXNCYWNrRm9yd2FyZExpc3RJbXBsLgorICAgICAgICBN
YXJrZWQgdmlydHVhbCBmdW5jdGlvbiBvdmVycmlkZXMgdmlydHVhbCBleHBsaWNpdGx5LCBleGNl
cHQgZm9yIHRoZQorICAgICAgICBvbmVzIHRoYXQgd2lsbCBiZSBub24tdmlydHVhbCBvbmNlIHdl
IG1ha2UgdGhlIGNoYW5nZXMgYWJvdmUuCisgICAgICAgIEFkZGVkIHRoZSBpc0FjdGl2ZSBmdW5j
dGlvbi4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmxvZ0NhbkNhY2hlUGFnZURlY2lzaW9uKTogVXNlIGlzQWN0aXZlLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZSk6IERpdHRvLgorCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0RpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24pOiBDaGVjaworICAgICAgICB1c2luZyBjdXJyZW50SXRlbSwg
YmFja0l0ZW0sIGFuZCBmb3J3YXJkSXRlbSBpbnN0ZWFkIG9mCisgICAgICAgIHVzaW5nIGVudHJp
ZXMuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKTogTG9vcCB0aHJvdWdoIHRoZSBiYWNrL2ZvcndhcmQK
KyAgICAgICAgbGlzdCBlbnRyaWVzIHVzaW5nIGJhY2tMaXN0Q291bnQgYW5kIGZvcndhcmRMaXN0
Q291bnQgaW5zdGVhZCBvZgorICAgICAgICB1c2luZyBlbnRyaWVzLgorCiAyMDEwLTEwLTI2ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IDMyLWJp
dCBidWlsZC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNiArNDM1LDkgQEAgX19aTjdXZWJDb3JlMTlB
bmltYXRpb25Db250cm9sbGVyMTZyZXN1bQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9s
bGVyMTdzdXNwZW5kQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTlBbmlt
YXRpb25Db250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RF
UktOM1dURjZTdHJpbmdFZAogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjFwYXVz
ZVRyYW5zaXRpb25BdFRpbWVFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTjNXVEY2U3RyaW5nRWQKK19f
Wk43V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1wbDExY3VycmVudEl0ZW1FdgorX19aTjdXZWJD
b3JlMTlCYWNrRm9yd2FyZExpc3RJbXBsMTFmb3J3YXJkSXRlbUV2CitfX1pON1dlYkNvcmUxOUJh
Y2tGb3J3YXJkTGlzdEltcGw4YmFja0l0ZW1FdgogX19aTjdXZWJDb3JlMTlCYWNrRm9yd2FyZExp
c3RJbXBsQzFFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTlDU1NTdHlsZURlY2xhcmF0aW9uMTFz
ZXRQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0VTNF9SaQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJl
cXVlc3RCYXNlMTFzZXRIVFRQQm9keUVOM1dURjEwUGFzc1JlZlB0cklOU184Rm9ybURhdGFFRUUK
SW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
ICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC0zNiw4ICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhpc3Rv
cnlJdGVtOwogCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYW5kIHJlbHkgb24gdGhlIHR5cGVkZWYg
aW4gQmFja0ZvcndhcmRMaXN0SW1wbAorLy8gaW5zdGVhZCwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHZp
cnR1YWwgZnVuY3Rpb25zIGF0IHRoZSBib3R0b20KKy8vIG9mIHRoaXMgY2xhc3MuCiB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiAKKy8vIEZJ
WE1FOiBNb3ZlIHRoaXMgY2xhc3Mgb3V0IG9mIHRoaXMgZmlsZSBhbmQgaW50byBCYWNrRm9yd2Fy
ZExpc3RJbXBsLgorLy8gRklYTUU6IENvbnNpZGVyIHJlcGxhY2luZyB0aGlzIEJhY2tGb3J3YXJk
TGlzdENsaWVudCBjb25jZXB0IHdpdGggYQorLy8gZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGEgQmFj
a0ZvcndhcmRMaXN0IG9iamVjdC4gVGhlIGZ1bmN0aW9ucyBpbgorLy8gQmFja0ZvcndhcmRMaXN0
IGFyZSBub3cgYWxtb3N0IGlkZW50aWNhbCB0byB0aGlzLCBhbmQgdGhlcmUgaXMgbm8KKy8vIG5l
ZWQgZm9yIHRoZSBleHRyYSBsZXZlbCBvZiBpbmRpcmVjdGlvbi4KICNpZiBQTEFURk9STShDSFJP
TUlVTSkKIC8vIEluIHRoZSBDaHJvbWl1bSBwb3J0LCB0aGUgYmFjay9mb3J3YXJkIGxpc3QgaXMg
bWFuYWdlZCBleHRlcm5hbGx5LgogLy8gU2VlIEJhY2tGb3J3YXJkTGlzdENocm9taXVtLmNwcApA
QCAtNTQsNTAgKzYyLDYzIEBAIHB1YmxpYzoKIH07CiAjZW5kaWYKIAorLy8gRklYTUU6IFJlbmFt
ZSB0aGlzIGNsYXNzIHRvIEJhY2tGb3J3YXJkQ2xpZW50LCBhbmQgcmVuYW1lIHRoZQorLy8gZ2V0
dGVyIGluIFBhZ2UgYWNjb3JkaW5nbHkuCiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxCYWNrRm9yd2FyZExpc3Q+IHsKIHB1YmxpYzogCiAgICAgdmlydHVhbCB+QmFj
a0ZvcndhcmRMaXN0KCkKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzQmFja0Zv
cndhcmRMaXN0SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KKyAgICAvLyBGSVhNRTog
TW92ZSB0aGlzIGZ1bmN0aW9uIHRvIEJhY2tGb3J3YXJkTGlzdEltcGwsIG9yIGVsaW1pbmF0ZQor
ICAgIC8vIGl0IChzZWUgY29tbWVudCBhdCBkZWZpbml0aW9uIG9mIEJhY2tGb3J3YXJkTGlzdENs
aWVudCBjbGFzcykuCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgLy8gTXVzdCBiZSBjYWxs
ZWQgYmVmb3JlIGFueSBvdGhlciBtZXRob2RzLiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50
KEJhY2tGb3J3YXJkTGlzdENsaWVudCopID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lk
IGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Z29CYWNrKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnb0ZvcndhcmQoKSA9IDA7CisKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSA9IDA7CiAgICAgICAgIAotICAgIHZp
cnR1YWwgSGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCkgPSAwOwotICAgIHZpcnR1YWwgSGlzdG9yeUl0
ZW0qIGN1cnJlbnRJdGVtKCkgPSAwOwotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGZvcndhcmRJ
dGVtKCkgPSAwOwogICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0ZW1W
ZWN0b3ImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGludCwg
SGlzdG9yeUl0ZW1WZWN0b3ImKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGludCBjYXBhY2l0eSgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FwYWNpdHkoaW50KSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGVuYWJsZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgaW50IGJhY2tMaXN0Q291bnQoKSA9IDA7CiAgICAgdmlydHVhbCBpbnQg
Zm9yd2FyZExpc3RDb3VudCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNJdGVtKEhp
c3RvcnlJdGVtKikgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjbG9zZWQoKSA9
IDA7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qKSAgPSAw
OwotICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW1WZWN0b3ImIGVudHJpZXMoKSAgPSAwOwotICAgIAor
CisgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIHRvIGp1c3QgImNsZWFyIiBhbmQgY2hhbmdlIGl0
IHNvIGl0J3Mgbm90CisgICAgLy8gV01MLXNwZWNpZmljLiBUaGlzIGlzIHRoZSBzYW1lIG9wZXJh
dGlvbiBhcyBjbGVhckJhY2tGb3J3YXJkTGlzdAorICAgIC8vIGluIHRoZSBsYXlvdXQgdGVzdCBj
b250cm9sbGVyOyBpdCB3b3VsZCBiZSByZWFzb25hYmxlIHRvIGhhdmUgaXQKKyAgICAvLyBoZXJl
IGV2ZW4gdGhvdWdoIEhUTUwgRE9NIGludGVyZmFjZXMgZG9uJ3QgcmVxdWlyZSBpdC4KICNpZiBF
TkFCTEUoV01MKQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcldNTFBhZ2VIaXN0b3J5KCkgID0gMDsK
ICNlbmRpZgogCisgICAgSGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCkgeyByZXR1cm4gaXRlbUF0SW5k
ZXgoLTEpOyB9CisgICAgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCkgeyByZXR1cm4gaXRlbUF0
SW5kZXgoMCk7IH0KKyAgICBIaXN0b3J5SXRlbSogZm9yd2FyZEl0ZW0oKSB7IHJldHVybiBpdGVt
QXRJbmRleCgxKTsgfQorCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBmdW5jdGlvbnMgb25j
ZSBhbGwgY2FsbCBzaXRlcyBhcmUgY2FsbGluZyB0aGVtCisgICAgLy8gZGlyZWN0bHkgb24gQmFj
a0ZvcndhcmRMaXN0SW1wbCBpbnN0ZWFkIG9mIG9uIEJhY2tGb3J3YXJkTGlzdC4KKyAgICAvLyBU
aGVyZSBpcyBubyBuZWVkIGZvciBhbnkgb2YgdGhlc2UgdG8gYmUgdmlydHVhbCBmdW5jdGlvbnMg
YW5kIG5vCisgICAgLy8gbmVlZCB0byBpbXBsZW1lbnQgdGhlbSBpbiBjbGFzc2VzIG90aGVyIHRo
YW4gQmFja0ZvcndhcmRMaXN0SW1wbC4KKyAgICAvLyBBbHNvIHJlbW92ZSB0aGUgSGlzdG9yeUl0
ZW1WZWN0b3IgdHlwZWRlZiBpbiB0aGlzIGZpbGUgb25jZSB0aGlzIGlzIGRvbmUuCisgICAgdmly
dHVhbCB2b2lkIGdvQmFjaygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnb0ZvcndhcmQoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3Rv
ciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIEhpc3Rv
cnlJdGVtVmVjdG9yJikgeyB9CisgICAgdmlydHVhbCBpbnQgY2FwYWNpdHkoKSB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldENhcGFjaXR5KGludCkgeyB9CisgICAgdmlydHVhbCBi
b29sIGVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0q
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjbG9zZWQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJdGVtKikgeyB9Cisg
ICAgdmlydHVhbCBIaXN0b3J5SXRlbVZlY3RvciYgZW50cmllcygpIHsgSGlzdG9yeUl0ZW1WZWN0
b3IqIGJvZ3VzID0gMDsgcmV0dXJuICpib2d1czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQmFja0Zv
cndhcmRMaXN0KCkKICAgICB7CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3RJbXBs
LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdElt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzUgKzMzLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhpc3RvcnlJdGVtSGFzaFNldDsKIAorLy8gRklYTUU6
IEFmdGVyIHJlbmFtaW5nIEJhY2tGb3J3YXJkTGlzdCB0byBCYWNrRm9yd2FyZENsaWVudCwKKy8v
IHJlbmFtZSB0aGlzIHRvIEJhY2tGb3J3YXJkTGlzdC4KIGNsYXNzIEJhY2tGb3J3YXJkTGlzdElt
cGwgOiBwdWJsaWMgQmFja0ZvcndhcmRMaXN0IHsKIHB1YmxpYzogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmFja0ZvcndhcmRMaXN0SW1wbD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBCYWNrRm9yd2FyZExpc3RJbXBsKHBhZ2UpKTsgfQotICAgIH5CYWNrRm9yd2Fy
ZExpc3RJbXBsKCk7Ci0KLSAgICBib29sIGlzQmFja0ZvcndhcmRMaXN0SW1wbCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIH5CYWNrRm9yd2FyZExpc3RJbXBsKCk7CiAKICNp
ZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90
aGVyIG1ldGhvZHMuIAotICAgIHZvaWQgc2V0Q2xpZW50KEJhY2tGb3J3YXJkTGlzdENsaWVudCog
Y2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgdmlydHVhbCB2b2lkIHNldENsaWVu
dChCYWNrRm9yd2FyZExpc3RDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQog
I2VuZGlmCiAgICAgCiAgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogICAgIAot
ICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7CisgICAgdmlydHVhbCB2
b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwogICAgIHZvaWQgZ29CYWNrKCk7
CiAgICAgdm9pZCBnb0ZvcndhcmQoKTsKLSAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKik7
CisgICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAgIAogICAg
IEhpc3RvcnlJdGVtKiBiYWNrSXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgp
OwogICAgIEhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIEhpc3RvcnlJdGVtKiBpdGVt
QXRJbmRleChpbnQpOworICAgIHZpcnR1YWwgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCk7
CiAKICAgICB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsK
ICAgICB2b2lkIGZvcndhcmRMaXN0V2l0aExpbWl0KGludCwgSGlzdG9yeUl0ZW1WZWN0b3ImKTsK
QEAgLTcwLDIzICs2OSwyNSBAQCBwdWJsaWM6IAogICAgIHZvaWQgc2V0Q2FwYWNpdHkoaW50KTsK
ICAgICBib29sIGVuYWJsZWQoKTsKICAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0gICAgaW50
IGJhY2tMaXN0Q291bnQoKTsKLSAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpOworICAgIHZpcnR1
YWwgaW50IGJhY2tMaXN0Q291bnQoKTsKKyAgICB2aXJ0dWFsIGludCBmb3J3YXJkTGlzdENvdW50
KCk7CiAgICAgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKIAotICAgIHZvaWQgY2xv
c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKICAgICBib29sIGNsb3NlZCgpOwogICAg
IAogICAgIHZvaWQgcmVtb3ZlSXRlbShIaXN0b3J5SXRlbSopOwogICAgIEhpc3RvcnlJdGVtVmVj
dG9yJiBlbnRyaWVzKCk7CiAgICAgCiAjaWYgRU5BQkxFKFdNTCkKLSAgICB2b2lkIGNsZWFyV01M
UGFnZUhpc3RvcnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJXTUxQYWdlSGlzdG9yeSgpOwog
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgQmFja0ZvcndhcmRMaXN0SW1wbChQYWdlKik7Ci0gICAg
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSB7IHJldHVybiBlbmFibGVkKCkgJiYgY2Fw
YWNpdHkoKTsgfQorCiAgICAgUGFnZSogbV9wYWdlOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKSAK
ICAgICBCYWNrRm9yd2FyZExpc3RDbGllbnQqIG1fY2xpZW50OwpJbmRleDogV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNo
ZS5jcHAJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MiwxMiArMTkyLDggQEAgc3RhdGljIHZvaWQgbG9nQ2FuQ2Fj
aGVQYWdlRGVjaXNpb24oUGFnZQogICAgIGJvb2wgY2Fubm90Q2FjaGUgPSAhbG9nQ2FuQ2FjaGVG
cmFtZURlY2lzaW9uKHBhZ2UtPm1haW5GcmFtZSgpLCAxKTsKICAgICAKICAgICBGcmFtZUxvYWRU
eXBlIGxvYWRUeXBlID0gcGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkVHlwZSgpOwot
ICAgIGlmICghcGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKSkgewotICAgICAgICBQ
Q0xPRygiICAgLVRoZSBiYWNrL2ZvcndhcmQgbGlzdCBpcyBkaXNhYmxlZCIpOwotICAgICAgICBj
YW5ub3RDYWNoZSA9IHRydWU7Ci0gICAgfQotICAgIGlmICghKHBhZ2UtPmJhY2tGb3J3YXJkTGlz
dCgpLT5jYXBhY2l0eSgpID4gMCkpIHsKLSAgICAgICAgUENMT0coIiAgIC1UaGUgYmFjay9mb3J3
YXJkIGxpc3QgaGFzIGEgMCBjYXBhY2l0eSIpOworICAgIGlmICghcGFnZS0+YmFja0ZvcndhcmRM
aXN0KCktPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgUENMT0coIiAgIC1UaGUgYmFjay9mb3J3YXJk
IGxpc3QgaXMgZGlzYWJsZWQgb3IgaGFzIDAgY2FwYWNpdHkiKTsKICAgICAgICAgY2Fubm90Q2Fj
aGUgPSB0cnVlOwogICAgIH0KICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPnVzZXNQYWdlQ2Fj
aGUoKSkgewpAQCAtMzA3LDggKzMwMyw3IEBAIGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZShQYWdl
KiBwYWdlKQogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUgPSBwYWdlLT5tYWluRnJhbWUoKS0+
bG9hZGVyKCktPmxvYWRUeXBlKCk7CiAgICAgCiAgICAgcmV0dXJuIGNhbkNhY2hlUGFnZUNvbnRh
aW5pbmdUaGlzRnJhbWUocGFnZS0+bWFpbkZyYW1lKCkpCi0gICAgICAgICYmIHBhZ2UtPmJhY2tG
b3J3YXJkTGlzdCgpLT5lbmFibGVkKCkKLSAgICAgICAgJiYgcGFnZS0+YmFja0ZvcndhcmRMaXN0
KCktPmNhcGFjaXR5KCkgPiAwCisgICAgICAgICYmIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5p
c0FjdGl2ZSgpCiAgICAgICAgICYmIHBhZ2UtPnNldHRpbmdzKCktPnVzZXNQYWdlQ2FjaGUoKQog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgICAgICYmICEocGFnZS0+ZGV2aWNl
TW90aW9uQ29udHJvbGxlcigpICYmIHBhZ2UtPmRldmljZU1vdGlvbkNvbnRyb2xsZXIoKS0+aXNB
Y3RpdmUoKSkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDcwNTc0KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTE0LDcg
KzMxMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0RpZFBlcmZvcm1GaXJzdE5hCiAgICAg
aWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
TmF2aWdhdGlvbiAmJiBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW50cmllcygpLnNpemUoKSA9
PSAxKSB7CisgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24gJiYgcGFnZS0+YmFj
a0ZvcndhcmRMaXN0KCktPmN1cnJlbnRJdGVtKCkgJiYgIXBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgp
LT5iYWNrSXRlbSgpICYmICFwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+Zm9yd2FyZEl0ZW0oKSkg
ewogICAgICAgICBtX2RpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24gPSB0cnVlOwogICAgICAgICBt
X2NsaWVudC0+ZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjMsOSArNDIzLDEwIEBAIHZvaWQgU2V0dGluZ3M6OnNldFVzZXNQYWdl
Q2FjaGUoYm9vbCB1c2UKICAgICAgICAgCiAgICAgbV91c2VzUGFnZUNhY2hlID0gdXNlc1BhZ2VD
YWNoZTsKICAgICBpZiAoIW1fdXNlc1BhZ2VDYWNoZSkgewotICAgICAgICBIaXN0b3J5SXRlbVZl
Y3RvciYgaGlzdG9yeUl0ZW1zID0gbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW50cmllcygp
OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaGlzdG9yeUl0ZW1zLnNpemUoKTsg
aSsrKQotICAgICAgICAgICAgcGFnZUNhY2hlKCktPnJlbW92ZShoaXN0b3J5SXRlbXNbaV0uZ2V0
KCkpOworICAgICAgICBpbnQgZmlyc3QgPSAtbV9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+YmFj
a0xpc3RDb3VudCgpOworICAgICAgICBpbnQgbGFzdCA9IG1fcGFnZS0+YmFja0ZvcndhcmRMaXN0
KCktPmZvcndhcmRMaXN0Q291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGZpcnN0OyBpIDw9
IGxhc3Q7IGkrKykKKyAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUobV9wYWdlLT5iYWNr
Rm9yd2FyZExpc3QoKS0+aXRlbUF0SW5kZXgoaSkpOwogICAgICAgICBwYWdlQ2FjaGUoKS0+cmVs
ZWFzZUF1dG9yZWxlYXNlZFBhZ2VzTm93KCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwNTc2KQor
KysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDggQEAKKzIw
MTAtMTAtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMg
dG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMyMgorICAgICAg
ICByZGFyOi8vcHJvYmxlbS84MTkzNjMxCisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyB0byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMworICAg
ICAgICByZGFyOi8vcHJvYmxlbS84MTkzNjQzCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tC
YXNlLmg6IEFkZGVkIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmIGFuZAorICAgICAgICBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tV
UkwuY3BwOgorICAgICAgICAoV0tVUkxDb3B5U3RyaW5nKTogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL0FQSS9jL1dLVVJMLmg6IEFkZGVkIFdLVVJMQ29weVN0cmluZy4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLmg6IEZpeGVkIGluY29ycmVjdCBhcmd1bWVudCBuYW1lLgor
CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOiBBZGRlZCBUeXBlQnVuZGxlQmFja0Zvcndh
cmRMaXN0IGFuZAorICAgICAgICBUeXBlQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS4KKworICAg
ICAgICAqIFNoYXJlZC9JbW11dGFibGVBcnJheS5oOiBNYXJrZWQgZGVzdHJ1Y3RvciB2aXJ0dWFs
IGV4cGxpY2l0bHkuCisgICAgICAgICogU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaDogRGl0
dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5h
dmlnYXRpb25EYXRhLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNw
YWNlLmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oOiBEaXR0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuaDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDogRGl0dG8u
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDogUmVtb3ZlZCB1
bm5lZWRlZCBiYWNrTGlzdFdpdGhMaW1pdAorICAgICAgICBhbmQgZm9yd2FyZExpc3RXaXRoTGlt
aXQgZnVuY3Rpb25zLgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFy
KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOiBNYXJr
ZWQgZGVzdHJ1Y3RvciB2aXJ0dWFsIGV4cGxpY2l0bHkuCisgICAgICAgIEFkZGVkIGNsZWFyLCBy
ZW1vdmVkIGJhY2tMaXN0V2l0aExpbWl0IGFuZCBmb3J3YXJkTGlzdFdpdGhMaW1pdCBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDogUmVtb3ZlZCB1bm5l
ZWRlZCBiYWNrRm9yd2FyZEJhY2tJdGVtLAorICAgICAgICBiYWNrRm9yd2FyZEN1cnJlbnRJdGVt
LCBhbmQgYmFja0ZvcndhcmRGb3J3YXJkSXRlbSBmdW5jdGlvbnMuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRDbGVhcik6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZGVkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6IEFkZGVkCisgICAgICAgIFdL
QnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmIGFuZCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgU3RhcnRlZCB3aXRoIGEgY29weSBvZiBmcm9t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0
Lmg6CisgICAgICAgIFN0YXJ0ZWQgd2l0aCBhIGNvcHkgb2YgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tCYWNrRm9yd2FyZExpc3QuaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgU3Rh
cnRlZCB3aXRoIGEgY29weSBvZiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIFN0YXJ0ZWQgd2l0aCBhIGNv
cHkgb2YgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmguCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VHZXRCYWNrRm9yd2FyZExpc3QpOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOiBE
aXR0by4KKworCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIFN0YXJ0ZWQgd2l0aCBhIGNvcHkgb2Yg
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg6Cisg
ICAgICAgIFN0YXJ0ZWQgd2l0aCBhIGNvcHkgb2YgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmguCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIFN0YXJ0ZWQgd2l0aCBh
IGNvcHkgb2YgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uaDoKKyAgICAgICAgU3RhcnRlZCB3aXRoIGEgY29weSBvZiBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmguCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwOiBSZW1vdmVkCisgICAgICAgIG1h
bnkgdW5uZWVkZWQgZnVuY3Rpb25zLgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkpOgorICAgICAgICBSZW1vdmVkIHVubmVl
ZGVkIGluaXRpYWxpemF0aW9uIG9mIG1fY2xvc2VkLgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbSk6IEFkZGVkIGEgY2hlY2sgZm9yCisgICAgICAgIHRo
ZSBjYXNlIG9mIGEgY2FwYWNpdHkgb2YgMC4KKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmdvVG9JdGVtKTogQWRkZWQgYSBjaGVjayBmb3IKKyAgICAgICAgd2hlbiB0
aGUgcHJveHkgb3V0bGl2ZXMgaXRzIHBhZ2UuCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UpOiBSZW1vdmVk
IHVubmVlZGVkIGNvZGUKKyAgICAgICAgc2V0dGluZyBtX2Nsb3NlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmlzQWN0aXZlKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbGVhcik6IEFkZGVkLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmg6IEFkZGVkIGNs
ZWFyLAorICAgICAgICBpc0FjdGl2ZSwgYW5kIGRldGFjaCBmdW5jdGlvbnMuIFJlbW92ZWQgbWFu
eSBvdGhlciB1bm5lZWRlZAorICAgICAgICBmdW5jdGlvbiBhbmQgZGF0YSBtZW1iZXJzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp+V2ViUGFnZSk6IEFkZGVkIGNhbGwgdG8gZGV0YWNoIG9uIHRoZQorICAgICAg
ICBiYWNrL2ZvcndhcmQgbGlzdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YmFja0Zvcndh
cmRMaXN0KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDog
QWRkZWQgYmFja0ZvcndhcmRMaXN0IGZ1bmN0aW9uCisgICAgICAgIGFuZCBtX2JhY2tGb3J3YXJk
TGlzdCBkYXRhIG1lbWJlci4KKwogMjAxMC0xMC0yNiAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5i
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICAgICAg
Ly8gQnVuZGxlIHR5cGVzCiAgICAgICAgIFR5cGVCdW5kbGUsCisgICAgICAgIFR5cGVCdW5kbGVC
YWNrRm9yd2FyZExpc3QsCisgICAgICAgIFR5cGVCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLAog
ICAgICAgICBUeXBlQnVuZGxlRnJhbWUsCiAgICAgICAgIFR5cGVCdW5kbGVIaXRUZXN0UmVzdWx0
LAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0lt
bXV0YWJsZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJy
YXkuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzKSk7CiAgICAgfQogCi0gICAgfklt
bXV0YWJsZUFycmF5KCk7CisgICAgdmlydHVhbCB+SW1tdXRhYmxlQXJyYXkoKTsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCogYXQoc2l6ZV90IGkpIHsgaWYgKG1fZW50cmllc1tp
XS0+dHlwZSgpICE9IFQ6OkFQSVR5cGUpIHJldHVybiAwOyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+
KG1fZW50cmllc1tpXS5nZXQoKSk7IH0KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURp
Y3Rpb25hcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9u
YXJ5LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlv
bmFyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1tdXRhYmxlRGljdGlvbmFyeShtYXApKTsKICAg
ICB9Ci0gICAgfkltbXV0YWJsZURpY3Rpb25hcnkoKTsKKworICAgIHZpcnR1YWwgfkltbXV0YWJs
ZURpY3Rpb25hcnkoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc011dGFibGUoKSB7IHJldHVybiBm
YWxzZTsgfQogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzA1NzQpCisrKyBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMs
OCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzCiAvKiBXZWJLaXQy
IEJ1bmRsZSB0eXBlcyAqLwogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZSog
V0tCdW5kbGVSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUJhY2tGb3J3
YXJkTGlzdCogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdL
QnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhpdFRl
c3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVmOwpJbmRleDog
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLVVJMLmNwcAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDExIEBAIFdLVVJMUmVm
IFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnMKICAgICByZXR1cm4gdG9BUEkoV2ViVVJM
OjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOwogfQogCitXS1N0
cmluZ1JlZiBXS1VSTENvcHlTdHJpbmcoV0tVUkxSZWYgdXJsKQoreworICAgIHJldHVybiB0b0FQ
SShXZWJTdHJpbmc6OmNyZWF0ZSh0b0ltcGwodXJsKS0+c3RyaW5nKCkpLmxlYWtSZWYoKSk7Cit9
CisKIGJvb2wgV0tVUkxJc0VxdWFsKFdLVVJMUmVmIGEsIFdLVVJMUmVmIGIpCiB7CiAgICAgcmV0
dXJuIHRvSW1wbChhKS0+c3RyaW5nKCkgPT0gdG9JbXBsKGIpLT5zdHJpbmcoKTsKSW5kZXg6IFdl
YktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tVUkwuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIFdLX0VYUE9SVCBXS1R5cGVJ
RCBXS1VSTEdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRo
VVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKTsKIAorV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLVVJMQ29weVN0cmluZyhXS1VSTFJlZiBVUkwpOworCiBXS19FWFBPUlQgYm9vbCBXS1VSTElz
RXF1YWwoV0tVUkxSZWYgYSwgV0tVUkxSZWYgYik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpJbmRl
eDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcg
QEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMQ3JlYXRl
V2l0aENGVVJMKENGVVJMUmVmIFVSTCk7Ci1XS19FWFBPUlQgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZV
UkwoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVmIHN0cmluZyk7CitXS19FWFBPUlQgQ0ZV
UkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIFdLVVJMUmVmIFVSTCk7
CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywzNSArMTM3LDYgQEAg
aW50IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudAogICAgIHJldHVybiBtX2N1
cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6IHN0YXRpY19jYXN0PGludD4obV9lbnRy
aWVzLnNpemUoKSkgLSAobV9jdXJyZW50ICsgMSk7CiB9CiAKLUJhY2tGb3J3YXJkTGlzdEl0ZW1W
ZWN0b3IgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdCh1bnNpZ25lZCBsaW1p
dCkKLXsKLSAgICBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yIGxpc3Q7Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IHN0ZDo6bWluKGJhY2tMaXN0Q291bnQoKSwgc3RhdGljX2Nhc3Q8aW50PihsaW1pdCkp
OwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIGxpc3Q7Ci0KLSAgICBsaXN0LnJlc2l6
ZShzaXplKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBzdGQ6Om1heChtX2N1cnJlbnQgLSBsaW1p
dCwgMFUpLCBqID0gMDsgaSA8IG1fY3VycmVudDsgKytpLCArK2opCi0gICAgICAgIGxpc3Rbal0g
PSBtX2VudHJpZXNbaV07Ci0KLSAgICByZXR1cm4gbGlzdDsKLX0KLQotQmFja0ZvcndhcmRMaXN0
SXRlbVZlY3RvciBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0KHVuc2ln
bmVkIGxpbWl0KQotewotICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgbGlzdDsKLSAgICB1
bnNpZ25lZCBzaXplID0gc3RkOjptaW4oZm9yd2FyZExpc3RDb3VudCgpLCBzdGF0aWNfY2FzdDxp
bnQ+KGxpbWl0KSk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbGlzdDsKLQotICAg
IGxpc3QucmVzaXplKHNpemUpOwotICAgIHVuc2lnbmVkIGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJl
bnQgKyBsaW1pdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW50cmllcy5zaXplKCkgLSAxKSk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9jdXJyZW50ICsgMSwgaiA9IDA7IGkgPD0gbGFzdDsg
KytpLCArK2opCi0gICAgICAgIGxpc3Rbal0gPSBtX2VudHJpZXNbaV07Ci0KLSAgICByZXR1cm4g
bGlzdDsKLX0KLQogUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0ZvcndhcmRMaXN0
OjpiYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpCiB7CiAg
ICAgdW5zaWduZWQgYmFja0xpc3RTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJhY2tMaXN0
Q291bnQoKSk7CkBAIC0yMDAsNCArMTcxLDE5IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IFdlYkJhY2tGb3J3YXIKICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHZlY3Rvcik7
CiB9CiAKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCit7CisgICAgaWYgKG1fZW50
cmllcy5zaXplKCkgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+IGl0ZW0gPSBjdXJyZW50SXRlbSgpOworICAgIG1fZW50cmllcy5yZXNp
emUoMSk7CisgICAgbV9lbnRyaWVzWzBdID0gaXRlbS5yZWxlYXNlKCk7CisKKyAgICBtX2N1cnJl
bnQgPSAwOworCisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAg
KzU1LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
QmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsKICAgICB9Ci0gICAgfldlYkJhY2tGb3J3YXJkTGlzdCgp
OworCisgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0KCk7CiAKICAgICB2b2lkIGFkZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSopOwogICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSopOworICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGN1cnJlbnRJdGVtKCk7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFj
a0l0ZW0oKTsKQEAgLTY4LDkgKzcwLDYgQEAgcHVibGljOgogICAgIGludCBiYWNrTGlzdENvdW50
KCk7CiAgICAgaW50IGZvcndhcmRMaXN0Q291bnQoKTsKIAotICAgIEJhY2tGb3J3YXJkTGlzdEl0
ZW1WZWN0b3IgYmFja0xpc3RXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwotICAgIEJhY2tGb3J3
YXJkTGlzdEl0ZW1WZWN0b3IgZm9yd2FyZExpc3RXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwot
CiAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gYmFja0xpc3RBc0ltbXV0YWJsZUFycmF5
V2l0aExpbWl0KHVuc2lnbmVkIGxpbWl0KTsKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5
PiBmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwog
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCShyZXZp
c2lvbiA3MDU3NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0ob3JpZ2luYWxVUkws
IHVybCwgdGl0bGUsIGl0ZW1JRCkpOwogICAgIH0KLSAgICB+V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSgpOworCisgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgdWlu
dDY0X3QgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtSUQ7IH0KIApJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYXRoKTsKIAotICAgIH5XZWJDb250ZXh0KCk7CisgICAgdmlydHVhbCB+V2ViQ29u
dGV4dCgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoY29uc3Qg
V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVIaXN0
b3J5Q2xpZW50KGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnQqKTsKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVQcm94eShwYWdlLCBm
cmFtZUlEKSk7CiAgICAgfQotICAgIH5XZWJGcmFtZVByb3h5KCk7CisgICAgdmlydHVhbCB+V2Vi
RnJhbWVQcm94eSgpOwogCiAgICAgZW51bSBMb2FkU3RhdGUgewogICAgICAgICBMb2FkU3RhdGVQ
cm92aXNpb25hbCwKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaAkocmV2
aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJOYXZpZ2F0aW9uRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViTmF2aWdhdGlvbkRhdGEoc3RvcmUpKTsKICAgICB9Ci0gICAg
fldlYk5hdmlnYXRpb25EYXRhKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJOYXZpZ2F0aW9uRGF0YSgp
OwogCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50aXRsZTsgfQog
ICAgIFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnVybDsgfQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VOYW1lc3Bh
Y2UoY29udGV4dCkpOwogICAgIH0KIAotICAgIH5XZWJQYWdlTmFtZXNwYWNlKCk7CisgICAgdmly
dHVhbCB+V2ViUGFnZU5hbWVzcGFjZSgpOwogCiAgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQ
YWdlKCk7ICAgIAogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDcwNTc0KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTUwLDI0ICs5NTAsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbSh1CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKHByb2Nlc3MoKS0+d2Vi
QmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRCYWNrSXRlbSh1aW50NjRfdCYgaXRlbUlEKQotewotICAgIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGJhY2tJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmJhY2tJdGVtKCk7Ci0gICAgaXRl
bUlEID0gYmFja0l0ZW0gPyBiYWNrSXRlbS0+aXRlbUlEKCkgOiAwOwotfQotCi12b2lkIFdlYlBh
Z2VQcm94eTo6YmFja0ZvcndhcmRDdXJyZW50SXRlbSh1aW50NjRfdCYgaXRlbUlEKQotewotICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGN1cnJlbnRJdGVtID0gbV9iYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCk7Ci0gICAgaXRlbUlEID0gY3VycmVudEl0ZW0gPyBjdXJyZW50SXRlbS0+
aXRlbUlEKCkgOiAwOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRGb3J3YXJk
SXRlbSh1aW50NjRfdCYgaXRlbUlEKQotewotICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGZv
cndhcmRJdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCk7Ci0gICAgaXRlbUlE
ID0gZm9yd2FyZEl0ZW0gPyBmb3J3YXJkSXRlbS0+aXRlbUlEKCkgOiAwOwotfQotCiB2b2lkIFdl
YlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCB1aW50NjRf
dCYgaXRlbUlEKQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSBtX2JhY2tG
b3J3YXJkTGlzdC0+aXRlbUF0SW5kZXgoaW5kZXgpOwpAQCAtMTI1MSw0ICsxMjMzLDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZExlYXZlQWNjZWxlcmF0ZWRDbwogfQogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
Q2xlYXIoKQoreworICAgIG1fYmFja0ZvcndhcmRMaXN0LT5jbGVhcigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3
MDU3NCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05OCw3ICs5OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBl
ID0gVHlwZVBhZ2U7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0
ZShXZWJQYWdlTmFtZXNwYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB+V2ViUGFnZVByb3h5
KCk7CisKKyAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHVpbnQ2NF90IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKQEAgLTI3OSwxMiArMjgwLDEwIEBAIHBy
aXZhdGU6CiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdlbWVudAogICAgIHZvaWQgYmFj
a0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdv
VG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCk7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tJdGVtKHVp
bnQ2NF90JiBpdGVtSUQpOwotICAgIHZvaWQgYmFja0ZvcndhcmRDdXJyZW50SXRlbSh1aW50NjRf
dCYgaXRlbUlEKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0odWludDY0X3QmIGl0
ZW1JRCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIHVp
bnQ2NF90JiBpdGVtSUQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRCYWNrTGlzdENvdW50KGludDMy
X3QmIGNvdW50KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudChpbnQzMl90
JiBjb3VudCk7CisgICAgdm9pZCBiYWNrRm9yd2FyZENsZWFyKCk7CiAKICAgICAvLyBVbmRvIG1h
bmFnZW1lbnQKICAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHVpbnQ2NF90IGNv
bW1hbmRJRCwgdWludDMyX3QgZWRpdEFjdGlvbik7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtODEsMTIg
KzgxLDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBCYWNrRm9yd2FyZCBt
ZXNzYWdlcy4KICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQogICAgIEJh
Y2tGb3J3YXJkR29Ub0l0ZW0odWludDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkQmFja0l0
ZW0oKSAtPiAodWludDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkQ3VycmVudEl0ZW0oKSAt
PiAodWludDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkRm9yd2FyZEl0ZW0oKSAtPiAodWlu
dDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkSXRlbUF0SW5kZXgodWludDY0X3QgaXRlbUlE
KSAtPiAodWludDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+
IChpbnQzMl90IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSAtPiAo
aW50MzJfdCBpdGVtSUQpCisgICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1J
bmRleCkgLT4gKHVpbnQ2NF90IGl0ZW1JRCkKKyAgICBCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQo
KSAtPiAoaW50MzJfdCBjb3VudCkKKyAgICBCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSAt
PiAoaW50MzJfdCBjb3VudCkKKyAgICBCYWNrRm9yd2FyZENsZWFyKCkKIAogICAgICMgVW5kby9S
ZWRvIG1lc3NhZ2VzLgogICAgIFJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHVpbnQ2NF90IGNv
bW1hbmRJRCwgdWludDMyX3QgZWRpdEFjdGlvbikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVy
ZW5jZXMuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUHJlZmVyZW5jZXMocHJlZmVyZW5jZXMpKTsK
ICAgICB9Ci0gICAgfldlYlByZWZlcmVuY2VzKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJQcmVmZXJl
bmNlcygpOwogCiAgICAgdm9pZCBhZGRDb250ZXh0KFdlYkNvbnRleHQqKTsKICAgICB2b2lkIHJl
bW92ZUNvbnRleHQoV2ViQ29udGV4dCopOwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsMTQg
QEAKIAkJNzYyQjc0QUYxMjBCQzk0RjAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDlE
MTIwQkM4RUEwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5jcHAgKi87IH07CiAJCThE
QzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5QzE2NjZGRTg0MTE1OEMwMkFB
QzA3IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwogCQk4REMyRUY1NzA0ODZBNjk0MDA5OEIy
MTYgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTA1OEM3QjFGRUE1NTg1RTExQ0EyQ0JCIC8qIENvY29hLmZyYW1ld29y
ayAqLzsgfTsKKwkJOTM1RUVCOUIxMjc3NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkz
NUVFQjlFMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NTEyNzc2
MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OworCQk5MzVF
RUI5RjEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk2MTI3NzYxNkQw
MDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzNUVFQkEwMTI3NzYxQUMwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTcxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi87IH07CisJCTkzNUVFQkExMTI3NzYxQ0MwMDMz
MjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjgg
LyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OworCQk5MzVFRUJBMjEy
Nzc2MUQwMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjkwMTI3NzYxNUQw
MDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovOyB9OworCQk5MzVF
RUJBMzEyNzc2MUQzMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVF
QjkxMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwICovOyB9OworCQk5MzVFRUJBNDEyNzc2MUQ2MDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzVFRUI5MjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmggKi87IH07CiAJCTkzOTFGMkNBMTIxQjY3OUEwMEVCRjdFOCAvKiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0gKi87IH07CiAJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oICovOyB9OwogCQlCQzAwOTJGNzExNTgzN0EzMDBFMEFFMkEgLyogUnVu
TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMDA5MkY1MTE1ODM3QTMwMEUwQUUyQSAvKiBSdW5Mb29wTWFjLm1tICovOyB9OwpAQCAtNjQ5
LDYgKzY1NywxNCBAQAogCQk3NjJCNzQ5RDEyMEJDOEVBMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNl
c1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4REMyRUY1
QTA0ODZBNjk0MDA5OEIyMTYgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1s
OyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERDMkVG
NUIwNDg2QTY5NDAwOThCMjE2IC8qIFdlYktpdDIuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gV2ViS2l0Mi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTkzNUVFQjhGMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkzNUVFQjkwMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5MzVFRUI5MTEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzNUVFQjkyMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
NUVFQjk1MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzNUVFQjk2MTI3NzYxNkQwMDMz
MjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MzVFRUI5NzEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTFGMjgzMTIxQjM4RjUw
MEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwMiw2ICsxNjE4LDEwIEBA
CiAJCQkJQkM0QkVFOTYxMjBBMDkxNzAwRkJBMEM3IC8qIERPTSAqLywKIAkJCQlCQzIwNEVFMDEx
QzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwICovLAogCQkJCUJDMjA0RUUxMTFD
ODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oICovLAorCQkJCTkzNUVFQjhGMTI3NzYx
NUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCisJCQkJ
OTM1RUVCOTAxMjc3NjE1RDAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggKi8sCisJCQkJOTM1RUVCOTExMjc3NjE1RDAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8sCisJCQkJOTM1RUVCOTIxMjc3NjE1RDAwMzMyMkI4IC8q
IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovLAogCQkJCUJDNDk4NjE3MTI0
RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwICovLAogCQkJ
CUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
aCAqLywKIAkJCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcCAqLywKQEAgLTE2NDEsNiArMTY2MSwxMCBAQAogCQkJCUJDMjA0RUU5
MTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZS5jcHAgKi8sCiAJCQkJQkMyMDRFRUExMUM4M0VD
ODAwOEYzMzc1IC8qIFdLQnVuZGxlLmggKi8sCiAJCQkJQkMyMDRFRUIxMUM4M0VDODAwOEYzMzc1
IC8qIFdLQnVuZGxlQVBJQ2FzdC5oICovLAorCQkJCTkzNUVFQjk1MTI3NzYxNkQwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgKi8sCisJCQkJOTM1RUVCOTYxMjc3NjE2RDAw
MzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8sCisJCQkJOTM1RUVCOTcxMjc3
NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgKi8sCisJCQkJ
OTM1RUVCOTgxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5o
ICovLAogCQkJCUJDRDI1RjE2MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmNwcCAq
LywKIAkJCQlCQ0QyNUYxNTExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5oICovLAog
CQkJCUJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oICov
LApAQCAtMjExMyw2ICsyMTM3LDEwIEBACiAJCQkJMUM4RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3
QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMjkzOTEy
NzYxRTVCMDBCQzdCRDAgLyogV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNUVF
QjlCMTI3NzYxN0MwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkzNUVFQjlGMTI3NzYxQUMwMDMzMjJCOCAvKiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM1RUVCQTIxMjc3NjFEMDAwMzMyMkI4
IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5
MzVFRUJBNDEyNzc2MUQ2MDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI0MjYsNiArMjQ1NCwxMCBAQAogCQkJCTFDOEUyODIx
MTI3NUQxNTQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUM4RTI4MzUxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDOEUyOTNBMTI3NjFFNUIwMEJDN0JEMCAvKiBXS0luc3BlY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk5MzVFRUI5RTEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM1RUVCQTAxMjc3NjFBQzAw
MzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzVFRUJBMTEyNzc2MUNDMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTM1RUVCQTMxMjc3NjFEMzAwMzMyMkI4IC8q
IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcAkocmV2aXNpb24gNzAxNjAp
CShmcm9tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6NzAxNjApCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgRGVm
YXVsdENhcGFjaXR5ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVudEl0ZW1J
bmRleCA9IFVJTlRfTUFYOworCitXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlz
dChXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKKyAgICAsIG1fY3VycmVu
dChOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgLCBtX2NhcGFjaXR5KERlZmF1bHRDYXBhY2l0eSkK
KyAgICAsIG1fY2xvc2VkKHRydWUpCisgICAgLCBtX2VuYWJsZWQodHJ1ZSkKK3sKK30KKworV2Vi
QmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKK3sKK30KKwordm9pZCBXZWJC
YWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkK
K3sKKyAgICBpZiAobV9jYXBhY2l0eSA9PSAwIHx8ICFtX2VuYWJsZWQpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJkIGxpc3QgICAgCisg
ICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKKyAgICAgICAgdW5zaWdu
ZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7CisgICAgICAgIHdoaWxlIChtX2VudHJpZXMu
c2l6ZSgpID4gdGFyZ2V0U2l6ZSkgeworICAgICAgICAgICAgUmVmUHRyPFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICAgICAgbV9lbnRyaWVz
LnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRvc3MgdGhlIGZpcnN0
IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3JlIG5v
dCB1c2luZyBpdAorICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEg
ZW50cnkpLgorICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3Vy
cmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKKyAgICAgICAgUmVmUHRyPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+IGl0ZW0gPSBtX2VudHJpZXNbMF07CisgICAgICAgIG1fZW50cmllcy5y
ZW1vdmUoMCk7CisgICAgICAgIG1fY3VycmVudC0tOworICAgICAgICAKKyAgICAgICAgaWYgKG1f
cGFnZSkKKyAgICAgICAgICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCk7Cisg
ICAgfQorCisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnQgKyAxLCBuZXdJdGVtKTsKKyAg
ICBtX2N1cnJlbnQrKzsKKworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+ZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0KCk7Cit9CisKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1Rv
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQoreworICAgIGlmICghbV9lbnRyaWVz
LnNpemUoKSB8fCAhaXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsgKytpbmRl
eCkgeworICAgICAgICBpZiAobV9lbnRyaWVzW2luZGV4XSA9PSBpdGVtKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKKyAgICAg
ICAgbV9jdXJyZW50ID0gaW5kZXg7CisgICAgICAgIGlmIChtX3BhZ2UpCisgICAgICAgICAgICBt
X3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOworICAgIH0KK30KKworV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCit7CisgICAg
aWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2Vu
dHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCit7CisgICAgaWYgKG1f
Y3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQorICAgICAgICByZXR1
cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgpOworICAgIHJldHVybiAwOworfQorCitX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkK
K3sKKyAgICBpZiAobV9lbnRyaWVzLnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6
ZSgpIC0gMSkKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5nZXQoKTsK
KyAgICByZXR1cm4gMDsKK30KKworV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViQmFja0Zvcndh
cmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgLy8gRG8gcmFuZ2UgY2hlY2tz
IHdpdGhvdXQgZG9pbmcgbWF0aCBvbiBpbmRleCB0byBhdm9pZCBvdmVyZmxvdy4KKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gMDsK
KyAgICAKKyAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCisgICAgICAgIHJldHVy
biAwOworICAgICAgICAKKyAgICByZXR1cm4gbV9lbnRyaWVzW2luZGV4ICsgbV9jdXJyZW50XS5n
ZXQoKTsKK30KKworaW50IFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpCit7Cisg
ICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogbV9jdXJyZW50
OworfQorCitpbnQgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKK3sKKyAg
ICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZW50cmllcy5zaXplKCkpIC0gKG1fY3VycmVudCArIDEpOworfQorCitCYWNrRm9y
d2FyZExpc3RJdGVtVmVjdG9yIFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQo
dW5zaWduZWQgbGltaXQpCit7CisgICAgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciBsaXN0Owor
ICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1pbihiYWNrTGlzdENvdW50KCksIHN0YXRpY19jYXN0
PGludD4obGltaXQpKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBsaXN0OworCisg
ICAgbGlzdC5yZXNpemUoc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gc3RkOjptYXgobV9j
dXJyZW50IC0gbGltaXQsIDBVKSwgaiA9IDA7IGkgPCBtX2N1cnJlbnQ7ICsraSwgKytqKQorICAg
ICAgICBsaXN0W2pdID0gbV9lbnRyaWVzW2ldOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdp
dGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkKK3sKKyAgICBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9y
IGxpc3Q7CisgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6bWluKGZvcndhcmRMaXN0Q291bnQoKSwg
c3RhdGljX2Nhc3Q8aW50PihsaW1pdCkpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJu
IGxpc3Q7CisKKyAgICBsaXN0LnJlc2l6ZShzaXplKTsKKyAgICB1bnNpZ25lZCBsYXN0ID0gc3Rk
OjptaW4obV9jdXJyZW50ICsgbGltaXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VudHJpZXMu
c2l6ZSgpIC0gMSkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fY3VycmVudCArIDEsIGogPSAw
OyBpIDw9IGxhc3Q7ICsraSwgKytqKQorICAgICAgICBsaXN0W2pdID0gbV9lbnRyaWVzW2ldOwor
CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KHVuc2lnbmVk
IGxpbWl0KQoreworICAgIHVuc2lnbmVkIGJhY2tMaXN0U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiYWNrTGlzdENvdW50KCkpOworICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1pbihiYWNr
TGlzdFNpemUsIGxpbWl0KTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBJbW11dGFi
bGVBcnJheTo6Y3JlYXRlKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB2ZWN0
b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisKKyAgICBBU1NF
UlQoYmFja0xpc3RTaXplID49IHNpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IGJhY2tMaXN0
U2l6ZSAtIHNpemU7IGkgPCBiYWNrTGlzdFNpemU7ICsraSkKKyAgICAgICAgdmVjdG9yLnVuY2hl
Y2tlZEFwcGVuZChtX2VudHJpZXNbaV0uZ2V0KCkpOworCisgICAgcmV0dXJuIEltbXV0YWJsZUFy
cmF5OjphZG9wdCh2ZWN0b3IpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdCh1bnNp
Z25lZCBsaW1pdCkKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGZvcndhcmRMaXN0Q291bnQoKSksIGxpbWl0KTsKKyAgICBpZiAoIXNpemUpCisg
ICAgICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisKKyAgICBWZWN0b3I8UmVm
UHRyPEFQSU9iamVjdD4gPiB2ZWN0b3I7CisgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CisKKyAgICB1bnNpZ25lZCBsYXN0ID0gbV9jdXJyZW50ICsgc2l6ZTsKKyAgICBB
U1NFUlQobGFzdCA8IG1fZW50cmllcy5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
Y3VycmVudCArIDE7IGkgPD0gbGFzdDsgKytpKQorICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBw
ZW5kKG1fZW50cmllc1tpXS5nZXQoKSk7CisKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFk
b3B0KHZlY3Rvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiA3MDE2MCkKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE4MSArMjMsNTUgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0Lmgi
CisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKIAotI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5oIgorI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKLXN0YXRp
YyBjb25zdCB1bnNpZ25lZCBOb0N1cnJlbnRJdGVtSW5kZXggPSBVSU5UX01BWDsKLQotV2ViQmFj
a0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5KiBwYWdlKQotICAg
IDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2N1cnJlbnQoTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCi0gICAgLCBtX2Nsb3NlZCh0cnVlKQotICAg
ICwgbV9lbmFibGVkKHRydWUpCi17Ci19Ci0KLVdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tG
b3J3YXJkTGlzdCgpCi17Ci19Ci0KLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5ld0l0ZW0pCi17Ci0gICAgaWYgKG1fY2FwYWNpdHkgPT0g
MCB8fCAhbV9lbmFibGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gVG9zcyBhbnl0
aGluZyBpbiB0aGUgZm9yd2FyZCBsaXN0ICAgIAotICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJy
ZW50SXRlbUluZGV4KSB7Ci0gICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQg
KyAxOwotICAgICAgICB3aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAg
ICAgICAgICAgIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVtID0gbV9lbnRyaWVz
Lmxhc3QoKTsKLSAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBsaXN0IGlzIGdldHRp
bmcgdG9vIGJpZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKLSAgICAvLyAob3IgZXZl
biBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KLSAgICBpZiAobV9lbnRyaWVz
LnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgIT0gMCB8fCBtX2NhcGFjaXR5ID09
IDEpKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVtID0gbV9l
bnRyaWVzWzBdOwotICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwotICAgICAgICBtX2N1cnJl
bnQtLTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX3BhZ2UpCi0gICAgICAgICAgICBtX3BhZ2Ut
PmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwotICAgIH0KLQotICAgIG1fZW50cmllcy5pbnNl
cnQobV9jdXJyZW50ICsgMSwgbmV3SXRlbSk7Ci0gICAgbV9jdXJyZW50Kys7Ci0KLSAgICBpZiAo
bV9wYWdlKQotICAgICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwotfQot
Ci12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSogaXRlbSkKLXsKLSAgICBpZiAoIW1fZW50cmllcy5zaXplKCkgfHwgIWl0ZW0pCi0gICAgICAg
IHJldHVybjsKLSAgICAgICAgCi0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvciAoOyBp
bmRleCA8IG1fZW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKG1fZW50cmll
c1tpbmRleF0gPT0gaXRlbSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoaW5k
ZXggPCBtX2VudHJpZXMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IGluZGV4OwotICAg
ICAgICBpZiAobV9wYWdlKQotICAgICAgICAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QoKTsKLSAgICB9Ci19Ci0KLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3
YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQotewotICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudF0uZ2V0KCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJk
TGlzdDo6YmFja0l0ZW0oKQotewotICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5v
Q3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAx
XS5nZXQoKTsKLSAgICByZXR1cm4gMDsKLX0KK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkK
LXsKLSAgICBpZiAobV9lbnRyaWVzLnNpemUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6
ZSgpIC0gMSkKLSAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5nZXQoKTsK
LSAgICByZXR1cm4gMDsKLX0KK25hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKK1Bhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAogewotICAgIC8vIERv
IHJhbmdlIGNoZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZs
b3cuCi0gICAgaWYgKGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKGluZGV4ID4gZm9y
d2FyZExpc3RDb3VudCgpKQorICAgIFBhZ2UqIHBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7Cisg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgcmV0dXJuIG1f
ZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7Ci19Ci0KLWludCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OmJhY2tMaXN0Q291bnQoKQotewotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gTm9DdXJy
ZW50SXRlbUluZGV4ID8gMCA6IG1fY3VycmVudDsKLX0KLQotaW50IFdlYkJhY2tGb3J3YXJkTGlz
dDo6Zm9yd2FyZExpc3RDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJl
bnRJdGVtSW5kZXggPyAwIDogc3RhdGljX2Nhc3Q8aW50PihtX2VudHJpZXMuc2l6ZSgpKSAtICht
X2N1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtOjpjcmVhdGUocGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPml0ZW1BdEluZGV4KGluZGV4KSk7
CiB9CiAKLUJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNr
TGlzdFdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkKK2ludCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpIGNvbnN0CiB7Ci0gICAgQmFja0ZvcndhcmRMaXN0SXRl
bVZlY3RvciBsaXN0OwotICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1pbihiYWNrTGlzdENvdW50
KCksIHN0YXRpY19jYXN0PGludD4obGltaXQpKTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJl
dHVybiBsaXN0OwotCi0gICAgbGlzdC5yZXNpemUoc2l6ZSk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gc3RkOjptYXgobV9jdXJyZW50IC0gbGltaXQsIDBVKSwgaiA9IDA7IGkgPCBtX2N1cnJlbnQ7
ICsraSwgKytqKQotICAgICAgICBsaXN0W2pdID0gbV9lbnRyaWVzW2ldOwotCi0gICAgcmV0dXJu
IGxpc3Q7Ci19Ci0KLUJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3IgV2ViQmFja0ZvcndhcmRMaXN0
Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkKLXsKLSAgICBCYWNrRm9yd2Fy
ZExpc3RJdGVtVmVjdG9yIGxpc3Q7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6bWluKGZvcndh
cmRMaXN0Q291bnQoKSwgc3RhdGljX2Nhc3Q8aW50PihsaW1pdCkpOwotICAgIGlmICghc2l6ZSkK
LSAgICAgICAgcmV0dXJuIGxpc3Q7Ci0KLSAgICBsaXN0LnJlc2l6ZShzaXplKTsKLSAgICB1bnNp
Z25lZCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGltaXQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihtX2VudHJpZXMuc2l6ZSgpIC0gMSkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IG1fY3Vy
cmVudCArIDEsIGogPSAwOyBpIDw9IGxhc3Q7ICsraSwgKytqKQotICAgICAgICBsaXN0W2pdID0g
bV9lbnRyaWVzW2ldOwotCi0gICAgcmV0dXJuIGxpc3Q7CisgICAgaWYgKCFtX3BhZ2UpCisgICAg
ICAgIHJldHVybiAwOworICAgIFBhZ2UqIHBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAg
aWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcGFnZS0+YmFja0Zvcndh
cmRMaXN0KCktPmJhY2tMaXN0Q291bnQoKTsKIH0KIAotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQo
dW5zaWduZWQgbGltaXQpCitpbnQgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6OmZvcndh
cmRMaXN0Q291bnQoKSBjb25zdAogewotICAgIHVuc2lnbmVkIGJhY2tMaXN0U2l6ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihiYWNrTGlzdENvdW50KCkpOwotICAgIHVuc2lnbmVkIHNpemUgPSBz
dGQ6Om1pbihiYWNrTGlzdFNpemUsIGxpbWl0KTsKLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHJl
dHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4gPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7
Ci0KLSAgICBBU1NFUlQoYmFja0xpc3RTaXplID49IHNpemUpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IGJhY2tMaXN0U2l6ZSAtIHNpemU7IGkgPCBiYWNrTGlzdFNpemU7ICsraSkKLSAgICAgICAg
dmVjdG9yLnVuY2hlY2tlZEFwcGVuZChtX2VudHJpZXNbaV0uZ2V0KCkpOwotCi0gICAgcmV0dXJu
IEltbXV0YWJsZUFycmF5OjphZG9wdCh2ZWN0b3IpOworICAgIGlmICghbV9wYWdlKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBQYWdlKiBwYWdlID0gbV9wYWdlLT5jb3JlUGFnZSgpOworICAgIGlm
ICghcGFnZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHBhZ2UtPmJhY2tGb3J3YXJk
TGlzdCgpLT5mb3J3YXJkTGlzdENvdW50KCk7CiB9CiAKLVBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExp
bWl0KHVuc2lnbmVkIGxpbWl0KQordm9pZCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDo6
Y2xlYXIoKQogewotICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZm9yd2FyZExpc3RDb3VudCgpKSwgbGltaXQpOwotICAgIGlmICghc2l6ZSkKLSAgICAg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
QVBJT2JqZWN0PiA+IHZlY3RvcjsKLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
aXplKTsKLQotICAgIHVuc2lnbmVkIGxhc3QgPSBtX2N1cnJlbnQgKyBzaXplOwotICAgIEFTU0VS
VChsYXN0IDwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9jdXJy
ZW50ICsgMTsgaSA8PSBsYXN0OyArK2kpCi0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
bV9lbnRyaWVzW2ldLmdldCgpKTsKLQotICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQo
dmVjdG9yKTsKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIFBhZ2UqIHBh
Z2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47
CisgICAgc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0UHJveHkqPihwYWdlLT5iYWNrRm9y
d2FyZExpc3QoKSktPmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgJKHJldmlzaW9uIDcwMTYwKQkoZnJvbSBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDo3MDE2MCkKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJCYWNrRm9yd2FyZExpc3RfaAorI2RlZmluZSBXZWJCYWNrRm9yd2FyZExpc3RfaAorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRl
ICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lmIFBMQVRGT1JNKENGKQorI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NGRGljdGlvbmFyeS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gPiBCYWNrRm9yd2Fy
ZExpc3RJdGVtVmVjdG9yOworCisvKgorICogICAgICAgICAgQ3VycmVudAorICogICB8LS0tLS0t
LS0tKi0tLS0tLS0tLS0tLS0tfCBFbnRyaWVzCisgKiAgICAgIEJhY2sgICAgICAgIEZvcndhcmQK
KyAqLworCitjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJhY2tGb3J3YXJkTGlz
dDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdl
YlBhZ2VQcm94eSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
QmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsKKyAgICB9CisgICAgfldlYkJhY2tGb3J3YXJkTGlzdCgp
OworCisgICAgdm9pZCBhZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICB2b2lk
IGdvVG9JdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKworICAgIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYmFj
a0l0ZW0oKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBmb3J3YXJkSXRlbSgpOworICAg
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1BdEluZGV4KGludCk7CisKKyAgICBpbnQgYmFj
a0xpc3RDb3VudCgpOworICAgIGludCBmb3J3YXJkTGlzdENvdW50KCk7CisKKyAgICBCYWNrRm9y
d2FyZExpc3RJdGVtVmVjdG9yIGJhY2tMaXN0V2l0aExpbWl0KHVuc2lnbmVkIGxpbWl0KTsKKyAg
ICBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yIGZvcndhcmRMaXN0V2l0aExpbWl0KHVuc2lnbmVk
IGxpbWl0KTsKKworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGJhY2tMaXN0QXNJbW11
dGFibGVBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCk7CisgICAgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gZm9yd2FyZExpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KHVuc2lnbmVk
IGxpbWl0KTsKKworI2lmIFBMQVRGT1JNKENGKQorICAgIENGRGljdGlvbmFyeVJlZiBjcmVhdGVD
RkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eVNlc3Np
b25TdGF0ZUZpbHRlckNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBjb25zdDsKKyAgICBib29sIHJl
c3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmKTsKKyNl
bmRpZgorCitwcml2YXRlOgorICAgIFdlYkJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqKTsK
KworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisg
ICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciBt
X2VudHJpZXM7CisgICAgdW5zaWduZWQgbV9jdXJyZW50OworICAgIHVuc2lnbmVkIG1fY2FwYWNp
dHk7CisgICAgYm9vbCBtX2Nsb3NlZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICAKKy8vIEZJ
WE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUgLSAKKy8vIFdoZW4gd2UgaGF2ZSBhIHNvbHV0aW9uIGZv
ciByZXN0b3JpbmcgdGhlIGZ1bGwgYmFjay9mb3J3YXJkIGxpc3QgCisvLyB0aGVuIGNhdXNpbmcg
YSBsb2FkIG9mIHRoZSBjdXJyZW50IGl0ZW0sIHdlIHdpbGwgbm8gbG9uZ2VyIG5lZWQgdGhpcy4K
K3B1YmxpYzoKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVzdG9yZWRDdXJyZW50VVJMKCkgY29u
c3QgeyByZXR1cm4gbV9yZXN0b3JlZEN1cnJlbnRVUkw7IH0KK3ByaXZhdGU6CisgICAgV1RGOjpT
dHJpbmcgbV9yZXN0b3JlZEN1cnJlbnRVUkw7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFdlYkJhY2tGb3J3YXJkTGlzdF9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3QuaAkocmV2aXNpb24gNzAxNjApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsODMgKzIzLDQzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJCYWNrRm9yd2FyZExpc3RfaAotI2RlZmluZSBXZWJCYWNr
Rm9yd2FyZExpc3RfaAorI2lmbmRlZiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdF9oCisj
ZGVmaW5lIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0X2gKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpZiBQTEFURk9STShDRikKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkRp
Y3Rpb25hcnkuaD4KLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdHlwZWRlZiBWZWN0
b3I8UmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+ID4gQmFja0ZvcndhcmRMaXN0SXRlbVZl
Y3RvcjsKK2NsYXNzIFdlYlBhZ2U7CiAKLS8qCi0gKiAgICAgICAgICBDdXJyZW50Ci0gKiAgIHwt
LS0tLS0tLS0qLS0tLS0tLS0tLS0tLS18IEVudHJpZXMKLSAqICAgICAgQmFjayAgICAgICAgRm9y
d2FyZAotICovCitjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKLWNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBBUElPYmplY3QgeworY2xhc3MgSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJhY2tGb3J3YXJkTGlzdDsKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdDsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdlYlBhZ2VQ
cm94eSogcGFnZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdD4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkJhY2tGb3J3YXJkTGlzdChwYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QocGFnZSkpOwogICAgIH0KLSAg
ICB+V2ViQmFja0ZvcndhcmRMaXN0KCk7Ci0KLSAgICB2b2lkIGFkZEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSopOwotICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSop
OwotCi0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogY3VycmVudEl0ZW0oKTsKLSAgICBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBiYWNrSXRlbSgpOwotICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIGZvcndhcmRJdGVtKCk7Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUF0SW5k
ZXgoaW50KTsKIAotICAgIGludCBiYWNrTGlzdENvdW50KCk7Ci0gICAgaW50IGZvcndhcmRMaXN0
Q291bnQoKTsKKyAgICB2b2lkIGRldGFjaCgpIHsgbV9wYWdlID0gMDsgfQogCi0gICAgQmFja0Zv
cndhcmRMaXN0SXRlbVZlY3RvciBiYWNrTGlzdFdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCk7Ci0g
ICAgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciBmb3J3YXJkTGlzdFdpdGhMaW1pdCh1bnNpZ25l
ZCBsaW1pdCk7CisgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gYmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KHVuc2lnbmVkIGxpbWl0KTsK
LSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJy
YXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwotCi0jaWYgUExBVEZPUk0oQ0YpCi0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIGNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5U2Vzc2lvblN0YXRlRmlsdGVyQ2FsbGJhY2ssIHZvaWQqIGNvbnRleHQp
IGNvbnN0OwotICAgIGJvb2wgcmVzdG9yZUZyb21DRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihD
RkRpY3Rpb25hcnlSZWYpOwotI2VuZGlmCisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1BdEluZGV4KGludCkgY29uc3Q7CisgICAgaW50IGJhY2tM
aXN0Q291bnQoKSBjb25zdDsKKyAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIFdlYkJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqKTsKKyAgICBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlKiBwYWdlKSA6IG1fcGFnZShwYWdlKSB7
IH0KIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQog
Ci0gICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7Ci0gICAgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3Rv
ciBtX2VudHJpZXM7Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50OwotICAgIHVuc2lnbmVkIG1fY2Fw
YWNpdHk7Ci0gICAgYm9vbCBtX2Nsb3NlZDsKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICAKLS8v
IEZJWE1FIC0gPHJkYXI6Ly9wcm9ibGVtLzgyNjE2MjQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDczNTUgLSAKLS8vIFdoZW4gd2UgaGF2ZSBhIHNvbHV0aW9u
IGZvciByZXN0b3JpbmcgdGhlIGZ1bGwgYmFjay9mb3J3YXJkIGxpc3QgCi0vLyB0aGVuIGNhdXNp
bmcgYSBsb2FkIG9mIHRoZSBjdXJyZW50IGl0ZW0sIHdlIHdpbGwgbm8gbG9uZ2VyIG5lZWQgdGhp
cy4KLXB1YmxpYzoKLSAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVzdG9yZWRDdXJyZW50VVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXN0b3JlZEN1cnJlbnRVUkw7IH0KLXByaXZhdGU6Ci0gICAgV1RG
OjpTdHJpbmcgbV9yZXN0b3JlZEN1cnJlbnRVUkw7CisgICAgV2ViUGFnZSogbV9wYWdlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBXZWJCYWNrRm9yd2FyZExpc3Rf
aAorI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0X2gKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiA3MDE2MCkJ
KGZyb20gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6NzAxNjAp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIHVpbnQ2NF90IGl0ZW1JRCkKKyAgICA6IG1fb3JpZ2luYWxVUkwob3JpZ2lu
YWxVUkwpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwgbV9p
dGVtSUQoaXRlbUlEKQoreworfQorCitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJKHJldmlzaW9uIDcwMTYw
KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIwICsyMywyMiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgiCiAKLW5hbWVzcGFjZSBXZWJLaXQgeworI2luY2x1ZGUgIkltbXV0YWJsZUFy
cmF5LmgiCiAKLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0o
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIHVpbnQ2NF90IGl0ZW1JRCkKLSAgICA6IG1fb3JpZ2luYWxVUkwob3JpZ2luYWxV
UkwpCi0gICAgLCBtX3VybCh1cmwpCi0gICAgLCBtX3RpdGxlKHRpdGxlKQotICAgICwgbV9pdGVt
SUQoaXRlbUlEKQotewotfQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgewogCi1XZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSgpCitQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKIHsKKyAgICBjb25zdCBIaXN0b3J5SXRlbVZlY3Rv
ciYgY2hpbGRyZW4gPSBtX2l0ZW0tPmNoaWxkcmVuKCk7CisgICAgc2l6ZV90IHNpemUgPSBjaGls
ZHJlbi5zaXplKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gdmVjdG9yKHNpemUp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICB2ZWN0b3Jb
aV0gPSBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShjaGlsZHJlbltp
XSk7CisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh2ZWN0b3IpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmgJKHJldmlzaW9uIDcwMTYwKQkoZnJvbSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmg6NzAxNjApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbV9oCisjZGVmaW5lIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1faAorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSA6IHB1YmxpYyBBUElPYmplY3Qgewor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQmFja0ZvcndhcmRM
aXN0SXRlbTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgdWludDY0X3QgaXRlbUlEKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKG9yaWdpbmFsVVJMLCB1cmwsIHRp
dGxlLCBpdGVtSUQpKTsKKyAgICB9CisgICAgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKKwor
ICAgIHVpbnQ2NF90IGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbUlEOyB9CisKKyAgICB2
b2lkIHNldE9yaWdpbmFsVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwpIHsgbV9vcmlnaW5h
bFVSTCA9IG9yaWdpbmFsVVJMOyB9CisgICAgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxVUkw7IH0KKworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFN0
cmluZyYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CisgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQorCisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKSB7IG1fdGl0bGUgPSB0aXRsZTsgfQorICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25z
dCB7IHJldHVybiBtX3RpdGxlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbShjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgdWludDY0X3QgaXRlbUlEKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7
CisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX3RpdGxlOworICAgIHVpbnQ2NF90IG1f
aXRlbUlEOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtX2gKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmgJKHJldmlzaW9uIDcwMTYwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw0OSArMjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1faAotI2RlZmluZSBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtX2gKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtX2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtX2gKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK2NsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbSA6IHB1Ymxp
YyBBUElPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBU
eXBlQmFja0ZvcndhcmRMaXN0SXRlbTsKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0g
VHlwZUJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVpbnQ2NF90IGl0ZW1JRCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKG9yaWdpbmFs
VVJMLCB1cmwsIHRpdGxlLCBpdGVtSUQpKTsKKyAgICAgICAgaWYgKCFpdGVtKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pKTsKICAgICB9Ci0gICAgfldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0oKTsKIAotICAgIHVpbnQ2NF90IGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbUlE
OyB9CisgICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2l0
ZW0uZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0T3JpZ2luYWxVUkwoY29uc3QgU3RyaW5nJiBvcmln
aW5hbFVSTCkgeyBtX29yaWdpbmFsVVJMID0gb3JpZ2luYWxVUkw7IH0KLSAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQorICAgIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2l0ZW0tPm9yaWdpbmFs
VVJMU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlbS0+dXJsU3RyaW5nKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVtLT50aXRsZSgpOyB9CiAKLSAgICB2b2lkIHNldFVSTChjb25zdCBTdHJpbmcm
IHVybCkgeyBtX3VybCA9IHVybDsgfQotICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1faXRlbS0+dGFyZ2V0KCk7IH0KKyAgICBib29sIGlzVGFyZ2V0SXRlbSgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbS0+aXNUYXJnZXRJdGVtKCk7IH0KIAotICAgIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSkgeyBtX3RpdGxlID0gdGl0bGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IGNoaWxkcmVuKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbShjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgdWludDY0X3QgaXRlbUlEKTsKKyAgICBJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkg
OiBtX2l0ZW0oaXRlbSkgeyB9CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFQSVR5cGU7IH0KIAotICAgIFN0cmluZyBtX29yaWdpbmFsVVJMOwotICAgIFN0cmluZyBt
X3VybDsKLSAgICBTdHJpbmcgbV90aXRsZTsKLSAgICB1aW50NjRfdCBtX2l0ZW1JRDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IG1faXRlbTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCi0jZW5kaWYgLy8gV2ViQmFja0ZvcndhcmRMaXN0SXRlbV9oCisjZW5kaWYgLy8g
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtX2gKSW5kZXg6IFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKICAg
ICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogbm9ybWFsV29ybGQoKTsKIAotICAg
IH5JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKCk7CisgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCgpOwogCiAgICAgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKiBjb3JlV29y
bGQoKSBjb25zdDsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24gNzA1NzQpCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlOworY2xhc3MgSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW07CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwpA
QCAtNDksNiArNTEsOCBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3Mg
V2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdlOwogCitXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3RSZWYsIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0KQorV0tfQURE
X0FQSV9NQVBQSU5HKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvblJlZiwgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbikKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElO
RyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkK
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcAkocmV2aXNpb24gNzAx
NjApCShmcm9tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmNwcDo3
MDE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVkZSAiV2Vi
QmFja0ZvcndhcmRMaXN0LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQmFja0ZvcndhcmRMaXN0R2V0VHlwZUlEKCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoV2ViQmFja0ZvcndhcmRMaXN0OjpBUElUeXBlKTsKK30KKworV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxp
c3RSZWYpLT5jdXJyZW50SXRlbSgpKTsKK30KKworV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdL
QmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikK
K3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5iYWNrSXRlbSgpKTsKK30KKwor
V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZEl0ZW0o
V0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGxpc3RSZWYpLT5mb3J3YXJkSXRlbSgpKTsKK30KKworV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVm
IFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlz
dFJlZiwgaW50IGluZGV4KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwobGlzdFJlZiktPml0
ZW1BdEluZGV4KGluZGV4KSk7Cit9CisKK3Vuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFj
a0xpc3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQoreworICAgIHJldHVybiB0
b0ltcGwobGlzdFJlZiktPmJhY2tMaXN0Q291bnQoKTsKK30KKwordW5zaWduZWQgV0tCYWNrRm9y
d2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYp
Cit7CisgICAgcmV0dXJuIHRvSW1wbChsaXN0UmVmKS0+Zm9yd2FyZExpc3RDb3VudCgpOworfQor
CitXS0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFj
a0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwobGlzdFJlZiktPmJhY2tMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChs
aW1pdCkucmVsZWFzZVJlZigpKTsKK30KKworV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENv
cHlGb3J3YXJkTGlzdFdpdGhMaW1pdChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCB1bnNp
Z25lZCBsaW1pdCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGxpc3RSZWYpLT5mb3J3YXJk
TGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQobGltaXQpLnJlbGVhc2VSZWYoKSk7ICAgIAor
fQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCShyZXZpc2lvbiA3
MDE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDU0ICsyMywzNSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJXS0Jh
Y2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgiCiAK
LSNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
KyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJ
Q2FzdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1XS1R5cGVJRCBXS0JhY2tGb3J3
YXJkTGlzdEdldFR5cGVJRCgpCitXS1R5cGVJRCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYkJhY2tGb3J3YXJkTGlzdDo6QVBJVHlwZSk7
CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OjpBUElUeXBl
KTsKIH0KIAotV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3Vy
cmVudEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKK1dLQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbVJlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENvcHlJdGVtQXRJbmRleChXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmLCBpbnQgaW5kZXgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+Y3VycmVudEl0ZW0oKSk7CisgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChsaXN0UmVmKS0+aXRlbUF0SW5kZXgoaW5kZXgpLmxlYWtSZWYoKSk7CiB9CiAKLVdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tJdGVtKFdLQmFj
a0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0
UmVmKS0+YmFja0l0ZW0oKSk7Ci19Ci0KLVdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tG
b3J3YXJkTGlzdEdldEZvcndhcmRJdGVtKFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCi17
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+Zm9yd2FyZEl0ZW0oKSk7Ci19Ci0K
LVdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tGb3J3YXJkTGlzdEdldEl0ZW1BdEluZGV4
KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIGludCBpbmRleCkKLXsKLSAgICByZXR1cm4g
dG9BUEkodG9JbXBsKGxpc3RSZWYpLT5pdGVtQXRJbmRleChpbmRleCkpOwotfQotCi11bnNpZ25l
ZCBXS0JhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQoV0tCYWNrRm9yd2FyZExpc3RSZWYg
bGlzdFJlZikKK3Vuc2lnbmVkIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3Vu
dChXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdFJlZiBsaXN0UmVmKQogewogICAgIHJldHVybiB0b0lt
cGwobGlzdFJlZiktPmJhY2tMaXN0Q291bnQoKTsKIH0KIAotdW5zaWduZWQgV0tCYWNrRm9yd2Fy
ZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCit1
bnNpZ25lZCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0Q291bnQoV0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGxpc3RS
ZWYpLT5mb3J3YXJkTGlzdENvdW50KCk7CiB9CiAKLVdLQXJyYXlSZWYgV0tCYWNrRm9yd2FyZExp
c3RDb3B5QmFja0xpc3RXaXRoTGltaXQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdFJlZiwgdW5z
aWduZWQgbGltaXQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+YmFja0xp
c3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KGxpbWl0KS5yZWxlYXNlUmVmKCkpOwotfQotCi1X
S0FycmF5UmVmIFdLQmFja0ZvcndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KFdLQmFj
a0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYsIHVuc2lnbmVkIGxpbWl0KQordm9pZCBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdENsZWFyKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChsaXN0UmVmKS0+Zm9yd2FyZExpc3RBc0ltbXV0YWJs
ZUFycmF5V2l0aExpbWl0KGxpbWl0KS5yZWxlYXNlUmVmKCkpOyAgICAKKyAgICByZXR1cm4gdG9J
bXBsKGxpc3RSZWYpLT5jbGVhcigpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0Zvcndh
cmRMaXN0LmgJKHJldmlzaW9uIDcwMTYwKQkoZnJvbSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0JhY2tGb3J3YXJkTGlzdC5oOjcwMTYwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCYWNrRm9yd2FyZExpc3RfaAor
I2RlZmluZSBXS0JhY2tGb3J3YXJkTGlzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9S
VCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0ZW0oV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CitXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlz
dCk7CitXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0
R2V0Rm9yd2FyZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CitXS19FWFBPUlQgV0tC
YWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0SXRlbUF0SW5kZXgoV0tC
YWNrRm9yd2FyZExpc3RSZWYgbGlzdCwgaW50IGluZGV4KTsKKworV0tfRVhQT1JUIHVuc2lnbmVk
IFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0xpc3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJlZiBs
aXN0KTsKK1dLX0VYUE9SVCB1bnNpZ25lZCBXS0JhY2tGb3J3YXJkTGlzdEdldEZvcndhcmRMaXN0
Q291bnQoV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CisKK1dLX0VYUE9SVCBXS0FycmF5UmVm
IFdLQmFja0ZvcndhcmRMaXN0Q29weUJhY2tMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0
UmVmIGxpc3QsIHVuc2lnbmVkIGxpbWl0KTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQmFja0Zv
cndhcmRMaXN0Q29weUZvcndhcmRMaXN0V2l0aExpbWl0KFdLQmFja0ZvcndhcmRMaXN0UmVmIGxp
c3QsIHVuc2lnbmVkIGxpbWl0KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8vIFdLQmFja0ZvcndhcmRMaXN0X2gKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oCShyZXZpc2lvbiA3MDE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlzdF9oCi0jZGVmaW5lIFdLQmFja0ZvcndhcmRM
aXN0X2gKKyNpZm5kZWYgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RfaAorI2RlZmluZSBXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdF9oCiAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCkBAIC0z
MiwyMSArMzIsMTcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLVdLX0VYUE9SVCBXS1R5cGVJ
RCBXS0JhY2tGb3J3YXJkTGlzdEdldFR5cGVJRCgpOworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVu
ZGxlQmFja0ZvcndhcmRMaXN0R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRDdXJyZW50SXRlbShXS0JhY2tGb3J3YXJk
TGlzdFJlZiBsaXN0KTsKLVdLX0VYUE9SVCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNr
Rm9yd2FyZExpc3RHZXRCYWNrSXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KTsKLVdLX0VY
UE9SVCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRGb3J3YXJk
SXRlbShXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KTsKLVdLX0VYUE9SVCBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1SZWYgV0tCYWNrRm9yd2FyZExpc3RHZXRJdGVtQXRJbmRleChXS0JhY2tGb3J3YXJk
TGlzdFJlZiBsaXN0LCBpbnQgaW5kZXgpOworV0tfRVhQT1JUIFdLQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENvcHlJdGVtQXRJbmRleChXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdFJlZiBsaXN0LCBpbnQgaW5kZXgpOwogCi1XS19FWFBPUlQgdW5zaWdu
ZWQgV0tCYWNrRm9yd2FyZExpc3RHZXRCYWNrTGlzdENvdW50KFdLQmFja0ZvcndhcmRMaXN0UmVm
IGxpc3QpOwotV0tfRVhQT1JUIHVuc2lnbmVkIFdLQmFja0ZvcndhcmRMaXN0R2V0Rm9yd2FyZExp
c3RDb3VudChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0KTsKK1dLX0VYUE9SVCB1bnNpZ25lZCBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQoV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RSZWYgbGlzdCk7CitXS19FWFBPUlQgdW5zaWduZWQgV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RHZXRGb3J3YXJkTGlzdENvdW50KFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVmIGxpc3QpOwog
Ci1XS19FWFBPUlQgV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENvcHlCYWNrTGlzdFdpdGhM
aW1pdChXS0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0LCB1bnNpZ25lZCBsaW1pdCk7Ci1XS19FWFBP
UlQgV0tBcnJheVJlZiBXS0JhY2tGb3J3YXJkTGlzdENvcHlGb3J3YXJkTGlzdFdpdGhMaW1pdChX
S0JhY2tGb3J3YXJkTGlzdFJlZiBsaXN0LCB1bnNpZ25lZCBsaW1pdCk7CitXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENsZWFyKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0UmVm
IGxpc3QpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCi0jZW5kaWYgLy8gV0tC
YWNrRm9yd2FyZExpc3RfaAorI2VuZGlmIC8vIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0X2gKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCShyZXZpc2lv
biA3MDE2MCkJKGZyb20gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcDo3MDE2MCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgi
CisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQmFja0Zvcndh
cmRMaXN0SXRlbUdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OkFQSVR5cGUpOworfQorCitXS1VSTFJlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1D
b3B5T3JpZ2luYWxVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpdGVtUmVmKS0+b3JpZ2luYWxVUkwoKSk7Cit9
CisKK1dLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlVUkwoV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChp
dGVtUmVmKS0+dXJsKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1D
b3B5VGl0bGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dGl0bGUoKSk7Cit9CkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAkocmV2aXNpb24gNzAxNjApCisr
KyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIzLDUxIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgIldLQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgorI2luY2x1ZGUgIldLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5o
IgogCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLVdLVHlwZUlEIFdLQmFja0ZvcndhcmRMaXN0
SXRlbUdldFR5cGVJRCgpCitXS1R5cGVJRCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1HZXRU
eXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpBUElU
eXBlKTsKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
OjpBUElUeXBlKTsKIH0KIAotV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdp
bmFsVVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQorYm9vbCBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jc1NhbWUoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0
ZW1SZWYxLCBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZjIpCit7CisgICAg
cmV0dXJuIHRvSW1wbChpdGVtUmVmMSktPml0ZW0oKSA9PSB0b0ltcGwoaXRlbVJlZjIpLT5pdGVt
KCk7Cit9CisKK1dLVVJMUmVmIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmlnaW5h
bFVSTChXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKIHsKICAgICByZXR1
cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGl0ZW1SZWYpLT5vcmlnaW5hbFVSTCgpKTsKIH0KIAot
V0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTChXS0JhY2tGb3J3YXJkTGlzdEl0
ZW1SZWYgaXRlbVJlZikKK1dLVVJMUmVmIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlV
UkwoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiB7CiAgICAgcmV0dXJu
IHRvQ29waWVkVVJMQVBJKHRvSW1wbChpdGVtUmVmKS0+dXJsKCkpOwogfQogCi1XS1N0cmluZ1Jl
ZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVm
IGl0ZW1SZWYpCitXS1N0cmluZ1JlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0
bGUoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiB7CiAgICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+dGl0bGUoKSk7CiB9CisKK1dLU3RyaW5nUmVm
IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJnZXQoV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChp
dGVtUmVmKS0+dGFyZ2V0KCkpOworfQorCitib29sIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bUlzVGFyZ2V0SXRlbShXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKK3sK
KyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5pc1RhcmdldEl0ZW0oKTsKK30KKworV0tBcnJh
eVJlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5Q2hpbGRyZW4oV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChp
dGVtUmVmKS0+Y2hpbGRyZW4oKS5sZWFrUmVmKCkpOworfQorCkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCShyZXZpc2lvbiA3MDE2MCkJKGZyb20gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg6NzAxNjApCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtX2gKKyNkZWZpbmUgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQmFja0Zvcndh
cmRMaXN0SXRlbUdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVUkxSZWYgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsK
K1dLX0VYUE9SVCBXS1VSTFJlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKFdLQmFja0Zv
cndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1Db3B5VGl0bGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tCYWNrRm9yd2FyZExp
c3RJdGVtX2ggKi8KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmgJKHJldmlzaW9uIDcwMTYwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1faAotI2RlZmluZSBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1faAorI2lmbmRlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1faAorI2RlZmluZSBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1faAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KIApAQCAtMzIsMTQgKzMyLDIxIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1XS19FWFBP
UlQgV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKCk7CitXS19FWFBPUlQg
V0tUeXBlSUQgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKCk7CiAKLVdLX0VY
UE9SVCBXS1VSTFJlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5T3JpZ2luYWxVUkwoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOwotV0tfRVhQT1JUIFdLVVJMUmVmIFdLQmFja0Zvcndh
cmRMaXN0SXRlbUNvcHlVUkwoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOwotV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWYgaXRlbSk7CitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW1Jc1NhbWUoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0xLCBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbTIpOworCitXS19FWFBPUlQgV0tVUkxSZWYg
V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0J1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW1Db3B5VVJMKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVt
KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5
VGl0bGUoV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOworCitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRhcmdldChXS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSk7CitXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW1Jc1RhcmdldEl0ZW0oV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIGl0ZW0pOworCitXS19FWFBPUlQgV0tBcnJheVJlZiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW1Db3B5Q2hpbGRyZW4oV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOwog
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCi0jZW5kaWYgLyogV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtX2ggKi8KKyNlbmRpZiAvKiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1faCAq
LwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRl
ICJXS0J1bmRsZVBhZ2VQcml2YXRlLmgiCiAKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxl
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKQEAgLTExOSwzICsxMjAsOCBAQCB2b2lk
IFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFjdG9yKFdLQnVuCiB7CiAgICAgdG9JbXBsKHBhZ2VS
ZWYpLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFjdG9yKTsKIH0KKworV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RSZWYgV0tCdW5kbGVQYWdlR2V0QmFja0ZvcndhcmRMaXN0KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPmJhY2tGb3J3
YXJkTGlzdCgpKTsKK30KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdl
U2V0VUlDbGllbnQoVwogCiBXS19FWFBPUlQgV0tCdW5kbGVGcmFtZVJlZiBXS0J1bmRsZVBhZ2VH
ZXRNYWluRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCitXS19FWFBPUlQgV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3RSZWYgV0tCdW5kbGVQYWdlR2V0QmFja0ZvcndhcmRMaXN0KFdLQnVuZGxl
UGFnZVJlZiBwYWdlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTAgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlIDogcHVibGljIAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlQnVuZGxlTm9kZUhhbmRsZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gZ2V0T3JDcmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIG9iamVjdCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGdldE9yQ3JlYXRlKFdl
YkNvcmU6Ok5vZGUqKTsKIAotICAgIH5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUoKTsKKyAgICB2
aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUoKTsKIAogICAgIFdlYkNvcmU6Ok5vZGUq
IGNvcmVOb2RlKCkgY29uc3Q7CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5oCShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3
ICs0Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1
bmRsZVJhbmdlSGFuZGxlOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZT4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6UmFuZ2UqKTsKLSAgICB+SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZSgpOworCisgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZSgpOwogCiAgICAgV2ViQ29yZTo6UmFuZ2UqIGNvcmVSYW5nZSgpIGNvbnN0OwogCkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwCShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDIw
ICsxMDEsMTMgQEAgSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdAogCiBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFnZSog
cGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNp
dHkpCi0gICAgLCBtX2Nsb3NlZCh0cnVlKQotICAgICwgbV9lbmFibGVkKHRydWUpCiB7CiAgICAg
V2ViQ29yZTo6bm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkID0gV0syTm90aWZ5SGlzdG9yeUl0ZW1D
aGFuZ2VkOwogfQogCi1XZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6fldlYkJhY2tGb3J3YXJkTGlz
dFByb3h5KCkKLXsKLX0KLQogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShQ
YXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQogewotICAgIGlmICghbV9jYXBhY2l0eSB8
fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBwcnBJdGVtOwpAQCAtMTIyLDczICsxMTUsMjEgQEAg
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShQYQogICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNr
Rm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmdvQmFjaygpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvRm9yd2FyZCgpCi17Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogeworICAgIGlmICghbV9wYWdlKQorICAg
ICAgICByZXR1cm47CisKICAgICB1aW50NjRfdCBpdGVtSUQgPSBoaXN0b3J5SXRlbVRvSURNYXAo
KS5nZXQoaXRlbSk7CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW0oaXRlbUlEKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiAKIH0KIAotSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpiYWNrSXRlbSgpCi17Ci0gICAgdWludDY0X3QgYmFja0l0ZW1JRCA9IDA7Ci0gICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0l0ZW0oKSwKLSAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tJdGVtOjpSZXBseShiYWNrSXRlbUlEKSwK
LSAgICAgICAgICAgICBtX3BhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1Rp
bWVvdXQpKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghYmFja0l0ZW1J
RCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBp
ZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoYmFja0l0ZW1JRCk7Ci0gICAgcmV0dXJuIGl0ZW0uZ2V0
KCk7Ci19Ci0KLUhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y3VycmVudEl0
ZW0oKQotewotICAgIHVpbnQ2NF90IGN1cnJlbnRJdGVtSUQgPSAwOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEN1cnJlbnRJdGVtKCksCi0gICAgICAgICAgICAgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRDdXJyZW50SXRlbTo6UmVwbHkoY3VycmVudEl0ZW1JRCks
Ci0gICAgICAgICAgICAgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Tm9U
aW1lb3V0KSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIWN1cnJlbnRJ
dGVtSUQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
ID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGN1cnJlbnRJdGVtSUQpOwotICAgIHJldHVybiBp
dGVtLmdldCgpOwotfQotCi1IaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmZv
cndhcmRJdGVtKCkKK0hpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0
SW5kZXgoaW50IGl0ZW1JbmRleCkKIHsKLSAgICB1aW50NjRfdCBmb3J3YXJkSXRlbUlEID0gMDsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkSXRlbSgpLAotICAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZEl0ZW06OlJlcGx5
KGZvcndhcmRJdGVtSUQpLAotICAgICAgICAgICAgIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6
OkNvbm5lY3Rpb246Ok5vVGltZW91dCkpIHsKKyAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQogCi0gICAgaWYgKCFmb3J3YXJkSXRlbUlEKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGlkVG9IaXN0b3J5SXRlbU1hcCgp
LmdldChmb3J3YXJkSXRlbUlEKTsKLSAgICByZXR1cm4gaXRlbS5nZXQoKTsKLX0KLQotSGlzdG9y
eUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleChpbnQgaXRlbUluZGV4
KQotewogICAgIHVpbnQ2NF90IGl0ZW1JRCA9IDA7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tG
b3J3YXJkSXRlbUF0SW5kZXgoaXRlbUluZGV4KSwKICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShpdGVtSUQpLApAQCAtMjAz
LDM4ICsxNDQsMTEgQEAgSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdAog
ICAgIHJldHVybiBpdGVtLmdldCgpOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVtVmVjdG9yJikKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9y
d2FyZExpc3RXaXRoTGltaXQoaW50LCBIaXN0b3J5SXRlbVZlY3RvciYpCi17Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLWludCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2FwYWNp
dHkoKQotewotICAgIHJldHVybiBtX2NhcGFjaXR5OwotfQotCi12b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpzZXRDYXBhY2l0eShpbnQgY2FwYWNpdHkpCi17Ci0gICAgbV9jYXBhY2l0eSA9
IGNhcGFjaXR5OwotfQotCi1ib29sIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjplbmFibGVkKCkK
LXsKLSAgICByZXR1cm4gbV9lbmFibGVkOwotfQotCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtX2VuYWJsZWQgPSBlbmFibGVk
OwotfQotCiBpbnQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKQogewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGludCBiYWNrTGlzdENv
dW50ID0gMDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCks
CiAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlz
dENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwKQEAgLTI0Nyw2ICsxNjEsOSBAQCBpbnQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291CiAKIGludCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpCiB7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAg
IHJldHVybiAwOworCiAgICAgaW50IGZvcndhcmRMaXN0Q291bnQgPSAwOwogICAgIGlmICghV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwKICAgICAgICAgICAgICBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZv
cndhcmRMaXN0Q291bnQpLApAQCAtMjU3LDMwICsxNzQsMjAgQEAgaW50IFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpmb3J3YXJkTGlzdAogICAgIHJldHVybiBmb3J3YXJkTGlzdENvdW50OwogfQog
Ci1ib29sIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0q
KQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6Y2xvc2UoKQogewotICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBtX3BhZ2UgPSAwOwogfQog
Ci1ib29sIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZWQoKQotewotICAgIHJldHVybiBt
X2Nsb3NlZDsKLX0KLQotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbShI
aXN0b3J5SXRlbSopCitib29sIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojppc0FjdGl2ZSgpCiB7
CisgICAgLy8gRklYTUU6IFNob3VsZCBjaGVjayB0aGUgdGhlIGxpc3QgaXMgZW5hYmxlZCBhbmQg
aGFzIG5vbi16ZXJvIGNhcGFjaXR5LgorICAgIHJldHVybiB0cnVlOwogfQogCi1IaXN0b3J5SXRl
bVZlY3RvciYgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmVudHJpZXMoKQordm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6Y2xlYXIoKQogewotICAgIHN0YXRpYyBIaXN0b3J5SXRlbVZlY3Rv
ciBub0VudHJpZXM7Ci0gICAgcmV0dXJuIG5vRW50cmllczsKKyAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRDbGVhcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogI2lmIEVOQUJMRShXTUwpCkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNDkgKzM1LDMx
IEBAIGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QgewogcHVibGljOiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RQcm94eT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJCYWNrRm9yd2FyZExpc3RQcm94eShwYWdlKSk7IH0KLSAgICB+
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoKTsKIAogICAgIHN0YXRpYyBXZWJDb3JlOjpIaXN0b3J5
SXRlbSogaXRlbUZvcklEKHVpbnQ2NF90KTsKIAotICAgIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPik7Ci0gICAgdm9pZCBnb0JhY2soKTsKLSAgICB2b2lkIGdv
Rm9yd2FyZCgpOwotICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAg
ICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHko
V2ViUGFnZSopOworCisgICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4pOworCisgICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKik7CiAgICAgICAgIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBiYWNrSXRl
bSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpOwotICAgIFdlYkNv
cmU6Okhpc3RvcnlJdGVtKiBmb3J3YXJkSXRlbSgpOwotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBpdGVtQXRJbmRleChpbnQpOwotCi0gICAgdm9pZCBiYWNrTGlzdFdpdGhMaW1pdChpbnQsIFdl
YkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yJik7Ci0gICAgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1p
dChpbnQsIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yJik7Ci0KLSAgICBpbnQgY2FwYWNpdHko
KTsKLSAgICB2b2lkIHNldENhcGFjaXR5KGludCk7Ci0gICAgYm9vbCBlbmFibGVkKCk7Ci0gICAg
dm9pZCBzZXRFbmFibGVkKGJvb2wpOwotICAgIGludCBiYWNrTGlzdENvdW50KCk7Ci0gICAgaW50
IGZvcndhcmRMaXN0Q291bnQoKTsKLSAgICBib29sIGNvbnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0
b3J5SXRlbSopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4
KGludCk7CisgICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpOworICAgIHZpcnR1YWwgaW50
IGZvcndhcmRMaXN0Q291bnQoKTsKIAotICAgIHZvaWQgY2xvc2UoKTsKLSAgICBib29sIGNsb3Nl
ZCgpOwotICAgIAotICAgIHZvaWQgcmVtb3ZlSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwot
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzKCk7CisgICAgdmlydHVhbCBi
b29sIGlzQWN0aXZlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKICAgICAKICNpZiBF
TkFCTEUoV01MKQogICAgIHZvaWQgY2xlYXJXTUxQYWdlSGlzdG9yeSgpOwogI2VuZGlmCiAKLXBy
aXZhdGU6Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFnZSopOwotICAgIAogICAg
IFdlYlBhZ2UqIG1fcGFnZTsKLQotICAgIHVuc2lnbmVkIG1fY2FwYWNpdHk7Ci0gICAgYm9vbCBt
X2Nsb3NlZDsKLSAgICBib29sIG1fZW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDcw
NTc0KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIK
ICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCkBA
IC0xMzgsNyArMTM5LDExIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCAKIAogV2ViUGFnZTo6fldlYlBhZ2UoKQogeworICAgIGlmIChtX2JhY2tGb3J3YXJkTGlzdCkK
KyAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmRldGFjaCgpOworCiAgICAgQVNTRVJUKCFtX3Bh
Z2UpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFTU0VSVChtX3BsdWdpblZpZXdzLmlzRW1w
dHkoKSk7CiAjZW5kaWYKQEAgLTkxMCw0ICs5MTUsMTEgQEAgdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOgogICAgIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0
aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiB9CiAKK0luamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0KiBXZWJQYWdlOjpiYWNrRm9yd2FyZExpc3QoKQoreworICAgIGlmICghbV9iYWNrRm9y
d2FyZExpc3QpCisgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0ID0gSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3Q6OmNyZWF0ZSh0aGlzKTsKKyAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3Qu
Z2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERyYXdpbmdBcmVhOwor
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBQYWdlT3ZlcmxheTsK
IGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBXZWJFdmVudDsKQEAgLTczLDE4ICs3NCwyMSBAQCBj
bGFzcyBXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYlBv
cHVwTWVudTsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CisKK3N0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOworc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CisKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogY2xhc3MgV2ViVG91Y2hFdmVudDsKICNlbmRpZgotc3RydWN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM7Ci1zdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3Mg
V2ViUGFnZSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBU
eXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlUGFnZTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKLSAgICB+V2ViUGFnZSgpOworCisgICAgdmlydHVhbCB+V2ViUGFnZSgpOwogCiAg
ICAgdm9pZCBjbG9zZSgpOwogCkBAIC05NCw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTaXplOyB9CiAKKyAgICBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0KCk7CiAgICAgRHJhd2luZ0FyZWEq
IGRyYXdpbmdBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3aW5nQXJlYS5nZXQoKTsgfQotCiAg
ICAgV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKTsKIAogICAgIC8vIC0tIENhbGxlZCBieSB0aGUg
RHJhd2luZ0FyZWEuCkBAIC0yNDAsNiArMjQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxX
ZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsK
KyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q+IG1fYmFja0ZvcndhcmRM
aXN0OwogCiAgICAgU3RyaW5nIG1fY3VzdG9tVXNlckFnZW50OwogCkluZGV4OiBXZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
NzA1NzYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMzIEBACisyMDEwLTEwLTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXRUZXN0UnVu
bmVyIG5lZWRzIHRvIHN1cHBvcnQgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJk
TGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIz
MjIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODE5MzYzMQorCisgICAgICAgIFdlYktpdFRlc3RS
dW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3
YXJkTGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDIzMzMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODE5MzY0MworCisgICAgICAgICogSGlzdG9y
eS9XZWJCYWNrRm9yd2FyZExpc3QubW06CisgICAgICAgIChjb3JlKTogUmV0dXJuIEJhY2tGb3J3
YXJkTGlzdEltcGwuCisgICAgICAgIChraXQpOiBUYWtlIEJhY2tGb3J3YXJkTGlzdEltcGwuCisg
ICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpdKTog
VXNlIEJhY2tGb3J3YXJkTGlzdEltcGwuCisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBk
ZWFsbG9jXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgZmluYWxpemVd
KTogRGl0dG8uCisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBkZXNjcmlwdGlvbl0pOiBE
aXR0by4KKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IHNldFBhZ2VDYWNoZVNpemU6XSk6
IERpdHRvLgorICAgICAgICAoLVtXZWJCYWNrRm9yd2FyZExpc3QgcGFnZUNhY2hlU2l6ZV0pOiBE
aXR0by4KKyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsLmg6IERp
dHRvLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAoLVtXZWJG
cmFtZVZpZXcga2V5RG93bjpdKTogRGl0dG8uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IGluaXRXaXRoQ29kZXI6XSk6IERpdHRvLgorICAgICAgICAo
LVtXZWJWaWV3IGVuY29kZVdpdGhDb2RlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dlYlZpZXcg
YmFja0ZvcndhcmRMaXN0XSk6IERpdHRvLgorICAgICAgICAoLVtXZWJWaWV3IHNldE1haW50YWlu
c0JhY2tGb3J3YXJkTGlzdDpdKTogRGl0dG8uCisKIDIwMTAtMTAtMjYgIEplbm4gQnJhaXRod2Fp
dGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRp
dG92LgpJbmRleDogV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCShyZXZp
c2lvbiA3MDU3NCkKKysrIFdlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYzLDE1ICs2MywxNSBAQCBzdGF0aWMgQmFja0ZvcndhcmRMaXN0
TWFwJiBiYWNrRm9yd2FyZExpCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJCYWNrRm9yd2FyZExpc3Qg
KFdlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsKQogCi1CYWNrRm9yd2FyZExpc3QqIGNvcmUoV2Vi
QmFja0ZvcndhcmRMaXN0ICp3ZWJCYWNrRm9yd2FyZExpc3QpCitCYWNrRm9yd2FyZExpc3RJbXBs
KiBjb3JlKFdlYkJhY2tGb3J3YXJkTGlzdCAqd2ViQmFja0ZvcndhcmRMaXN0KQogewogICAgIGlm
ICghd2ViQmFja0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEJhY2tGb3J3YXJkTGlzdCo+KHdlYkJhY2tGb3J3YXJkTGlzdC0+X3By
aXZhdGUpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwq
Pih3ZWJCYWNrRm9yd2FyZExpc3QtPl9wcml2YXRlKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0
ICpraXQoQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QpCitXZWJCYWNrRm9yd2FyZExp
c3QgKmtpdChCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExpc3QpCiB7CiAgICAgaWYg
KCFiYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04Miw3ICs4Miw3IEBA
IFdlYkJhY2tGb3J3YXJkTGlzdCAqa2l0KEJhY2tGb3J3YXJkTGlzdCoKICAgICByZXR1cm4gW1tb
V2ViQmFja0ZvcndhcmRMaXN0IGFsbG9jXSBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpiYWNrRm9y
d2FyZExpc3RdIGF1dG9yZWxlYXNlXTsKIH0KIAotLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExp
c3Q6KFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiliYWNrRm9yd2FyZExpc3QKKy0gKGlkKWlu
aXRXaXRoQmFja0ZvcndhcmRMaXN0OihQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdEltcGw+KWJh
Y2tGb3J3YXJkTGlzdAogeyAgIAogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5k
T25lKCk7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTExNyw3ICsxMTcsNyBAQCAtICh2
b2lkKWRlYWxsb2MKICAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5U
aHJlYWQoW1dlYkJhY2tGb3J3YXJkTGlzdCBjbGFzc10sIHNlbGYpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUoc2VsZik7Cisg
ICAgQmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29yZShzZWxmKTsKICAg
ICBBU1NFUlQoYmFja0ZvcndhcmRMaXN0KTsKICAgICBpZiAoYmFja0ZvcndhcmRMaXN0KSB7CiAg
ICAgICAgIEFTU0VSVChiYWNrRm9yd2FyZExpc3QtPmNsb3NlZCgpKTsKQEAgLTEzMSw3ICsxMzEs
NyBAQCAtICh2b2lkKWRlYWxsb2MKIC0gKHZvaWQpZmluYWxpemUKIHsKICAgICBXZWJDb3JlVGhy
ZWFkVmlvbGF0aW9uQ2hlY2tSb3VuZE9uZSgpOwotICAgIEJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0ID0gY29yZShzZWxmKTsKKyAgICBCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9y
d2FyZExpc3QgPSBjb3JlKHNlbGYpOwogICAgIEFTU0VSVChiYWNrRm9yd2FyZExpc3QpOwogICAg
IGlmIChiYWNrRm9yd2FyZExpc3QpIHsKICAgICAgICAgQVNTRVJUKGJhY2tGb3J3YXJkTGlzdC0+
Y2xvc2VkKCkpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIC0oTlNTdHJpbmcgKilkZXNjcmlwdGlvbgog
ICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVxuIl07ICAgIAogICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiV2Vi
QmFja0ZvcndhcmRMaXN0OlxuIl07CiAgICAgCi0gICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9y
d2FyZExpc3QgPSBjb3JlKHNlbGYpOworICAgIEJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3
YXJkTGlzdCA9IGNvcmUoc2VsZik7CiAgICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGVudHJpZXMgPSBi
YWNrRm9yd2FyZExpc3QtPmVudHJpZXMoKTsKICAgICAKICAgICB1bnNpZ25lZCBzaXplID0gZW50
cmllcy5zaXplKCk7CkBAIC0yOTMsMTQgKzI5MywxMiBAQCAtKE5TU3RyaW5nICopZGVzY3JpcHRp
b24KIAogLSAodm9pZClzZXRQYWdlQ2FjaGVTaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKLSAgICBB
U1NFUlQoY29yZShzZWxmKS0+aXNCYWNrRm9yd2FyZExpc3RJbXBsKCkpOwotICAgIFtraXQoc3Rh
dGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0SW1wbCo+KGNvcmUoc2VsZikpLT5wYWdlKCkpIHNldFVz
ZXNQYWdlQ2FjaGU6c2l6ZSAhPSAwXTsKKyAgICBba2l0KGNvcmUoc2VsZiktPnBhZ2UoKSkgc2V0
VXNlc1BhZ2VDYWNoZTpzaXplICE9IDBdOwogfQogCiAtIChOU1VJbnRlZ2VyKXBhZ2VDYWNoZVNp
emUKIHsKLSAgICBBU1NFUlQoY29yZShzZWxmKS0+aXNCYWNrRm9yd2FyZExpc3RJbXBsKCkpOwot
ICAgIHJldHVybiBba2l0KHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPihjb3JlKHNl
bGYpKS0+cGFnZSgpKSB1c2VzUGFnZUNhY2hlXSA/IHBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpIDog
MDsKKyAgICByZXR1cm4gW2tpdChjb3JlKHNlbGYpLT5wYWdlKCkpIHVzZXNQYWdlQ2FjaGVdID8g
cGFnZUNhY2hlKCktPmNhcGFjaXR5KCkgOiAwOwogfQogCiAtIChpbnQpYmFja0xpc3RDb3VudApJ
bmRleDogV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdEludGVybmFs
LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJk
TGlzdEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEyICszMCwxMiBAQAogI2ltcG9y
dCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEJh
Y2tGb3J3YXJkTGlzdDsKKyAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3RJbXBsOwogfQogCi1XZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3QqIGNvcmUoV2ViQmFja0ZvcndhcmRMaXN0ICopOwotV2ViQmFj
a0ZvcndhcmRMaXN0ICpraXQoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kik7CitXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKFdlYkJhY2tGb3J3YXJkTGlzdCAqKTsKK1dlYkJhY2tG
b3J3YXJkTGlzdCAqa2l0KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqKTsKIAogQGludGVy
ZmFjZSBXZWJCYWNrRm9yd2FyZExpc3QgKFdlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsKQotLSAo
aWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFBhc3NSZWZQdHI8V2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0PiliYWNrRm9yd2FyZExpc3Q7CistIChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDoo
UGFzc1JlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsPiliYWNrRm9yd2FyZExpc3Q7
CiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDcwNTc0
KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
ZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0JhY2tG
b3J3YXJkTGlzdEltcGwuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+
CkBAIC03MDgsNyArNzA4LDcgQEAgLSAodm9pZClrZXlEb3duOihOU0V2ZW50ICopZXZlbnQKICAg
ICBpbnQgaW5kZXgsIGNvdW50OwogICAgIEJPT0wgY2FsbFN1cGVyID0gWUVTOwogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBbc2VsZiBfd2ViX2ZyYW1lXTsKLSAgICBCT09MIG1haW50YWluc0JhY2tG
b3J3YXJkTGlzdCA9IGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRM
aXN0KCktPmVuYWJsZWQoKSA/IFlFUyA6IE5POworICAgIEJPT0wgbWFpbnRhaW5zQmFja0Zvcndh
cmRMaXN0ID0gY29yZUZyYW1lICYmIHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPihj
b3JlRnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRMaXN0KCkpLT5lbmFibGVkKCkgPyBZRVMgOiBO
TzsKICAgICAKICAgICBjb3VudCA9IFtjaGFyYWN0ZXJzIGxlbmd0aF07CiAgICAgZm9yIChpbmRl
eCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pT
VmFsdWVSZWYuaD4KICNpbXBvcnQgPFdlYkNvcmUvQWJzdHJhY3REYXRhYmFzZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9C
YWNrRm9yd2FyZExpc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0SW1wbC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaD4KQEAgLTI5
ODAsNyArMjk4MCw3IEBAIC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAK
ICAgICAgICAgTE9HKEVuY29kaW5nLCAiRnJhbWVOYW1lID0gJUAsIEdyb3VwTmFtZSA9ICVALCB1
c2VCYWNrRm9yd2FyZExpc3QgPSAlZFxuIiwgZnJhbWVOYW1lLCBncm91cE5hbWUsIChpbnQpdXNl
QmFja0ZvcndhcmRMaXN0KTsKICAgICAgICAgW3Jlc3VsdCBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOmZyYW1lTmFtZSBncm91cE5hbWU6Z3JvdXBOYW1lIHVzZXNEb2N1bWVudFZp
ZXdzOllFU107Ci0gICAgICAgIFtyZXN1bHQgcGFnZV0tPmJhY2tGb3J3YXJkTGlzdCgpLT5zZXRF
bmFibGVkKHVzZUJhY2tGb3J3YXJkTGlzdCk7CisgICAgICAgIHN0YXRpY19jYXN0PEJhY2tGb3J3
YXJkTGlzdEltcGwqPihbcmVzdWx0IHBhZ2VdLT5iYWNrRm9yd2FyZExpc3QoKSktPnNldEVuYWJs
ZWQodXNlQmFja0ZvcndhcmRMaXN0KTsKICAgICAgICAgcmVzdWx0LT5fcHJpdmF0ZS0+YWxsb3dz
VW5kbyA9IGFsbG93c1VuZG87CiAgICAgICAgIGlmIChwcmVmZXJlbmNlcykKICAgICAgICAgICAg
IFtyZXN1bHQgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOwpAQCAtMzAwNCw3ICszMDA0LDcg
QEAgLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZAogICAgIC8vIFJlc3Rv
cmUgdGhlIHN1YnZpZXdzIHdlIHNldCBhc2lkZS4KICAgICBfc3Vidmlld3MgPSBvcmlnaW5hbFN1
YnZpZXdzOwogCi0gICAgQk9PTCB1c2VCYWNrRm9yd2FyZExpc3QgPSBfcHJpdmF0ZS0+cGFnZSAm
JiBfcHJpdmF0ZS0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCktPmVuYWJsZWQoKTsKKyAgICBCT09M
IHVzZUJhY2tGb3J3YXJkTGlzdCA9IF9wcml2YXRlLT5wYWdlICYmIHN0YXRpY19jYXN0PEJhY2tG
b3J3YXJkTGlzdEltcGwqPihfcHJpdmF0ZS0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpLT5lbmFi
bGVkKCk7CiAgICAgaWYgKFtlbmNvZGVyIGFsbG93c0tleWVkQ29kaW5nXSkgewogICAgICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6W1tzZWxmIG1haW5GcmFtZV0gbmFtZV0gZm9yS2V5OkAiRnJh
bWVOYW1lIl07CiAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpbc2VsZiBncm91cE5hbWVd
IGZvcktleTpAIkdyb3VwTmFtZSJdOwpAQCAtMzMxNSwxNiArMzMxNSwxNyBAQCAtIChXZWJCYWNr
Rm9yd2FyZExpc3QgKiliYWNrRm9yd2FyZExpc3QKIHsKICAgICBpZiAoIV9wcml2YXRlLT5wYWdl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmICghX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3
YXJkTGlzdCgpLT5lbmFibGVkKCkpCisgICAgQmFja0ZvcndhcmRMaXN0SW1wbCogbGlzdCA9IHN0
YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPihfcHJpdmF0ZS0+cGFnZS0+YmFja0Zvcndh
cmRMaXN0KCkpOworICAgIGlmICghbGlzdC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpKTsKKyAg
ICByZXR1cm4ga2l0KGxpc3QpOwogfQogCiAtICh2b2lkKXNldE1haW50YWluc0JhY2tGb3J3YXJk
TGlzdDooQk9PTClmbGFnCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0
dXJuOwotICAgIF9wcml2YXRlLT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+c2V0RW5hYmxlZChm
bGFnKTsKKyAgICBzdGF0aWNfY2FzdDxCYWNrRm9yd2FyZExpc3RJbXBsKj4oX3ByaXZhdGUtPnBh
Z2UtPmJhY2tGb3J3YXJkTGlzdCgpKS0+c2V0RW5hYmxlZChmbGFnKTsKIH0KIAogLSAoQk9PTCln
b0JhY2sKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwNTc2KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMTAtMTAtMjYgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84MTkz
NjMxCisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGxheW91dFRl
c3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMworICAgICAgICByZGFyOi8vcHJvYmxlbS84
MTkzNjQzCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0luamVj
dGVkQnVuZGxlLnhjY29uZmlnOgorICAgICAgICBSZW5hbWVkIHRoZSBwcm9kdWN0IHRvIFdlYktp
dFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSB0byBhdm9pZAorICAgICAgICBuYW1lIGNvbmZsaWN0
cyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAg
IEFkZGVkIGR1bXBCYWNrRm9yd2FyZExpc3QgYW5kIGNsZWFyQmFja0ZvcndhcmRMaXN0LgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpJbmplY3RlZEJ1bmRsZSk6IFJlbW92
ZWQgaW5pdGlhbGl6YXRpb24gb2YgbV9tYWluUGFnZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZENyZWF0ZVBhZ2UpOiBSZW1vdmVkIHVubmVlZGVkIHVuZGVyc2NvcmUuCisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKTogRGl0dG8uCisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkaWRDcmVhdGVQYWdlKTogQ2hhbmdlZCBjb2RlIHRvIHVzZSBt
X3BhZ2VzCisgICAgICAgIGluc3RlYWQgb2YgbV9tYWluUGFnZSBhbmQgbV9vdGhlclBhZ2VzLgor
ICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6d2lsbERlc3Ryb3lQYWdlKTogRGl0dG8uCisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwYWdlKTogRGl0dG8uCisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmRvbmUpOiBEaXR0by4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6
OmNsb3NlT3RoZXJQYWdlcyk6IERpdHRvLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6
ZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcyk6IEFkZGVkLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOiBDaGFuZ2VkCisg
ICAgICAgIHBhZ2UgZnVuY3Rpb24gdG8gbG9uZ2VyIGJlIGlubGluZSwgYW5kIHBhZ2VDb3VudCBm
dW5jdGlvbgorICAgICAgICB0byB1c2UgbV9wYWdlcy4gQWRkZWQgZHVtcEJhY2tGb3J3YXJkTGlz
dHNGb3JBbGxQYWdlcywgYW5kCisgICAgICAgIHJlbW92ZWQgc29tZSB1bmRlcnNjb3Jlcy4gUmVw
bGFjZWQgbV9tYWluUGFnZSBhbmQgbV9vdGhlclBhZ2VhcworICAgICAgICB3aXRoIG1fcGFnZXMu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmFkb3B0V0spOiBBZGRlZC4KKyAgICAgICAgKFdU
Ujo6aGFzUHJlZml4KTogQWRkZWQuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
cmVzZXQpOiBBZGRlZCBjb2RlIHRvIHNldCB1cAorICAgICAgICBtX3ByZXZpb3VzVGVzdEJhY2tG
b3J3YXJkTGlzdEl0ZW0uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCk6
IEFkZGVkIGNvZGUgdG8gY2FsbAorICAgICAgICBkdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBh
Z2VzLgorICAgICAgICAoV1RSOjpjb21wYXJlQnlUYXJnZXROYW1lKTogQWRkZWQuCisgICAgICAg
IChXVFI6OmR1bXBCYWNrRm9yd2FyZExpc3RJdGVtKTogQWRkZWQuCisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZHVtcEJhY2tGb3J3YXJkTGlzdCk6IEFkZGVkLgorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDog
QWRkZWQKKyAgICAgICAgZHVtcEJhY2tGb3J3YXJkTGlzdCBhbmQgbV9wcmV2aW91c1Rlc3RCYWNr
Rm9yd2FyZExpc3RJdGVtLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RD
b250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6IEluaXRpYWxpemUKKyAgICAgICAgbV9z
aG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3MgdG8gZmFsc2UuCisgICAgICAg
IChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tGb3J3YXJkTGlzdCk6IEFkZGVk
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICBBZGRlZCBkdW1wQmFja0ZvcndhcmRMaXN0LCBjbGVhckJh
Y2tGb3J3YXJkTGlzdCwKKyAgICAgICAgc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxX
aW5kb3dzLCBhbmQKKyAgICAgICAgbV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdp
bmRvd3MuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUpOiBTZXQgdXAKKyAgICAg
ICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZS4KKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmg6IERpdHRvLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgQWRk
ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOiBEaXR0by4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBSZW5hbWVkIGJ1bmRsZSB0byBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGUgKHNlZSBhYm92ZSkuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRoKTogRGl0dG8uCisKIDIwMTAtMTAtMjYgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFyIHVwIGNvbmZ1c2lv
biBiZXR3ZWVuICIzRCByZW5kZXJpbmciIGFuZCAiYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmciCklu
ZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKICAgICAgICAgMCwKICAgICAgICAgdGhp
cywKICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsCi0gICAgICAg
IDAKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZQogICAgIH07CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQobV9jb250ZXh0
LmdldCgpLCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQpOwogCkBAIC0zMTQsMTEgKzMxNCwyMSBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyCiAgICAgc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9
CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIFdLVHlwZVJlZiogcmV0dXJuRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAqcmV0dXJuRGF0YSA9IHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9k
eSkubGVha1JlZigpOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5KQogewogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CiB9CiAKK1dLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVz
c2FnZUJvZHkpOworfQorCiAvLyBXS1BhZ2VMb2FkZXJDbGllbnQKIAogdm9pZCBUZXN0Q29udHJv
bGxlcjo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCkluZGV4OiBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3MDU3NCkK
KysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOCArNzEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIC8vIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgV0tU
eXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5KTsKKyAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IGRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUs
IFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CiAKICAgICAvLyBXS1BhZ2VMb2FkZXJDbGllbnQKICAg
ICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopOwpJbmRleDogV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAJKHJldmlz
aW9uIDcwNTc0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw0ICsxODIsMTAgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
CitXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hy
b25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIC8qbWVzc2FnZU5hbWUq
LywgV0tUeXBlUmVmIC8qbWVzc2FnZUJvZHkqLykKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBXZWJLaXRU
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCShyZXZpc2lvbiA3MDU3
NCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludm9rZSgp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CisgICAgV0tSZXRhaW5QdHI8
V0tUeXBlUmVmPiBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgZHVtcChjb25zdCBjaGFyKik7CkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0luamVjdGVkQnVuZGxlLnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvSW5q
ZWN0ZWRCdW5kbGUueGNjb25maWcJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9JbmplY3RlZEJ1bmRsZS54Y2NvbmZpZwkod29y
a2luZyBjb3B5KQpAQCAtMjEsNCArMjEsNCBAQAogLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAvLyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKIAotUFJPRFVDVF9OQU1FID0gSW5qZWN0ZWRCdW5kbGUKK1BST0RVQ1RfTkFNRSA9IFdl
YktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2YXRlRm9udHMuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZVBhZ2UuaCIKKyNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KQEAgLTQ2LDIyICs0NywyMSBA
QCBJbmplY3RlZEJ1bmRsZSYgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpCiAKIEluamVjdGVkQnVu
ZGxlOjpJbmplY3RlZEJ1bmRsZSgpCiAgICAgOiBtX2J1bmRsZSgwKQotICAgICwgbV9tYWluUGFn
ZSgwKQogICAgICwgbV9zdGF0ZShJZGxlKQogewogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpf
ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFn
ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRDcmVhdGVQYWdlKHBhZ2UpOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlOjpfd2lsbERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIEluamVjdGVkQnVu
ZGxlOjp3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+d2lsbERlc3Ryb3lQYWdl
KHBhZ2UpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpfZGlkUmVjZWl2ZU1lc3NhZ2UoV0tC
dW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAg
IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQpAQCAt
NzMsOSArNzMsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKFdLQnVuZGxlCiAg
ICAgV0tCdW5kbGVDbGllbnQgY2xpZW50ID0gewogICAgICAgICAwLAogICAgICAgICB0aGlzLAot
ICAgICAgICBfZGlkQ3JlYXRlUGFnZSwKLSAgICAgICAgX3dpbGxEZXN0cm95UGFnZSwKLSAgICAg
ICAgX2RpZFJlY2VpdmVNZXNzYWdlCisgICAgICAgIGRpZENyZWF0ZVBhZ2UsCisgICAgICAgIHdp
bGxEZXN0cm95UGFnZSwKKyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UKICAgICB9OwogICAgIFdL
QnVuZGxlU2V0Q2xpZW50KG1fYnVuZGxlLCAmY2xpZW50KTsKIApAQCAtODUsMjAgKzg1LDI1IEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoV0tCdW5kbGUKIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKLSAgICAvLyBG
SVhNRTogd2UgcmVhbGx5IG5lZWQgdGhlIG1haW4gcGFnZSByZWYgdG8gYmUgc2VudCBvdmVyIGZy
b20gdGhlIHVpIHByb2Nlc3MKLSAgICBPd25QdHI8SW5qZWN0ZWRCdW5kbGVQYWdlPiBwYWdlV3Jh
cHBlciA9IGFkb3B0UHRyKG5ldyBJbmplY3RlZEJ1bmRsZVBhZ2UocGFnZSkpOwotICAgIGlmICgh
bV9tYWluUGFnZSkKLSAgICAgICAgbV9tYWluUGFnZSA9IHBhZ2VXcmFwcGVyLnJlbGVhc2UoKTsK
LSAgICBlbHNlCi0gICAgICAgIG1fb3RoZXJQYWdlcy5hZGQocGFnZSwgcGFnZVdyYXBwZXIubGVh
a1B0cigpKTsKKyAgICBtX3BhZ2VzLmFwcGVuZChhZG9wdFB0cihuZXcgSW5qZWN0ZWRCdW5kbGVQ
YWdlKHBhZ2UpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OndpbGxEZXN0cm95UGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSkKIHsKLSAgICBpZiAobV9tYWluUGFnZSAmJiBtX21haW5QYWdl
LT5wYWdlKCkgPT0gcGFnZSkKLSAgICAgICAgbV9tYWluUGFnZS5jbGVhcigpOwotICAgIGVsc2UK
LSAgICAgICAgZGVsZXRlIG1fb3RoZXJQYWdlcy50YWtlKHBhZ2UpOworICAgIHNpemVfdCBzaXpl
ID0gbV9wYWdlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fcGFnZXNbaV0tPnBhZ2UoKSA9PSBwYWdlKSB7CisgICAgICAgICAg
ICBtX3BhZ2VzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQorCitJbmplY3RlZEJ1bmRsZVBhZ2UqIEluamVjdGVkQnVuZGxlOjpwYWdlKCkgY29uc3QK
K3sKKyAgICAvLyBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gaGF2ZSB0aGUgVUkgcHJvY2VzcyBzZW5k
IG92ZXIgYSByZWZlcmVuY2UgdG8gdGhlIG1haW4KKyAgICAvLyBwYWdlIGluc3RlYWQgb2YganVz
dCBhc3N1bWluZyBpdCdzIHRoZSBmaXJzdCBvbmUuCisgICAgcmV0dXJuIG1fcGFnZXNbMF0uZ2V0
KCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCkBAIC0xMzQsMTQgKzEzOSwx
NCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpiZWdpblRlc3RpbmcoKQogCiAgICAgV0tCdW5kbGVS
ZW1vdmVBbGxVc2VyQ29udGVudChtX2J1bmRsZSk7CiAKLSAgICBtX21haW5QYWdlLT5yZXNldCgp
OworICAgIHBhZ2UoKS0+cmVzZXQoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZG9uZSgp
CiB7CiAgICAgbV9zdGF0ZSA9IFN0b3BwaW5nOwogCi0gICAgbV9tYWluUGFnZS0+c3RvcExvYWRp
bmcoKTsKKyAgICBwYWdlKCktPnN0b3BMb2FkaW5nKCk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gZG9uZU1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJEb25lIikpOwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkb25lTWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobV9vdXRwdXRTdHJl
YW0uc3RyKCkuY19zdHIoKSkpOwpAQCAtMTUzLDEwICsxNTgsMjAgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZTo6ZG9uZSgpCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmNsb3NlT3RoZXJQYWdlcygpCiB7
Ci0gICAgVmVjdG9yPFdLQnVuZGxlUGFnZVJlZj4gcGFnZXM7Ci0gICAgY29weUtleXNUb1ZlY3Rv
cihtX290aGVyUGFnZXMsIHBhZ2VzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZ2Vz
LnNpemUoKTsgKytpKQotICAgICAgICBXS0J1bmRsZVBhZ2VDbG9zZShwYWdlc1tpXSk7CisgICAg
VmVjdG9yPFdLQnVuZGxlUGFnZVJlZj4gcGFnZXNUb0Nsb3NlOworICAgIHNpemVfdCBzaXplID0g
bV9wYWdlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIHBhZ2VzVG9DbG9zZS5hcHBlbmQobV9wYWdlc1tpXS0+cGFnZSgpKTsKKyAgICBzaXpl
ID0gcGFnZXNUb0Nsb3NlLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgV0tCdW5kbGVQYWdlQ2xvc2UocGFnZXNUb0Nsb3NlW2ldKTsKK30KKwor
dm9pZCBJbmplY3RlZEJ1bmRsZTo6ZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcygpCit7
CisgICAgc2l6ZV90IHNpemUgPSBtX3BhZ2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgbV9wYWdlc1tpXS0+ZHVtcEJhY2tGb3J3YXJkTGlz
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5
IEBACiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0VGVzdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRlIDxzc3RyZWFtPgogCkBAIC01Mywx
MCArNTMsMTIgQEAgcHVibGljOgogICAgIEdDQ29udHJvbGxlciogZ2NDb250cm9sbGVyKCkgeyBy
ZXR1cm4gbV9nY0NvbnRyb2xsZXIuZ2V0KCk7IH0KICAgICBFdmVudFNlbmRpbmdDb250cm9sbGVy
KiBldmVudFNlbmRpbmdDb250cm9sbGVyKCkgeyByZXR1cm4gbV9ldmVudFNlbmRpbmdDb250cm9s
bGVyLmdldCgpOyB9CiAKLSAgICBJbmplY3RlZEJ1bmRsZVBhZ2UqIHBhZ2UoKSB7IHJldHVybiBt
X21haW5QYWdlLmdldCgpOyB9Ci0gICAgc2l6ZV90IHBhZ2VDb3VudCgpIHsgcmV0dXJuICEhbV9t
YWluUGFnZSArIG1fb3RoZXJQYWdlcy5zaXplKCk7IH0KKyAgICBJbmplY3RlZEJ1bmRsZVBhZ2Uq
IHBhZ2UoKSBjb25zdDsKKyAgICBzaXplX3QgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlcy5zaXplKCk7IH0KICAgICB2b2lkIGNsb3NlT3RoZXJQYWdlcygpOwogCisgICAgdm9pZCBk
dW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFBhZ2VzKCk7CisKICAgICB2b2lkIGRvbmUoKTsKICAg
ICBzdGQ6Om9zdHJpbmdzdHJlYW0mIG9zKCkgeyByZXR1cm4gbV9vdXRwdXRTdHJlYW07IH0KIApA
QCAtNjYsMTkgKzY4LDE4IEBAIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoKTsKICAgICB+
SW5qZWN0ZWRCdW5kbGUoKTsKIAotICAgIHN0YXRpYyB2b2lkIF9kaWRDcmVhdGVQYWdlKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwotICAgIHN0YXRpYyB2b2lkIF93aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3Rh
dGljIHZvaWQgX2RpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxs
RGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYs
IFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwogCi0gICAgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKLSAgICB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CisgICAgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUGFnZVJlZik7CisgICAgdm9pZCB3aWxs
RGVzdHJveVBhZ2UoV0tCdW5kbGVQYWdlUmVmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCiAgICAg
dm9pZCBiZWdpblRlc3RpbmcoKTsKIAogICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOwotICAgIEhh
c2hNYXA8V0tCdW5kbGVQYWdlUmVmLCBJbmplY3RlZEJ1bmRsZVBhZ2UqPiBtX290aGVyUGFnZXM7
Ci0gICAgT3duUHRyPEluamVjdGVkQnVuZGxlUGFnZT4gbV9tYWluUGFnZTsKKyAgICBWZWN0b3I8
T3duUHRyPEluamVjdGVkQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogCiAgICAgUmVmUHRyPExheW91
dFRlc3RDb250cm9sbGVyPiBtX2xheW91dFRlc3RDb250cm9sbGVyOwogICAgIFJlZlB0cjxHQ0Nv
bnRyb2xsZXI+IG1fZ2NDb250cm9sbGVyOwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFja0Zv
cndhcmRMaXN0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlRnJhbWVQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBh
Z2VQcml2YXRlLmg+CkBAIC0zOCw2ICs0MSwxNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBu
YW1lc3BhY2UgV1RSIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBXS1Jl
dGFpblB0cjxUPiBhZG9wdFdLKFQgaXRlbSkKK3sKKyAgICByZXR1cm4gV0tSZXRhaW5QdHI8VD4o
QWRvcHRXSywgaXRlbSk7Cit9CisKK3N0YXRpYyBib29sIGhhc1ByZWZpeChjb25zdCBzdHJpbmcm
IHN0cmluZywgY29uc3Qgc3RyaW5nJiBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0cmluZy5sZW5n
dGgoKSA+PSBwcmVmaXgubGVuZ3RoKCkgJiYgc3RyaW5nLnN1YnN0cigwLCBwcmVmaXgubGVuZ3Ro
KCkpID09IHByZWZpeDsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcHJvcGVydHlWYWx1ZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgaWYgKCFvYmplY3QpCkBAIC0yMjgsNiArMjQxLDggQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OnJlc2V0KCkKIAogICAgIFdLQnVuZGxlUGFnZVNldFBhZ2Vab29tRmFj
dG9yKG1fcGFnZSwgMSk7CiAgICAgV0tCdW5kbGVQYWdlU2V0VGV4dFpvb21GYWN0b3IobV9wYWdl
LCAxKTsKKworICAgIG1fcHJldmlvdXNUZXN0QmFja0ZvcndhcmRMaXN0SXRlbSA9IGFkb3B0V0so
V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RDb3B5SXRlbUF0SW5kZXgoV0tCdW5kbGVQYWdlR2V0QmFj
a0ZvcndhcmRMaXN0KG1fcGFnZSksIDApKTsKIH0KIAogLy8gTG9hZGVyIENsaWVudCBDYWxsYmFj
a3MKQEAgLTQxMyw2ICs0MjgsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcCgpCiAg
ICAgZWxzZSBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVy
KCktPnNob3VsZER1bXBNYWluRnJhbWVTY3JvbGxQb3NpdGlvbigpKQogICAgICAgICBkdW1wRnJh
bWVTY3JvbGxQb3NpdGlvbihXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUobV9wYWdlKSk7CiAKKyAg
ICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNo
b3VsZER1bXBCYWNrRm9yd2FyZExpc3RzRm9yQWxsV2luZG93cygpKQorICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkuZHVtcEJhY2tGb3J3YXJkTGlzdHNGb3JBbGxQYWdlcygpOworCiAg
ICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmRvbmUoKTsKIH0KIApAQCAtNzY1LDQgKzc4Myw4
OSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0CiAgICAgICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOiIgPDwgbm90aWZpY2F0aW9uTmFtZSA8PCAiXG4iOwogfQogCitz
dGF0aWMgYm9vbCBjb21wYXJlQnlUYXJnZXROYW1lKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bVJlZiBpdGVtMSwgV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0yKQoreworICAg
IHJldHVybiB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlUYXJn
ZXQoaXRlbTEpKSkgPCB0b1NURChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNv
cHlUYXJnZXQoaXRlbTIpKSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RJ
dGVtKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtLCB1bnNpZ25lZCBpbmRlbnQs
IGJvb2wgaXNDdXJyZW50SXRlbSkKK3sKKyAgICB1bnNpZ25lZCBjb2x1bW4gPSAwOworICAgIGlm
IChpc0N1cnJlbnRJdGVtKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygp
IDw8ICJjdXJyLT4iOworICAgICAgICBjb2x1bW4gPSA2OworICAgIH0KKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjb2x1bW47IGkgPCBpbmRlbnQ7IGkrKykKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLm9zKCkgPDwgJyAnOworCisgICAgc3RyaW5nIHVybCA9IHRvU1REKGFkb3B0V0so
V0tVUkxDb3B5U3RyaW5nKGFkb3B0V0soV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVS
TChpdGVtKSkuZ2V0KCkpKSk7CisgICAgaWYgKGhhc1ByZWZpeCh1cmwsICJmaWxlOiIpKSB7Cisg
ICAgICAgIHN0cmluZyBkaXJlY3RvcnlOYW1lID0gIi9MYXlvdXRUZXN0cy8iOworICAgICAgICBz
aXplX3Qgc3RhcnQgPSB1cmwuZmluZChkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgaWYgKHN0YXJ0
ID09IHN0cmluZzo6bnBvcykKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc3RhcnQgKz0gZGlyZWN0b3J5TmFtZS5zaXplKCk7CisgICAgICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICIoZmlsZSB0ZXN0KToiIDw8IHVybC5zdWJzdHIo
c3RhcnQpOworICAgIH0gZWxzZQorICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3Mo
KSA8PCB1cmw7CisKKyAgICBzdHJpbmcgdGFyZ2V0ID0gdG9TVEQoYWRvcHRXSyhXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGFyZ2V0KGl0ZW0pKSk7CisgICAgaWYgKHRhcmdldC5sZW5n
dGgoKSkKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIiAoaW4gZnJh
bWUgXCIiIDw8IHRhcmdldCA8PCAiXCIpIjsKKworICAgIC8vIEZJWE1FOiBOZWVkIFdLQmFja0Zv
cndhcmRMaXN0SXRlbUlzVGFyZ2V0SXRlbS4KKyAgICBpZiAoV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtSXNUYXJnZXRJdGVtKGl0ZW0pKQorICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkub3MoKSA8PCAiICAqKm5hdiB0YXJnZXQqKiI7CisKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkub3MoKSA8PCAnXG4nOworCisgICAgaWYgKFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IGtp
ZHMgPSBhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlDaGlsZHJlbihpdGVt
KSkpIHsKKyAgICAgICAgLy8gU29ydCB0byBlbGltaW5hdGUgYXJiaXRyYXJ5IHJlc3VsdCBvcmRl
cmluZyB3aGljaCBkZWZlYXRzIHJlcHJvZHVjaWJsZSB0ZXN0aW5nLgorICAgICAgICBzaXplX3Qg
c2l6ZSA9IFdLQXJyYXlHZXRTaXplKGtpZHMuZ2V0KCkpOworICAgICAgICBWZWN0b3I8V0tCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBzb3J0ZWRLaWRzKHNpemUpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHNvcnRlZEtpZHNbaV0g
PSBzdGF0aWNfY2FzdDxXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KFdLQXJyYXlHZXRJ
dGVtQXRJbmRleChraWRzLmdldCgpLCBpKSk7CisgICAgICAgIHN0YWJsZV9zb3J0KHNvcnRlZEtp
ZHMuYmVnaW4oKSwgc29ydGVkS2lkcy5lbmQoKSwgY29tcGFyZUJ5VGFyZ2V0TmFtZSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgZHVtcEJh
Y2tGb3J3YXJkTGlzdEl0ZW0oc29ydGVkS2lkc1tpXSwgaW5kZW50ICsgNCwgZmFsc2UpOworICAg
IH0KK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBCYWNrRm9yd2FyZExpc3QoKQor
eworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJcbj09PT09PT09PT09PT09
IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09XG4iOworCisgICAgV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RSZWYgbGlzdCA9IFdLQnVuZGxlUGFnZUdldEJhY2tGb3J3YXJkTGlzdChtX3Bh
Z2UpOworCisgICAgLy8gUHJpbnQgb3V0IGFsbCBpdGVtcyBpbiB0aGUgbGlzdCBhZnRlciBtX3By
ZXZpb3VzVGVzdEJhY2tGb3J3YXJkTGlzdEl0ZW0uCisgICAgLy8gR2F0aGVyIGl0ZW1zIGZyb20g
dGhlIGVuZCBvZiB0aGUgbGlzdCwgdGhlbiBwcmludCB0aGVtIG91dCBmcm9tIG9sZGVzdCB0byBu
ZXdlc3QuCisgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bVJlZj4gPiBpdGVtc1RvUHJpbnQ7CisgICAgZm9yICh1bnNpZ25lZCBpID0gV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RHZXRGb3J3YXJkTGlzdENvdW50KGxpc3QpOyBpOyAtLWkpIHsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtID0gYWRvcHRX
SyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENvcHlJdGVtQXRJbmRleChsaXN0LCBpKSk7CisgICAg
ICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZyBpZiB0aGUgaXRlbSBmcm9tIHRoZSBsYXN0IHRlc3Qg
aXMgaW4gdGhlIGZvcndhcmQgcGFydCBvZiB0aGUgbGlzdC4KKyAgICAgICAgQVNTRVJUKCFXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc1NhbWUoaXRlbS5nZXQoKSwgbV9wcmV2aW91c1Rlc3RC
YWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSk7CisgICAgICAgIGl0ZW1zVG9QcmludC5hcHBlbmQo
aXRlbSk7CisgICAgfQorCisgICAgQVNTRVJUKCFXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1J
c1NhbWUoYWRvcHRXSyhXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENvcHlJdGVtQXRJbmRleChsaXN0
LCAwKSkuZ2V0KCksIG1fcHJldmlvdXNUZXN0QmFja0ZvcndhcmRMaXN0SXRlbS5nZXQoKSkpOwor
CisgICAgaXRlbXNUb1ByaW50LmFwcGVuZChhZG9wdFdLKFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
Q29weUl0ZW1BdEluZGV4KGxpc3QsIDApKSk7CisKKyAgICBpbnQgY3VycmVudEl0ZW1JbmRleCA9
IGl0ZW1zVG9QcmludC5zaXplKCkgLSAxOworCisgICAgaW50IGJhY2tMaXN0Q291bnQgPSBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEdldEJhY2tMaXN0Q291bnQobGlzdCk7CisgICAgZm9yIChpbnQg
aSA9IC0xOyBpID49IC1iYWNrTGlzdENvdW50OyAtLWkpIHsKKyAgICAgICAgV0tSZXRhaW5QdHI8
V0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBpdGVtID0gYWRvcHRXSyhXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdENvcHlJdGVtQXRJbmRleChsaXN0LCBpKSk7CisgICAgICAgIGlmIChXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW1Jc1NhbWUoaXRlbS5nZXQoKSwgbV9wcmV2aW91c1Rlc3RC
YWNrRm9yd2FyZExpc3RJdGVtLmdldCgpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBp
dGVtc1RvUHJpbnQuYXBwZW5kKGl0ZW0pOworICAgIH0KKworICAgIGZvciAoaW50IGkgPSBpdGVt
c1RvUHJpbnQuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgIGR1bXBCYWNrRm9yd2Fy
ZExpc3RJdGVtKGl0ZW1zVG9QcmludFtpXS5nZXQoKSwgOCwgaSA9PSBjdXJyZW50SXRlbUluZGV4
KTsKKworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICI9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIjsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDcw
NTc0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKKyAgICB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3QoKTsK
KwogcHJpdmF0ZToKICAgICAvLyBMb2FkZXIgQ2xpZW50CiAgICAgc3RhdGljIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKQEAgLTExOSw2ICsxMjEsNyBAQCBwcml2YXRl
OgogCiAgICAgV0tCdW5kbGVQYWdlUmVmIG1fcGFnZTsKICAgICBXS1JldGFpblB0cjxXS0J1bmRs
ZVNjcmlwdFdvcmxkUmVmPiBtX3dvcmxkOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbVJlZj4gbV9wcmV2aW91c1Rlc3RCYWNrRm9yd2FyZExpc3RJdGVtOwogICAg
IGJvb2wgbV9pc0xvYWRpbmc7CiB9OwogCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNzA1NzQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgog
I2luY2x1ZGUgIkpTTGF5b3V0VGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZUZyYW1lUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0
ZS5oPgpAQCAtODUsNiArODYsNyBAQCBQYXNzUmVmUHRyPExheW91dFRlc3RDb250cm9sbGVyPiBM
YXlvdXRUCiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoKQogICAg
IDogbV93aGF0VG9EdW1wKFJlbmRlclRyZWUpCiAgICAgLCBtX3Nob3VsZER1bXBBbGxGcmFtZVNj
cm9sbFBvc2l0aW9ucyhmYWxzZSkKKyAgICAsIG1fc2hvdWxkRHVtcEJhY2tGb3J3YXJkTGlzdHNG
b3JBbGxXaW5kb3dzKGZhbHNlKQogICAgICwgbV9zaG91bGRBbGxvd0VkaXRpbmcodHJ1ZSkKICAg
ICAsIG1fc2hvdWxkQ2xvc2VFeHRyYVdpbmRvd3MoZmFsc2UpCiAgICAgLCBtX2R1bXBFZGl0aW5n
Q2FsbGJhY2tzKGZhbHNlKQpAQCAtMjQwLDYgKzI0MiwxMSBAQCB1bnNpZ25lZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6d2luZG93Q291CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaGFyZWQo
KS5wYWdlQ291bnQoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y2xlYXJCYWNr
Rm9yd2FyZExpc3QoKQoreworICAgIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0Q2xlYXIoV0tCdW5k
bGVQYWdlR2V0QmFja0ZvcndhcmRMaXN0KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCkt
PnBhZ2UoKSkpOworfQorCiAvLyBPYmplY3QgQ3JlYXRpb24KIAogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6bWFrZVdpbmRvd09iamVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkluZGV4OiBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3MDU3NCkKKysrIFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlE
b25lKCk7CiAKICAgICAvLyBPdGhlciBkdW1waW5nLgorICAgIHZvaWQgZHVtcEJhY2tGb3J3YXJk
TGlzdCgpIHsgbV9zaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3MgPSB0cnVl
OyB9CiAgICAgdm9pZCBkdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpIHsgbV9zaG91bGRE
dW1wQWxsRnJhbWVTY3JvbGxQb3NpdGlvbnMgPSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRWRpdGlu
Z0NhbGxiYWNrcygpIHsgbV9kdW1wRWRpdGluZ0NhbGxiYWNrcyA9IHRydWU7IH0KICAgICB2b2lk
IGR1bXBTZWxlY3Rpb25SZWN0KCkgeyB9IC8vIFdpbGwgbmVlZCB0byBkbyBzb21ldGhpbmcgd2hl
biB3ZSBzdXBwb3J0IHBpeGVsIHRlc3RzLgpAQCAtNzIsMTQgKzczLDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENhbk9wZW5XaW5kb3dzKGJvb2wpOwogICAgIHZvaWQgc2V0Q2xvc2VSZW1haW5p
bmdXaW5kb3dzV2hlbkNvbXBsZXRlKGJvb2wgdmFsdWUpIHsgbV9zaG91bGRDbG9zZUV4dHJhV2lu
ZG93cyA9IHZhbHVlOyB9CiAgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChib29sKTsKLSAg
ICB1bnNpZ25lZCB3aW5kb3dDb3VudCgpOwogCiAgICAgLy8gU3BlY2lhbCBET00gZnVuY3Rpb25z
LgogICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTVmFs
dWVSZWYgZWxlbWVudCk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvdW50ZXJWYWx1
ZUZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGVsZW1lbnRJZCk7Ci0gICAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IG1hcmtlclRleHRGb3JMaXN0SXRlbShKU1ZhbHVlUmVmIGVsZW1lbnQpOwor
ICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICB2b2lkIGV4ZWNDb21tYW5kKEpT
U3RyaW5nUmVmIG5hbWUsIEpTU3RyaW5nUmVmIGFyZ3VtZW50KTsKICAgICBib29sIGlzQ29tbWFu
ZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IG1hcmtlclRleHRGb3JMaXN0SXRlbShKU1ZhbHVlUmVmIGVsZW1lbnQpOworICAgIHVuc2lnbmVk
IHdpbmRvd0NvdW50KCk7CiAKICAgICAvLyBSZXBhaW50IHRlc3RpbmcuCiAgICAgdm9pZCB0ZXN0
UmVwYWludCgpIHsgbV90ZXN0UmVwYWludCA9IHRydWU7IH0KQEAgLTEwMSw5ICsxMDMsOSBAQCBw
dWJsaWM6CiAgICAgV2hhdFRvRHVtcCB3aGF0VG9EdW1wKCkgY29uc3QgeyByZXR1cm4gbV93aGF0
VG9EdW1wOyB9CiAKICAgICBib29sIHNob3VsZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEFsbEZyYW1lU2Nyb2xsUG9zaXRpb25zOyB9Cisg
ICAgYm9vbCBzaG91bGREdW1wQmFja0ZvcndhcmRMaXN0c0ZvckFsbFdpbmRvd3MoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZER1bXBCYWNrRm9yd2FyZExpc3RzRm9yQWxsV2luZG93czsgfQogICAg
IGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2R1bXBF
ZGl0aW5nQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wTWFpbkZyYW1lU2Nyb2xsUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3doYXRUb0R1bXAgPT0gUmVuZGVyVHJlZTsgfQotCiAg
ICAgYm9vbCBzaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1w
U3RhdHVzQ2FsbGJhY2tzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2VzOyB9CiAKQEAgLTEyNSw2ICsxMjcsNyBAQCBw
cml2YXRlOgogCiAgICAgV2hhdFRvRHVtcCBtX3doYXRUb0R1bXA7CiAgICAgYm9vbCBtX3Nob3Vs
ZER1bXBBbGxGcmFtZVNjcm9sbFBvc2l0aW9uczsKKyAgICBib29sIG1fc2hvdWxkRHVtcEJhY2tG
b3J3YXJkTGlzdHNGb3JBbGxXaW5kb3dzOwogCiAgICAgYm9vbCBtX3Nob3VsZEFsbG93RWRpdGlu
ZzsKICAgICBib29sIG1fc2hvdWxkQ2xvc2VFeHRyYVdpbmRvd3M7CkluZGV4OiBXZWJLaXRUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAkocmV2aXNpb24g
NzA1NzQpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKICAgICAg
ICAgLy8gT3RoZXIgZHVtcGluZy4KKyAgICAgICAgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0KCk7
CiAgICAgICAgIHZvaWQgZHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKTsKICAgICAgICAg
dm9pZCBkdW1wRWRpdGluZ0NhbGxiYWNrcygpOwogICAgICAgICB2b2lkIGR1bXBTZWxlY3Rpb25S
ZWN0KCk7CkBAIC00NSwxNCArNDYsMTUgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIHZvaWQgc2V0
Q2FuT3BlbldpbmRvd3MoaW4gYm9vbGVhbiB2YWx1ZSk7CiAgICAgICAgIHZvaWQgc2V0Q2xvc2VS
ZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRlKGluIGJvb2xlYW4gdmFsdWUpOwogICAgICAgICB2
b2lkIHNldFhTU0F1ZGl0b3JFbmFibGVkKGluIGJvb2xlYW4gdmFsdWUpOwotICAgICAgICB1bnNp
Z25lZCBsb25nIHdpbmRvd0NvdW50KCk7CiAKICAgICAgICAgLy8gU3BlY2lhbCBET00gZnVuY3Rp
b25zLgorICAgICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgICAgIG9iamVj
dCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oaW4gb2JqZWN0IGVsZW1lbnQpOwog
ICAgICAgICBET01TdHJpbmcgY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWQoaW4gRE9NU3RyaW5n
IGVsZW1lbnRJZCk7Ci0gICAgICAgIERPTVN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oaW4g
b2JqZWN0IGVsZW1lbnQpOwogICAgICAgICB2b2lkIGV4ZWNDb21tYW5kKGluIERPTVN0cmluZyBu
YW1lLCBpbiBET01TdHJpbmcgYXJndW1lbnQpOwogICAgICAgICBib29sZWFuIGlzQ29tbWFuZEVu
YWJsZWQoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBET01TdHJpbmcgbWFya2VyVGV4dEZv
ckxpc3RJdGVtKGluIG9iamVjdCBlbGVtZW50KTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB3aW5k
b3dDb3VudCgpOwogCiAgICAgICAgIC8vIFJlcGFpbnQgdGVzdGluZy4KICAgICAgICAgdm9pZCB0
ZXN0UmVwYWludCgpOwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTk1LDcgKzk1LDcgQEAKIAkJQkMxNEU0RTgxMjBFMDNEODAwODI2QzBDIC8qIEpTR0ND
b250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTR0ND
b250cm9sbGVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdFRlc3RSdW5uZXIvSlNH
Q0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlC
QzE0RTRFOTEyMEUwM0Q4MDA4MjZDMEMgLyogSlNHQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNHQ0NvbnRyb2xsZXIuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdFRlc3RSdW5uZXIvSlNHQ0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJQkMyNTE4NDYxMUQxNTc2NzAwMkVCQzAxIC8qIEluamVjdGVk
QnVuZGxlTWFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmpl
Y3RlZEJ1bmRsZU1haW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzI1MTg2
MjExRDE1RDU0MDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZS5idW5kbGU7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUJDMjUxODYyMTFEMTVENTQwMDJFQkMwMSAvKiBX
ZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5J
bmRleCA9IDA7IHBhdGggPSBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVuZGxlOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlCQzI1MTg2MzExRDE1RDU0MDAy
RUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUtSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIkluamVj
dGVkQnVuZGxlLUluZm8ucGxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI1
MTk3MTExRDE1RTYxMDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGUueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjUxQTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRU
ZXN0UnVubmVyUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktp
dFRlc3RSdW5uZXJQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMyw3
ICsyMDMsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk4REQ3
NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLywKLQkJCQlCQzI1MTg2
MjExRDE1RDU0MDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUuYnVuZGxlICovLAorCQkJCUJDMjUx
ODYyMTFEMTVENTQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuYnVu
ZGxlICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0zNDMsOSArMzQzLDkgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4REQ3NkZB
MTA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5lciAqLzsKIAkJCXByb2R1Y3RUeXBl
ID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CiAJCX07Ci0JCUJDMjUxODYxMTFEMTVE
NTQwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZSAqLyA9IHsKKwkJQkMyNTE4NjExMUQxNUQ1NDAw
MkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBCQzI1MTg2NjEx
RDE1RDU1MDAyRUJDMDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIkluamVjdGVkQnVuZGxlIiAqLzsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBC
QzI1MTg2NjExRDE1RDU1MDAyRUJDMDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIldlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZSIgKi87CiAJCQli
dWlsZFBoYXNlcyA9ICgKIAkJCQlCQzI1MTg1RTExRDE1RDU0MDAyRUJDMDEgLyogUmVzb3VyY2Vz
ICovLAogCQkJCUJDMjUxODVGMTFEMTVENTQwMDJFQkMwMSAvKiBTb3VyY2VzICovLApAQCAtMzU2
LDkgKzM1Niw5IEBACiAJCQlkZXBlbmRlbmNpZXMgPSAoCiAJCQkJQkM5NTJFRDcxMUYzQzM4QjAw
MzM5OEI0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwotCQkJbmFtZSA9IEluamVj
dGVkQnVuZGxlOworCQkJbmFtZSA9IFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZTsKIAkJ
CXByb2R1Y3ROYW1lID0gSW5qZWN0ZWRCdW5kbGU7Ci0JCQlwcm9kdWN0UmVmZXJlbmNlID0gQkMy
NTE4NjIxMUQxNUQ1NDAwMkVCQzAxIC8qIEluamVjdGVkQnVuZGxlLmJ1bmRsZSAqLzsKKwkJCXBy
b2R1Y3RSZWZlcmVuY2UgPSBCQzI1MTg2MjExRDE1RDU0MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1
bm5lckluamVjdGVkQnVuZGxlLmJ1bmRsZSAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBs
ZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKIAkJfTsKIC8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2Vj
dGlvbiAqLwpAQCAtMzgxLDcgKzM4MSw3IEBACiAJCQlwcm9qZWN0Um9vdCA9ICIiOwogCQkJdGFy
Z2V0cyA9ICgKIAkJCQk4REQ3NkY5NjA0ODZBQTc2MDBEOTZCNUUgLyogV2ViS2l0VGVzdFJ1bm5l
ciAqLywKLQkJCQlCQzI1MTg2MTExRDE1RDU0MDAyRUJDMDEgLyogSW5qZWN0ZWRCdW5kbGUgKi8s
CisJCQkJQkMyNTE4NjExMUQxNUQ1NDAwMkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJJbmplY3Rl
ZEJ1bmRsZSAqLywKIAkJCQlCQzk1MkQ3NzExRjNCRjVEMDAzMzk4QjQgLyogRGVyaXZlZCBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJfTsKQEAgLTQ2Miw3ICs0NjIsNyBAQAogLyogQmVnaW4gUEJYVGFy
Z2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAJCUJDMjUxOTQyMTFEMTVEOTQwMDJFQkMwMSAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
LQkJCXRhcmdldCA9IEJDMjUxODYxMTFEMTVENTQwMDJFQkMwMSAvKiBJbmplY3RlZEJ1bmRsZSAq
LzsKKwkJCXRhcmdldCA9IEJDMjUxODYxMTFEMTVENTQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGUgKi87CiAJCQl0YXJnZXRQcm94eSA9IEJDMjUxOTQxMTFEMTVEOTQw
MDJFQkMwMSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CiAJCUJDOTUyRUQ3MTFG
M0MzOEIwMDMzOThCNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewpAQCAtNTU4LDcgKzU1
OCw3IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwogCQl9OwotCQlCQzI1MTg2NjExRDE1RDU1MDAy
RUJDMDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIklu
amVjdGVkQnVuZGxlIiAqLyA9IHsKKwkJQkMyNTE4NjYxMUQxNUQ1NTAwMkVCQzAxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJLaXRUZXN0UnVubmVy
SW5qZWN0ZWRCdW5kbGUiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCiAJCQkJQkMyNTE4NjQxMUQxNUQ1NTAwMkVCQzAxIC8q
IERlYnVnICovLApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENv
bnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDcwNTc0KQorKysgV2ViS2l0VG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplKAogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVQYXRo
KCkKIHsKLSAgICBOU1N0cmluZyAqbnNCdW5kbGVQYXRoID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlUGF0aF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiSW5qZWN0ZWRC
dW5kbGUuYnVuZGxlIl07CisgICAgTlNTdHJpbmcgKm5zQnVuZGxlUGF0aCA9IFtbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5idW5kbGUiXTsKICAgICBtX2luamVjdGVk
QnVuZGxlUGF0aC5hZG9wdChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
bnNCdW5kbGVQYXRoKSk7CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwNTc2KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAt
MjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3Vw
cG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMyMgorICAgICAgICByZGFy
Oi8vcHJvYmxlbS84MTkzNjMxCisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBz
dXBwb3J0IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjMzMworICAgICAgICBy
ZGFyOi8vcHJvYmxlbS84MTkzNjQzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1NraXBw
ZWQ6IFJlc29ydGVkIHNvbWUgdGVzdCBsaXN0cy4gUmVtb3ZlZCB0aGUgc2VjdGlvbgorICAgICAg
ICBsaXN0aW5nIGFsbCB0aGUgdGVzdHMgdGhhdCB3ZXJlIGJsb2NrZWQgYnkgZHVtcEJhY2tGb3J3
YXJkTGlzdC4KKwogMjAxMC0xMC0yNiAgSmVubiBCcmFpdGh3YWl0ZSAgPGplbm5iQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0b3YuCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkCShyZXZpc2lvbiA3MDU3NCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDEwICsxOTIs
MTAgQEAgZmFzdC9kb20vRG9jdW1lbnQvQ2FyZXRSYW5nZUZyb21Qb2ludC9jYQogZmFzdC9kb20v
SFRNTFNlbGVjdEVsZW1lbnQvY2xpY2stc2l6ZS16ZXJvLW5vLWNyYXNoLmh0bWwKIGZhc3QvZG9t
L0hUTUxUYWJsZUNvbEVsZW1lbnQvcmVzaXplLXRhYmxlLXVzaW5nLWNvbC13aWR0aC5odG1sCiBm
YXN0L2RvbS9Ob2RlL211dGF0aW9uLWJsdXIuaHRtbAotZmFzdC9kb20vcmVwbGFjZWQtaW1hZ2Ut
bWFwLmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUtZnJhbWVz
Lmh0bWwKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtY2xvbmUuaHRtbAogZmFz
dC9kb20vV2luZG93L3dpbmRvdy14eS1wcm9wZXJ0aWVzLmh0bWwKK2Zhc3QvZG9tL3JlcGxhY2Vk
LWltYWdlLW1hcC5odG1sCiBmYXN0L2R5bmFtaWMvaG92ZXItc3R5bGUtcmVjYWxjLWNyYXNoLmh0
bWwKIGZhc3QvZHluYW1pYy9ob3ZlcmVkLWRldGFjaC5odG1sCiBmYXN0L2R5bmFtaWMvbGF5ZXIt
aGl0LXRlc3QtY3Jhc2guaHRtbApAQCAtNDIxLDYgKzQyMSw3IEBAIGZhc3QvbG9hZGVyL2RvY3Vt
ZW50LXdpdGgtZnJhZ21lbnQtdXJsLTIKIGZhc3QvbG9hZGVyL2RvY3VtZW50LXdpdGgtZnJhZ21l
bnQtdXJsLTMuaHRtbAogZmFzdC9sb2FkZXIvZG9jdW1lbnQtd2l0aC1mcmFnbWVudC11cmwtNC5o
dG1sCiBmYXN0L2xvYWRlci9lYXJseS1sb2FkLWNhbmNlbC5odG1sCitmYXN0L2xvYWRlci9mcmFn
bWVudC1hZnRlci1yZWRpcmVjdC1nZXRzLWJhY2stZW50cnkuaHRtbAogZmFzdC9sb2FkZXIvcG9s
aWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbAogZmFzdC9sb2FkZXIvcmVw
ZWF0LXNhbWUtZG9jdW1lbnQtbmF2aWdhdGlvbi5odG1sCiBmYXN0L292ZXJmbG93L2hpdC10ZXN0
LW92ZXJmbG93LWNvbnRyb2xzLmh0bWwKQEAgLTQ1MSw2ICs0NTIsOSBAQCBodHRwL3Rlc3RzL2xv
Y2FsL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsCiBodHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWct
ZXZlbnRzLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291
cmNlLWNyYXNoLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS5odG1s
CitodHRwL3Rlc3RzL25hdmlnYXRpb24vZG9jdW1lbnQtbG9jYXRpb24tY2xpY2stdGltZW91dC5o
dG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vZG9jdW1lbnQtbG9jYXRpb24tY2xpY2suaHRtbAor
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2RvY3VtZW50LWxvY2F0aW9uLW1vdXNlb3Zlci5odG1sCiBo
dHRwL3Rlc3RzL25hdmlnYXRpb24vbm8tcmVmZXJyZXItcmVzZXQuaHRtbAogaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL25vLXJlZmVycmVyLXNhbWUtd2luZG93Lmh0bWwKIGh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9uby1yZWZlcnJlci1zdWJmcmFtZS5odG1sCkBAIC00OTUsMTEgKzQ5OSwxMSBAQCBzY3Jv
bGxiYXJzL3Njcm9sbGJhci1taXNzLW1vdXNlbW92ZS1kaXNhCiBzY3JvbGxiYXJzL3Njcm9sbGJh
ci1taXNzLW1vdXNlbW92ZS5odG1sCiBzY3JvbGxiYXJzL3Njcm9sbGV2ZW50LWlmcmFtZS1uby1z
Y3JvbGxpbmctd2hlZWwuaHRtbAogc3RvcmFnZS9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlm
ZmVyZW50LWhhbmRsZXMuaHRtbAorc3ZnL2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRtbAog
c3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1jb2xvci10cmFuc3BhcmVudC5odG1sCiBzdmcvYW5pbWF0
aW9ucy9hbmltYXRlLWdyYWRpZW50LXRyYW5zZm9ybS5odG1sCiBzdmcvYW5pbWF0aW9ucy9hbmlt
YXRlLWtleVNwbGluZXMuaHRtbAogc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS1wb2ludHMuaHRtbAot
c3ZnL2FuaW1hdGlvbnMvYW5pbVZhbC1iYXNpY3MuaHRtbAogc3ZnL2N1c3RvbS9hYnNvbHV0ZS1z
aXplZC1jb250ZW50LXdpdGgtcmVzb3VyY2VzLnhodG1sCiBzdmcvY3VzdG9tL2NpcmNsZS1tb3Zl
LWludmFsaWRhdGlvbi5zdmcKIHN2Zy9jdXN0b20vY2xpcC1wYXRoLWNoaWxkLWNoYW5nZXMuc3Zn
CkBAIC03NDQsNiArNzQ4LDE0IEBAIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50
LXN2Z2QKIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS13aWR0aC1w
cm9wLmh0bWwKIHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHSW1hZ2VFbGVtZW50LXN2Z2RvbS14LXBy
b3AuaHRtbAogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdJbWFnZUVsZW1lbnQtc3ZnZG9tLXktcHJv
cC5odG1sCitzdmcvZHluYW1pYy11cGRhdGVzL1NWR0xpbmVFbGVtZW50LWRvbS14MS1hdHRyLmh0
bWwKK3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXgyLWF0dHIuaHRtbAor
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdMaW5lRWxlbWVudC1kb20teTEtYXR0ci5odG1sCitzdmcv
ZHluYW1pYy11cGRhdGVzL1NWR0xpbmVFbGVtZW50LWRvbS15Mi1hdHRyLmh0bWwKK3N2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtc3ZnZG9tLXgxLXByb3AuaHRtbAorc3ZnL2R5bmFt
aWMtdXBkYXRlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDItcHJvcC5odG1sCitzdmcvZHluYW1p
Yy11cGRhdGVzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS15MS1wcm9wLmh0bWwKK3N2Zy9keW5hbWlj
LXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtc3ZnZG9tLXkyLXByb3AuaHRtbAogc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtZG9tLWdyYWRpZW50VHJhbnNmb3JtLWF0
dHIuaHRtbAogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQtZG9t
LWdyYWRpZW50VW5pdHMtYXR0ci5odG1sCiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC1kb20teDEtYXR0ci5odG1sCkBAIC03NTYsMTQgKzc2OCw2IEBAIHN2Zy9k
eW5hbWljLXVwZGF0ZXMvU1ZHTGluZWFyR3JhZGllbnRFbGUKIHN2Zy9keW5hbWljLXVwZGF0ZXMv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS14Mi1wcm9wLmh0bWwKIHN2Zy9keW5hbWlj
LXVwZGF0ZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS15MS1wcm9wLmh0bWwKIHN2
Zy9keW5hbWljLXVwZGF0ZXMvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LXN2Z2RvbS15Mi1wcm9w
Lmh0bWwKLXN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXgxLWF0dHIuaHRt
bAotc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdMaW5lRWxlbWVudC1kb20teDItYXR0ci5odG1sCi1z
dmcvZHluYW1pYy11cGRhdGVzL1NWR0xpbmVFbGVtZW50LWRvbS15MS1hdHRyLmh0bWwKLXN2Zy9k
eW5hbWljLXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtZG9tLXkyLWF0dHIuaHRtbAotc3ZnL2R5bmFt
aWMtdXBkYXRlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teDEtcHJvcC5odG1sCi1zdmcvZHluYW1p
Yy11cGRhdGVzL1NWR0xpbmVFbGVtZW50LXN2Z2RvbS14Mi1wcm9wLmh0bWwKLXN2Zy9keW5hbWlj
LXVwZGF0ZXMvU1ZHTGluZUVsZW1lbnQtc3ZnZG9tLXkxLXByb3AuaHRtbAotc3ZnL2R5bmFtaWMt
dXBkYXRlcy9TVkdMaW5lRWxlbWVudC1zdmdkb20teTItcHJvcC5odG1sCiBzdmcvZHluYW1pYy11
cGRhdGVzL1NWR01hcmtlckVsZW1lbnQtZG9tLW1hcmtlckhlaWdodC1hdHRyLmh0bWwKIHN2Zy9k
eW5hbWljLXVwZGF0ZXMvU1ZHTWFya2VyRWxlbWVudC1kb20tbWFya2VyVW5pdHMtYXR0ci5odG1s
CiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR01hcmtlckVsZW1lbnQtZG9tLW1hcmtlcldpZHRoLWF0
dHIuaHRtbApAQCAtODI3LDEwICs4MzEsMTAgQEAgc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdSZWN0
RWxlbWVudC1zdmdkbwogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdSZWN0RWxlbWVudC1zdmdkb20t
d2lkdGgtcHJvcC5odG1sCiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1JlY3RFbGVtZW50LXN2Z2Rv
bS14LXByb3AuaHRtbAogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdSZWN0RWxlbWVudC1zdmdkb20t
eS1wcm9wLmh0bWwKK3N2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVFJlZkVsZW1lbnQtZG9tLWhyZWYt
YXR0ci5odG1sCiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LWRvbS10cmFuc2Zv
cm0tYXR0ci5odG1sCiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LXN2Z2RvbS1y
b3RhdGUtcHJvcC5odG1sCiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LXN2Z2Rv
bS10cmFuc2Zvcm0tcHJvcC5odG1sCi1zdmcvZHluYW1pYy11cGRhdGVzL1NWR1RSZWZFbGVtZW50
LWRvbS1ocmVmLWF0dHIuaHRtbAogc3ZnL2ZpbHRlcnMvZmlsdGVyLXdpZHRoLXVwZGF0ZS5zdmcK
IHN2Zy90ZXh0L2ZvcmVpZ25PYmplY3QtcmVwYWludC54bWwKIHN2Zy90ZXh0L3NlbGVjdC10ZXh0
TGVuZ3RoLXNwYWNpbmctc3F1ZWV6ZS0xLnN2ZwpAQCAtMTEyMiwxMTEgKzExMjYsNiBAQCBodHRw
L3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkCiBodHRwL3Rlc3RzL2luc3BlY3RvcgogaW5zcGVjdG9y
CiAKLSMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBCYWNrRm9yd2FyZExpc3QKLSMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MjMyMj4KLWZhc3QvbG9hZGVyL2ZyYWdtZW50LWFmdGVyLXJlZGlyZWN0LWdl
dHMtYmFjay1lbnRyeS5odG1sCi1mYXN0L2xvYWRlci9mcmFtZS1sb2NhdGlvbi1jaGFuZ2Utbm90
LWFkZGVkLXRvLWhpc3RvcnkuaHRtbAotZmFzdC9sb2FkZXIvZnJhbWUtc3JjLWNoYW5nZS1hZGRl
ZC10by1oaXN0b3J5Lmh0bWwKLWZhc3QvbG9hZGVyL2ZyYW1lLXNyYy1jaGFuZ2Utbm90LWFkZGVk
LXRvLWhpc3RvcnkuaHRtbAotZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmpl
Y3QtdHlwZXMuaHRtbAotZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4t
ZnJhbWUtbG9hZC5odG1sCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gt
MC1zZWNvbmRzLnBsCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMi1z
ZWNvbmRzLnBsCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLmh0bWwKLWh0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LTMwMy5odG1sCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwKLWh0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbAot
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLTItc2Vjb25k
cy5odG1sCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24t
YmVmb3JlLWxvYWQuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3Vi
bWl0LTAtc2Vjb25kcy5odG1sCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1z
dWJtaXQtMi1zZWNvbmRzLmh0bWwKLWh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3Jt
LXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCi1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMt
bG9jYXRpb24tMC1zZWNvbmRzLmh0bWwKLWh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi0yLXNlY29uZHMuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxv
Y2F0aW9uLWFzc2lnbi0wLXNlY29uZHMuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LWpzLWxvY2F0aW9uLWFzc2lnbi0yLXNlY29uZHMuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC5odG1sCi1odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbAotaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRzLmh0bWwKLWh0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTItc2Vjb25kcy5odG1sCi1odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1s
Ci1odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0wLXNlY29u
ZHMuaHRtbAotaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2Ut
Mi1zZWNvbmRzLmh0bWwKLWh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1y
ZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwKLWh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRh
LXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwKLWh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRh
LXJlZnJlc2gtMi1zZWNvbmRzLmh0bWwKLWh0dHAvdGVzdHMvaW5jcmVtZW50YWwvZnJhbWUtZm9j
dXMtYmVmb3JlLWxvYWQuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2FuY2hvci1iYXNpYy5o
dG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5jaG9yLWZyYW1lcy5odG1sCi1odHRwL3Rlc3Rz
L25hdmlnYXRpb24vYW5jaG9yLWdvYmFjay5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vYW5j
aG9yLXN1YmZyYW1lbG9hZC5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vYmFjay10by1zbG93
LWZyYW1lLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9kb2N1bWVudC1sb2NhdGlvbi1jbGlj
ay10aW1lb3V0Lmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9kb2N1bWVudC1sb2NhdGlvbi1j
bGljay5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vZG9jdW1lbnQtbG9jYXRpb24tbW91c2Vv
dmVyLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9kb2N1bWVudC1sb2NhdGlvbi1vbmxvYWQu
aHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2RvY3VtZW50LWxvY2F0aW9uLXNjcmlwdC5odG1s
Ci1odHRwL3Rlc3RzL25hdmlnYXRpb24vZHluYW1pYy1pZnJhbWUtZHluYW1pYy1mb3JtLWJhY2st
ZW50cnkuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Vycm9yNDA0LWJhc2ljLmh0bWwKLWh0
dHAvdGVzdHMvbmF2aWdhdGlvbi9lcnJvcjQwNC1mcmFtZXMuaHRtbAotaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL2Vycm9yNDA0LWdvYmFjay5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vZXJyb3I0
MDQtc3ViZnJhbWVsb2FkLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9qYXZhc2NyaXB0bGlu
ay1iYXNpYy5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vamF2YXNjcmlwdGxpbmstZnJhbWVz
Lmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9qYXZhc2NyaXB0bGluay1nb2JhY2suaHRtbAot
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2phdmFzY3JpcHRsaW5rLXN1YmZyYW1lbG9hZC5odG1sCi1o
dHRwL3Rlc3RzL25hdmlnYXRpb24vbG9jYXRpb24tYXNzaWduLWFkZHMtaGlzdG9yeS1pdGVtLmh0
bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9sb2NhdGlvbi1ocmVmLXNldC1hZGRzLWhpc3Rvcnkt
aXRlbS5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vbG9jYXRpb24tcmVwbGFjZS1hZGRzLWhp
c3RvcnktaXRlbS5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vbG9jYXRpb24tc2V0LWFkZHMt
aGlzdG9yeS1pdGVtLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9sb2NrZWRoaXN0b3J5LWlm
cmFtZS5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vbWV0YXJlZGlyZWN0LWJhc2ljLmh0bWwK
LWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9tZXRhcmVkaXJlY3QtZnJhbWVzLmh0bWwKLWh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9tZXRhcmVkaXJlY3QtZ29iYWNrLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9tZXRhcmVkaXJlY3Qtc3ViZnJhbWVsb2FkLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9tdWx0aXBsZS1iYWNrLWZvcndhcmQtZW50cmllcy5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRp
b24vbmV3LXdpbmRvdy1yZWRpcmVjdC1oaXN0b3J5Lmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9vbmxvYWQtbmF2aWdhdGlvbi1pZnJhbWUtMi5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24v
b25sb2FkLW5hdmlnYXRpb24taWZyYW1lLXRpbWVvdXQuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL29ubG9hZC1uYXZpZ2F0aW9uLWlmcmFtZS5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFyc2VkLWlmcmFtZS1keW5hbWljLWZvcm0tYmFjay1lbnRyeS5odG1sCi1odHRwL3Rlc3RzL25h
dmlnYXRpb24vcG9zdC1iYXNpYy5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdC1mcmFt
ZXMuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3QtZ29iYWNrLXNhbWUtdXJsLmh0bWwK
LWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0LWdvYmFjazEuaHRtbAotaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Bvc3QtZ29iYWNrMi5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGly
ZWN0LWJhc2ljLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0cmVkaXJlY3QtZnJhbWVz
Lmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0cmVkaXJlY3QtZ29iYWNrMS5odG1sCi1o
dHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazIuaHRtbAotaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1yZWxvYWQuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3JlZGlyZWN0LWxvYWQtbm8tZm9ybS1yZXN0b3JhdGlvbi5odG1sCi1odHRwL3Rlc3RzL25h
dmlnYXRpb24vcmVkaXJlY3QzMDItYmFzaWMuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
ZGlyZWN0MzAyLWZyYW1lcy5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVkaXJlY3QzMDIt
Z29iYWNrLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZWRpcmVjdDMwMi1tZXRhcmVkaXJl
Y3QuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3JlZGlyZWN0MzAyLXN1YmZyYW1lbG9hZC5o
dG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVsYXRpdmVhbmNob3ItYmFzaWMuaHRtbAotaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL3JlbGF0aXZlYW5jaG9yLWZyYW1lcy5odG1sCi1odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVsYXRpdmVhbmNob3ItZ29iYWNrLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXN0b3JlLWZvcm0tc3RhdGUtaHR0cHMuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Nsb3dtZXRhcmVkaXJlY3QtYmFzaWMuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Nsb3d0
aW1lcnJlZGlyZWN0LWJhc2ljLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWNjZXNzMjAw
LWJhc2ljLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi9zdWNjZXNzMjAwLWZyYW1lcy1sb2Fk
c2FtZS5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vc3VjY2VzczIwMC1mcmFtZXMuaHRtbAot
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1Y2Nlc3MyMDAtZ29iYWNrLmh0bWwKLWh0dHAvdGVzdHMv
bmF2aWdhdGlvbi9zdWNjZXNzMjAwLWxvYWRzYW1lLmh0bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlv
bi9zdWNjZXNzMjAwLXJlbG9hZC5odG1sCi1odHRwL3Rlc3RzL25hdmlnYXRpb24vc3VjY2VzczIw
MC1zdWJmcmFtZWxvYWQuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3RpbWVycmVkaXJlY3Qt
YmFzaWMuaHRtbAotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3RpbWVycmVkaXJlY3QtZnJhbWVzLmh0
bWwKLWh0dHAvdGVzdHMvbmF2aWdhdGlvbi90aW1lcnJlZGlyZWN0LWdvYmFjay5odG1sCi1odHRw
L3Rlc3RzL25hdmlnYXRpb24vdGltZXJyZWRpcmVjdC1zdWJmcmFtZWxvYWQuaHRtbAotaHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3dpbmRvdy1vcGVuLWFkZHMtaGlzdG9yeS1pdGVtLmh0bWwKLWh0dHAv
dGVzdHMvbmF2aWdhdGlvbi93aW5kb3ctb3Blbi1hZGRzLWhpc3RvcnktaXRlbTIuaHRtbAotCiAj
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wRE9NQXNXZWJBcmNoaXZlCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDIzMjQ+CiBodHRwL3Rlc3RzL3dlYmFyY2hpdmUvY3Jvc3Mtb3JpZ2luLXN0eWxlc2hl
ZXQtY3Jhc2guaHRtbApAQCAtMTYxMywxMCArMTUxMiw1NCBAQCBmYXN0L2ZyYW1lcy9mcmFtZS1k
aXNwbGF5LW5vbmUtZm9jdXMuaHRtCiAjIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDI2NzQ+CiBmYXN0L2ZyYW1lcy9mcmFtZS1uYXZpZ2F0aW9uLmh0bWwKIGZhc3Qv
aGlzdG9yeS9nby1iYWNrLXRvLWNoYW5nZWQtbmFtZS5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRp
b24vYW5jaG9yLWJhc2ljLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZ29iYWNr
Lmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3Itc3ViZnJhbWVsb2FkLmh0bWwKK2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9iYWNrLXRvLXNsb3ctZnJhbWUuaHRtbAoraHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL2Vycm9yNDA0LWJhc2ljLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9lcnJv
cjQwNC1nb2JhY2suaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2Vycm9yNDA0LXN1YmZyYW1l
bG9hZC5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vamF2YXNjcmlwdGxpbmstYmFzaWMuaHRt
bAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2phdmFzY3JpcHRsaW5rLWZyYW1lcy5odG1sCitodHRw
L3Rlc3RzL25hdmlnYXRpb24vamF2YXNjcmlwdGxpbmstZ29iYWNrLmh0bWwKK2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9qYXZhc2NyaXB0bGluay1zdWJmcmFtZWxvYWQuaHRtbAoraHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL21ldGFyZWRpcmVjdC1iYXNpYy5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24v
bWV0YXJlZGlyZWN0LWZyYW1lcy5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vbWV0YXJlZGly
ZWN0LWdvYmFjay5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vbWV0YXJlZGlyZWN0LXN1YmZy
YW1lbG9hZC5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdC1nb2JhY2stc2FtZS11cmwu
aHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3QtZ29iYWNrMi5odG1sCitodHRwL3Rlc3Rz
L25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWJhc2ljLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9wb3N0cmVkaXJlY3QtZnJhbWVzLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0cmVk
aXJlY3QtZ29iYWNrMS5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdv
YmFjazIuaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1yZWxvYWQuaHRt
bAogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3JlZGlyZWN0LWN5Y2xlLmh0bWwKK2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZWRpcmVjdDMwMi1iYXNpYy5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVkaXJlY3QzMDItZnJhbWVzLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZWRpcmVjdDMw
Mi1nb2JhY2suaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3JlZGlyZWN0MzAyLW1ldGFyZWRp
cmVjdC5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVkaXJlY3QzMDItc3ViZnJhbWVsb2Fk
Lmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZWxhdGl2ZWFuY2hvci1iYXNpYy5odG1sCito
dHRwL3Rlc3RzL25hdmlnYXRpb24vcmVsYXRpdmVhbmNob3ItZnJhbWVzLmh0bWwKK2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi9yZWxhdGl2ZWFuY2hvci1nb2JhY2suaHRtbAogaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3JlbG9hZC1zdWJmcmFtZS1mcmFtZS5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVsb2FkLXN1YmZyYW1lLWlmcmFtZS5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVsb2Fk
LXN1YmZyYW1lLW9iamVjdC5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzdG9yZS1mb3Jt
LXN0YXRlLWh0dHBzLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zbG93bWV0YXJlZGlyZWN0
LWJhc2ljLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9zbG93dGltZXJyZWRpcmVjdC1iYXNp
Yy5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vc3VjY2VzczIwMC1iYXNpYy5odG1sCitodHRw
L3Rlc3RzL25hdmlnYXRpb24vc3VjY2VzczIwMC1mcmFtZXMtbG9hZHNhbWUuaHRtbAoraHR0cC90
ZXN0cy9uYXZpZ2F0aW9uL3N1Y2Nlc3MyMDAtZnJhbWVzLmh0bWwKK2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9zdWNjZXNzMjAwLWdvYmFjay5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vc3VjY2Vz
czIwMC1sb2Fkc2FtZS5odG1sCitodHRwL3Rlc3RzL25hdmlnYXRpb24vc3VjY2VzczIwMC1yZWxv
YWQuaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3N1Y2Nlc3MyMDAtc3ViZnJhbWVsb2FkLmh0
bWwKK2h0dHAvdGVzdHMvbmF2aWdhdGlvbi90aW1lcnJlZGlyZWN0LWJhc2ljLmh0bWwKK2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi90aW1lcnJlZGlyZWN0LWZyYW1lcy5odG1sCitodHRwL3Rlc3RzL25h
dmlnYXRpb24vdGltZXJyZWRpcmVjdC1nb2JhY2suaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3RpbWVycmVkaXJlY3Qtc3ViZnJhbWVsb2FkLmh0bWwKIAogIyBXZWJLaXRUZXN0UnVubmVyIG5l
ZWRzIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZGluZ1NjcmlwdAogIyA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyNjc1PgpAQCAtMjIxMyw2ICsyMTU2LDI5
IEBAIHRyYW5zaXRpb25zL21pbi1tYXgtd2lkdGgtaGVpZ2h0LXRyYW5zaXQKIHRyYW5zaXRpb25z
L3RleHQtaW5kZW50LXRyYW5zaXRpb24uaHRtbAogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1m
cmFtZS1hY2Nlc3MtcHV0Lmh0bWwKIAorIyBVbmV4cGxhaW5lZCBiYWNrL2ZvcndhcmQgbGlzdCBm
YWlsdXJlcworZmFzdC9sb2FkZXIvZnJhbWUtbG9jYXRpb24tY2hhbmdlLW5vdC1hZGRlZC10by1o
aXN0b3J5Lmh0bWwKK2Zhc3QvbG9hZGVyL2ZyYW1lLXNyYy1jaGFuZ2UtYWRkZWQtdG8taGlzdG9y
eS5odG1sCitmYXN0L2xvYWRlci9mcmFtZS1zcmMtY2hhbmdlLW5vdC1hZGRlZC10by1oaXN0b3J5
Lmh0bWwKK2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0wLXNlY29uZHMu
cGwKK2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZv
cmUtbG9hZC5odG1sCitodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQt
Mi1zZWNvbmRzLmh0bWwKK2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1p
dC1iZWZvcmUtbG9hZC5odG1sCitodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwKK2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1q
cy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCitodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sCitodHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0wLXNlY29uZHMuaHRtbAoraHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRzLmh0bWwKK2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwK
K2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwK
K2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9hbmNob3ItZnJhbWVzLmh0bWwKK2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9kb2N1bWVudC1sb2NhdGlvbi1zY3JpcHQuaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL2xvY2F0aW9uLXJlcGxhY2UtYWRkcy1oaXN0b3J5LWl0ZW0uaHRtbAoraHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL211bHRpcGxlLWJhY2stZm9yd2FyZC1lbnRyaWVzLmh0bWwKK2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9uZXctd2luZG93LXJlZGlyZWN0LWhpc3RvcnkuaHRtbAoraHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3Bvc3QtYmFzaWMuaHRtbAoraHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3QtZ29i
YWNrMS5odG1sCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAog
IyBUSElOR1MgV0UgRE9OJ1QgSEFWRSBBTkQgRE9OJ1QgV0FOVAo=
</data>
<flag name="review"
          id="62097"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>