<?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>28075</bug_id>
          
          <creation_ts>2009-08-07 11:05:34 -0700</creation_ts>
          <short_desc>Remove trailing whitespaces from all database files</short_desc>
          <delta_ts>2009-08-26 23:26:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137983</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-07 11:05:34 -0700</bug_when>
    <thetext>Lots of database files have trailing whitespaces in them. We should clean that up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143000</commentid>
    <comment_count>1</comment_count>
      <attachid>38647</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-26 16:40:39 -0700</bug_when>
    <thetext>Created attachment 38647
patch

Removed all trailing whitespaces in all files in WebCore/storage/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143040</commentid>
    <comment_count>2</comment_count>
      <attachid>38647</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-26 21:28:51 -0700</bug_when>
    <thetext>Comment on attachment 38647
patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143041</commentid>
    <comment_count>3</comment_count>
      <attachid>38647</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 21:39:55 -0700</bug_when>
    <thetext>Comment on attachment 38647
patch

Rejecting patch 38647 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143046</commentid>
    <comment_count>4</comment_count>
      <attachid>38647</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-26 21:57:29 -0700</bug_when>
    <thetext>Comment on attachment 38647
patch

Hum...   Seems unlikley.  Let&apos;s try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143047</commentid>
    <comment_count>5</comment_count>
      <attachid>38647</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 22:05:31 -0700</bug_when>
    <thetext>Comment on attachment 38647
patch

Rejecting patch 38647 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143052</commentid>
    <comment_count>6</comment_count>
      <attachid>38647</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-26 22:23:12 -0700</bug_when>
    <thetext>Comment on attachment 38647
patch

Clearing flags on attachment: 38647

Committed r47808: &lt;http://trac.webkit.org/changeset/47808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143053</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-26 22:23:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143064</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-26 23:26:56 -0700</bug_when>
    <thetext>Sorry.  run-webkit-tests had left an httpd process running, causing all patches to fail the httpd tests. :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38647</attachid>
            <date>2009-08-26 16:40:39 -0700</date>
            <delta_ts>2009-08-26 22:23:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>64015</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMDktMDgtMjYgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcyBmcm9tIGFsbCBzdG9yYWdlIGNsYXNzZXMu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MDc1
CisKKyAgICAgICAgKiBzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcDoKKyAgICAgICAg
KiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmg6Cisg
ICAgICAgICogc3RvcmFnZS9EYXRhYmFzZURldGFpbHMuaDoKKyAgICAgICAgKiBzdG9yYWdlL0Rh
dGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHA6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaDoKKyAgICAgICAgKiBzdG9yYWdl
L0xvY2FsU3RvcmFnZVRhc2suY3BwOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGFz
ay5oOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAg
KiBzdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAqIHN0b3JhZ2UvT3JpZ2lu
UXVvdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBzdG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmg6CisgICAgICAgICogc3Rv
cmFnZS9TUUxFcnJvci5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5o
OgorICAgICAgICAqIHN0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcDoKKyAgICAgICAgKiBzdG9yYWdl
L1NRTFN0YXRlbWVudC5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMU3RhdGVtZW50Q2FsbGJhY2su
aDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaDoKKyAgICAg
ICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmg6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmg6
CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaDoKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZUFyZWEuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHA6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKyAg
ICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAgICogc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VFdmVudC5jcHA6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3Jh
Z2VNYXAuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZU1hcC5oOgorICAgICAgICAqIHN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5o
OgorCiAyMDA5LTA4LTI2ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9DaGFuZ2VW
ZXJzaW9uV3JhcHBlci5jcHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL0No
YW5nZVZlcnNpb25XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMjEgKzQyLDIxIEBA
IENoYW5nZVZlcnNpb25XcmFwcGVyOjpDaGFuZ2VWZXJzaW9uV3JhcHAKIGJvb2wgQ2hhbmdlVmVy
c2lvbldyYXBwZXI6OnBlcmZvcm1QcmVmbGlnaHQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogewogICAgIEFTU0VSVCh0cmFuc2FjdGlvbiAmJiB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKSk7
Ci0gICAgCisKICAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKLSAgICAKKwogICAgIGlmICghdHJh
bnNhY3Rpb24tPmRhdGFiYXNlKCktPmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lv
bikpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmV0cmlldmUgYWN0dWFsIGN1cnJl
bnQgdmVyc2lvbiBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgIG1fc3FsRXJyb3IgPSBTUUxFcnJv
cjo6Y3JlYXRlKDAsICJ1bmFibGUgdG8gdmVyaWZ5IGN1cnJlbnQgdmVyc2lvbiBvZiBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgaWYgKGFjdHVh
bFZlcnNpb24gIT0gbV9vbGRWZXJzaW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiT2xkIHZlcnNp
b24gZG9lc24ndCBtYXRjaCBhY3R1YWwgdmVyc2lvbiIpOwogICAgICAgICBtX3NxbEVycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZSgyLCAiY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhbmQg
YG9sZFZlcnNpb25gIGFyZ3VtZW50IGRvIG5vdCBtYXRjaCIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTcxLDEwICs3MSwx
MCBAQCBib29sIENoYW5nZVZlcnNpb25XcmFwcGVyOjpwZXJmb3JtUG9zdGZsCiAgICAgfQogCiAg
ICAgdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPnNldEV4cGVjdGVkVmVyc2lvbihtX25ld1ZlcnNp
b24pOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6IFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
LmNwcAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBE
YXRhYmFzZTo6b3BlbkRhdGFiCiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMg
Zm9yIG9yaWdpbiAlcyBub3QgYWxsb3dlZCB0byBiZSBlc3RhYmxpc2hlZCIsIG5hbWUuYXNjaWko
KS5kYXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIAorCiAgICAgUmVmUHRyPERh
dGFiYXNlPiBkYXRhYmFzZSA9IGFkb3B0UmVmKG5ldyBEYXRhYmFzZShkb2N1bWVudCwgbmFtZSwg
ZXhwZWN0ZWRWZXJzaW9uKSk7CiAKICAgICBpZiAoIWRhdGFiYXNlLT5vcGVuQW5kVmVyaWZ5VmVy
c2lvbihlKSkgewogICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIG9wZW4gYW5kIHZl
cmlmeSB2ZXJzaW9uIChleHBlY3RlZCAlcykgb2YgZGF0YWJhc2UgJXMiLCBleHBlY3RlZFZlcnNp
b24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlLT5kYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgCisKICAgICBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAogICAgIGRvY3VtZW50
LT5zZXRIYXNPcGVuRGF0YWJhc2VzKCk7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBEYXRhYmFz
ZTo6dmVyc2lvbk1hdGNoZXNFeHBlY3RlZCgpIAogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOwogICAgICAgICByZXR1cm4gbV9leHBlY3RlZFZlcnNpb24gPT0gZ3VpZFRv
VmVyc2lvbk1hcCgpLmdldChtX2d1aWQpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zMzYsOCArMzM2LDggQEAgdm9pZCBEYXRhYmFzZTo6c3RvcCgpCiAgICAgLy8g
RklYTUU6IFRoZSBuZXQgZWZmZWN0IG9mIHRoZSBmb2xsb3dpbmcgY29kZSBpcyB0byByZW1vdmUg
YWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGFuZCBzdGF0ZW1lbnRzLCBidXQgYWxsb3cgdGhlIGN1
cnJlbnQgc3RhdGVtZW50CiAgICAgLy8gdG8gcnVuIHRvIGNvbXBsZXRpb24uICBJbiB0aGUgZnV0
dXJlIHdlIGNhbiB1c2UgdGhlIHNxbGl0ZTNfcHJvZ3Jlc3NfaGFuZGxlciBvciBzcWxpdGUzX2lu
dGVycnVwdCBpbnRlcmZhY2VzIHRvIGNhbmNlbCB0aGUgY3VycmVudAogICAgIC8vIHN0YXRlbWVu
dCBpbiByZXNwb25zZSB0byBjbG9zZSgpLCBhcyB3ZWxsLgotICAgIAotICAgIC8vIFRoaXMgbWV0
aG9kIGlzIG1lYW50IHRvIGJlIHVzZWQgYXMgYW4gYW5hbG9nIHRvIGNhbmNlbGxpbmcgYSBsb2Fk
ZXIsIGFuZCBpcyB1c2VkIHdoZW4gYSBkb2N1bWVudCBpcyBzaHV0IGRvd24gYXMgdGhlIHJlc3Vs
dCBvZiAKKworICAgIC8vIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIGJlIHVzZWQgYXMgYW4gYW5h
bG9nIHRvIGNhbmNlbGxpbmcgYSBsb2FkZXIsIGFuZCBpcyB1c2VkIHdoZW4gYSBkb2N1bWVudCBp
cyBzaHV0IGRvd24gYXMgdGhlIHJlc3VsdCBvZgogICAgIC8vIGEgcGFnZSBsb2FkIG9yIGNsb3Np
bmcgdGhlIHBhZ2UKICAgICBtX3N0b3BwZWQgPSB0cnVlOwogCkBAIC0zNTcsMTAgKzM1NywxMCBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2U6Om1heGltdW1TaXplCiB7CiAgICAgLy8gVGhl
IG1heGltdW0gc2l6ZSBmb3IgdGhpcyBkYXRhYmFzZSBpcyB0aGUgZnVsbCBxdW90YSBmb3IgdGhp
cyBvcmlnaW4sIG1pbnVzIHRoZSBjdXJyZW50IHVzYWdlIHdpdGhpbiB0aGlzIG9yaWdpbiwKICAg
ICAvLyBleGNlcHQgZm9yIHRoZSBjdXJyZW50IHVzYWdlIG9mIHRoaXMgZGF0YWJhc2UKLSAgICAK
KwogICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNr
ZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7CiAgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdl
cj4gbG9ja2VyKG1hbmFnZXIpOwotICAgIAorCiAgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCkpIC0gbWFuYWdl
ci5kaXNrVXNhZ2UobV9zZWN1cml0eU9yaWdpbi5nZXQoKSkgKyBkYXRhYmFzZVNpemUoKTsKIH0K
IApAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5
KEV4Y2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lv
bihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgCit2
b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29u
c3QgU3RyaW5nJiBuZXdWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZS5oCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNRTFRyYW5z
YWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIGNsYXNzIFNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFZhbHVlOwotICAgIAorCiB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRT
YWZlU2hhcmVkPERhdGFiYXNlPiB7CkBAIC03MywxMiArNzMsMTIgQEAgcHVibGljOgogLy8gRGly
ZWN0IHN1cHBvcnQgZm9yIHRoZSBET00gQVBJCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IG9wZW5EYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYg
b2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCAKKyAgICB2b2lkIGNoYW5nZVZl
cnNpb24oY29uc3QgU3RyaW5nJiBvbGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFj
az4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrKTsKICAgICB2b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgUGFzc1Jl
ZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgCisKIC8vIEludGVybmFs
IGVuZ2luZSBzdXBwb3J0CiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFi
bGVOYW1lKCk7CiAKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkNvcHkoKSBjb25zdDsKICAgICBTdHJpbmcg
c3RyaW5nSWRlbnRpZmllcigpIGNvbnN0OwotICAgIAorCiAgICAgYm9vbCBnZXRWZXJzaW9uRnJv
bURhdGFiYXNlKFN0cmluZyYpOwogICAgIGJvb2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7CkBA
IC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZSgpOwogICAgIGJvb2wg
b3BlbmVkKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc3Rv
cCgpOwogICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCkBA
IC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24o
KTsKICAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayhTUUxUcmFuc2FjdGlvbiop
OwogICAgIHZvaWQgc2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBib29sIGltbWVkaWF0ZWx5ID0gZmFsc2UpOwotICAgIAorCiAgICAgTWVzc2FnZVF1
ZXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gPiBtX3RyYW5zYWN0aW9uUXVldWU7CiAgICAgTXV0
ZXggbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKICAgICBib29sIG1fdHJhbnNhY3Rpb25J
blByb2dyZXNzOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZmls
ZW5hbWU7CiAKICAgICBib29sIG1fZGVsZXRlZDsKLSAgICAKKwogICAgIGJvb2wgbV9zdG9wcGVk
OwogCiAgICAgYm9vbCBtX29wZW5lZDsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZURl
dGFpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VEZXRhaWxzLmgJ
KHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlRGV0YWlscy5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFt
ZTsKICAgICBTdHJpbmcgbV9kaXNwbGF5TmFtZTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9l
eHBlY3RlZFVzYWdlOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX2N1cnJlbnRVc2FnZTsgCisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG1fY3VycmVudFVzYWdlOwogCiB9OwogCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQqIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgcmV0dXJuIDA7CiB9
CiAKLXZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSogZGF0
YWJhc2UpIAordm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNl
KiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdGhyZWFkSUQp
OwogICAgIEFTU0VSVChkYXRhYmFzZSk7CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBEYXRhYmFz
ZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKAogICAgIG1fb3BlbkRhdGFiYXNlU2V0LmFkZChk
YXRhYmFzZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlQ2xvc2Vk
KERhdGFiYXNlKiBkYXRhYmFzZSkgCit2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFz
ZUNsb3NlZChEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX3RocmVhZElEKTsKICAgICBBU1NFUlQoZGF0YWJhc2UpOwpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlVHJhY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVHJhY2tlci5jcHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVHJhY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBi
b29sIERhdGFiYXNlVHJhY2tlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhCiAgICAgLy8gU2luY2Ugd2Un
cmUgaW1taW5lbnRseSBvcGVuaW5nIGEgZGF0YWJhc2Ugd2l0aGluIHRoaXMgRG9jdW1lbnQncyBv
cmlnaW4sIG1ha2Ugc3VyZSB0aGlzIG9yaWdpbiBpcyBiZWluZyB0cmFja2VkIGJ5IHRoZSBRdW90
YVRyYWNrZXIKICAgICAvLyBieSBmZXRjaGluZyBpdCdzIGN1cnJlbnQgdXNhZ2Ugbm93CiAgICAg
dW5zaWduZWQgbG9uZyBsb25nIHVzYWdlID0gdXNhZ2VGb3JPcmlnaW4ob3JpZ2luKTsKLSAgICAK
KwogICAgIC8vIElmIGEgZGF0YWJhc2UgYWxyZWFkeSBleGlzdHMsIGlnbm9yZSB0aGUgcGFzc2Vk
LWluIGVzdGltYXRlZCBzaXplIGFuZCBzYXkgaXQncyBPSy4KICAgICBpZiAoaGFzRW50cnlGb3JE
YXRhYmFzZShvcmlnaW4sIG5hbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5NywxMSAr
MTk3LDExIEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWIKIAogICAg
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsK
ICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKLSAgICAK
KwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGF0aCBmb3IgdGhpcyBTZWN1cml0eU9yaWdpbiBleGlz
dHMKICAgICBpZiAoY3JlYXRlSWZOb3RFeGlzdHMgJiYgIVNRTGl0ZUZpbGVTeXN0ZW06OmVuc3Vy
ZURhdGFiYXNlRGlyZWN0b3J5RXhpc3RzKG9yaWdpblBhdGgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgCisKICAgICAvLyBTZWUgaWYgd2UgaGF2ZSBhIHBhdGggZm9yIHRoaXMgZGF0
YWJhc2UgeWV0CiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQpAQCAtMjIwLDEzICsyMjAsMTMgQEAgU3RyaW5nIERhdGFiYXNlVHJh
Y2tlcjo6ZnVsbFBhdGhGb3JEYXRhYgogICAgICAgICByZXR1cm4gU1FMaXRlRmlsZVN5c3RlbTo6
YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChvcmlnaW5QYXRoLCBzdGF0ZW1lbnQuZ2V0Q29s
dW1uVGV4dCgwKSk7CiAgICAgaWYgKCFjcmVhdGVJZk5vdEV4aXN0cykKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgICAgICAKKwogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBmaWxlbmFtZSBmcm9tIERh
dGFiYXNlIFRyYWNrZXIgZm9yIG9yaWdpbiAlcywgbmFtZSAlcyIsIG9yaWdpbi0+ZGF0YWJhc2VJ
ZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIG5hbWUuYXNjaWkoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIHN0YXRlbWVudC5maW5hbGl6ZSgpOwotICAg
IAorCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gU1FMaXRlRmlsZVN5c3RlbTo6Z2V0RmlsZU5hbWVG
b3JOZXdEYXRhYmFzZShvcmlnaW5QYXRoLCBuYW1lLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpLCAmbV9kYXRhYmFzZSk7CiAgICAgaWYgKCFhZGREYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZp
bGVOYW1lKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIFN0
cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWIKICAgICAgICAgaWYgKG9yaWdp
blF1b3RhTWFuYWdlcigpLnRyYWNrc09yaWdpbihvcmlnaW4pKQogICAgICAgICAgICAgb3JpZ2lu
UXVvdGFNYW5hZ2VyKCkuYWRkRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmdWxsRmlsZVBhdGgpOwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmdWxsRmlsZVBhdGg7CiB9CiAKQEAgLTMyMSwxOSAr
MzIxLDE5IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHMKICAgICBT
UUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZGlzcGxheU5hbWUs
IGVzdGltYXRlZFNpemUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8gQU5EIG5hbWU9PyIp
OwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKQogICAgICAgICBy
ZXR1cm4gRGF0YWJhc2VEZXRhaWxzKCk7Ci0gICAKKwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgx
LCBvcmlnaW5JZGVudGlmaWVyKTsKICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMiwgbmFtZSk7Ci0g
ICAgCisKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKTsKICAgICBpZiAocmVzdWx0
ID09IFNRTFJlc3VsdERvbmUpCiAgICAgICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMoKTsKLSAg
ICAKKwogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAgIExPR19FUlJP
UigiRXJyb3IgcmV0cmlldmluZyBkZXRhaWxzIGZvciBkYXRhYmFzZSAlcyBpbiBvcmlnaW4gJXMg
ZnJvbSB0cmFja2VyIGRhdGFiYXNlIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luSWRlbnRp
Zmllci5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMoKTsK
ICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDApLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uSW50NjQoMSksIHVzYWdlRm9y
RGF0YWJhc2UobmFtZSwgb3JpZ2luKSk7CiB9CiAKQEAgLTM0MywxNyArMzQzLDE3IEBAIHZvaWQg
RGF0YWJhc2VUcmFja2VyOjpzZXREYXRhYmFzZURldGFpbHMKIAogICAgIFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyID0gb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKICAgICBpbnQ2NF90IGd1
aWQgPSAwOwotICAgIAorCiAgICAgb3BlblRyYWNrZXJEYXRhYmFzZSh0cnVlKTsKICAgICBpZiAo
IW1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKICAgICBTUUxpdGVTdGF0ZW1l
bnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgZ3VpZCBGUk9NIERhdGFiYXNlcyBXSEVS
RSBvcmlnaW49PyBBTkQgbmFtZT0/Iik7CiAgICAgaWYgKHN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMUmVzdWx0T2spCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBzdGF0ZW1lbnQu
YmluZFRleHQoMSwgb3JpZ2luSWRlbnRpZmllcik7CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIs
IG5hbWUpOwotICAgIAorCiAgICAgaW50IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CiAgICAg
aWYgKHJlc3VsdCA9PSBTUUxSZXN1bHRSb3cpCiAgICAgICAgIGd1aWQgPSBzdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50NjQoMCk7CkBAIC0zNzEsMjAgKzM3MSwyMCBAQCB2b2lkIERhdGFiYXNlVHJhY2tl
cjo6c2V0RGF0YWJhc2VEZXRhaWxzCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKKwogICAgIFNRTGl0ZVN0YXRlbWVudCB1cGRhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwg
IlVQREFURSBEYXRhYmFzZXMgU0VUIGRpc3BsYXlOYW1lPT8sIGVzdGltYXRlZFNpemU9PyBXSEVS
RSBndWlkPT8iKTsKICAgICBpZiAodXBkYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1
bHRPaykKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgdXBkYXRlU3RhdGVtZW50LmJpbmRU
ZXh0KDEsIGRpc3BsYXlOYW1lKTsKICAgICB1cGRhdGVTdGF0ZW1lbnQuYmluZEludDY0KDIsIGVz
dGltYXRlZFNpemUpOwogICAgIHVwZGF0ZVN0YXRlbWVudC5iaW5kSW50NjQoMywgZ3VpZCk7Ci0g
ICAgCisKICAgICBpZiAodXBkYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKSB7
CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHVwZGF0ZSBkZXRhaWxzIGZvciBkYXRhYmFz
ZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW5JZGVudGlmaWVy
LmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuOyAgCisgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kaXNwYXRj
aERpZE1vZGlmeURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CiB9CkBAIC0zOTUsNyArMzk1LDcgQEAg
dW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6dXNhZwogICAgIFN0cmluZyBwYXRo
ID0gZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKTsKICAgICBpZiAocGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIHJldHVybiBT
UUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKHBhdGgpOwogfQogCkBAIC00ODEs
MTYgKzQ4MSwxNiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnCiAg
ICAgLy8gVXNlIHRoZSBPcmlnaW5RdW90YU1hbmFnZXIgbWVjaGFuaXNtIHRvIGNhbGN1bGF0ZSB0
aGUgdXNhZ2UKICAgICBpZiAob3JpZ2luUXVvdGFNYW5hZ2VyKCkudHJhY2tzT3JpZ2luKG9yaWdp
bikpCiAgICAgICAgIHJldHVybiBvcmlnaW5RdW90YU1hbmFnZXIoKS5kaXNrVXNhZ2Uob3JpZ2lu
KTsKLSAgICAKKwogICAgIC8vIElmIHRoZSBPcmlnaW5RdW90YU1hbmFnZXIgZG9lc24ndCB0cmFj
ayB0aGlzIG9yaWdpbiBhbHJlYWR5LCBwcmltZSBpdCB0byBkbyBzbwogICAgIG9yaWdpblF1b3Rh
TWFuYWdlcigpLnRyYWNrT3JpZ2luKG9yaWdpbik7Ci0gICAgCisKICAgICBWZWN0b3I8U3RyaW5n
PiBuYW1lczsKICAgICBkYXRhYmFzZU5hbWVzRm9yT3JpZ2luKG9yaWdpbiwgbmFtZXMpOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5hbWVzLnNpemUoKTsgKytpKQogICAgICAgICBv
cmlnaW5RdW90YU1hbmFnZXIoKS5hZGREYXRhYmFzZShvcmlnaW4sIG5hbWVzW2ldLCBmdWxsUGF0
aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZXNbaV0sIGZhbHNlKSk7Ci0gICAgCisKICAgICBpZiAo
IW9yaWdpblF1b3RhTWFuYWdlcigpLnRyYWNrc09yaWdpbihvcmlnaW4pKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gb3JpZ2luUXVvdGFNYW5hZ2VyKCkuZGlza1VzYWdlKG9yaWdpbik7
CkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNldFF1b3RhKFNlY3Vy
aXR5TwogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBlc3RhYmxpc2gg
b3JpZ2luICVzIGluIHRoZSB0cmFja2VyIiwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lu
cyBTRVQgcXVvdGE9PyBXSEVSRSBvcmlnaW49PyIpOyAgICAgICAgCisgICAgICAgICAgICBTUUxp
dGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2UsICJVUERBVEUgT3JpZ2lucyBTRVQgcXVv
dGE9PyBXSEVSRSBvcmlnaW49PyIpOwogICAgICAgICAgICAgYm9vbCBlcnJvciA9IHN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2s7CiAgICAgICAgICAgICBpZiAoIWVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCBxdW90YSk7CkBAIC01NTYsNyAr
NTU2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmFkZERhdGFiYXNlKFNlY3VyaQogICAgIG9w
ZW5UcmFja2VyRGF0YWJhc2UodHJ1ZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgLy8gTmV3IGRhdGFiYXNlIHNo
b3VsZCBuZXZlciBiZSBhZGRlZCB1bnRpbCB0aGUgb3JpZ2luIGhhcyBiZWVuIGVzdGFibGlzaGVk
CiAgICAgQVNTRVJUKGhhc0VudHJ5Rm9yT3JpZ2luKG9yaWdpbikpOwogCkBAIC01NzMsMTAgKzU3
MywxMCBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UoU2VjdXJpCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGFkZCBkYXRhYmFzZSAlcyB0byBvcmlnaW4gJXM6ICVzXG4i
LCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lp
KCkuZGF0YSgpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbik7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNjAzLDI3ICs2MDMsMjcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZU9yaWdpbihTZWN1cgogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZXRyaWV2ZSBsaXN0
IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4gJXMiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRp
ZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhYmFzZU5hbWVzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGlmICghZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgZGF0YWJhc2VOYW1lc1tp
XSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRlZCwg
d2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5IGhl
cmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3IgZGF0
YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgZGF0YWJhc2VOYW1lc1tpXS5hc2NpaSgpLmRhdGEoKSwg
b3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50KG1fZGF0YWJhc2Us
ICJERUxFVEUgRlJPTSBEYXRhYmFzZXMgV0hFUkUgb3JpZ2luPT8iKTsKICAgICBpZiAoc3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBwcmVwYXJlIGRlbGV0aW9uIG9mIGRhdGFiYXNlcyBmcm9tIG9yaWdpbiAlcyBmcm9tIHRy
YWNrZXIiLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAgICAgCisKICAgICBzdGF0ZW1lbnQuYmluZFRleHQo
MSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgCisKICAgICBpZiAoIXN0YXRl
bWVudC5leGVjdXRlQ29tbWFuZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4
ZWN1dGUgZGVsZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIs
IG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgU1FMaXRlU3RhdGVtZW50IG9yaWdpblN0YXRlbWVu
dChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gT3JpZ2lucyBXSEVSRSBvcmlnaW49PyIpOwogICAg
IGlmIChvcmlnaW5TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHByZXBhcmUgZGVsZXRpb24gb2Ygb3JpZ2luICVzIGZyb20g
dHJhY2tlciIsIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwpA
QCAtNjMxLDcgKzYzMSw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2Vj
dXIKICAgICB9CiAKICAgICBvcmlnaW5TdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgCisKICAgICBpZiAoIW9yaWdpblN0YXRlbWVudC5leGVj
dXRlQ29tbWFuZCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4ZWN1dGUgZGVs
ZXRpb24gb2YgZGF0YWJhc2VzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tlciIsIG9yaWdpbi0+
ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CkBA
IC02NzQsMjYgKzY3NCwyNiBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2Uo
U2VjCiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIGZvciBkYXRhYmFz
ZSAlcyBpbiBvcmlnaW4gJXMiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNl
SWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKKwogICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIkRFTEVURSBG
Uk9NIERhdGFiYXNlcyBXSEVSRSBvcmlnaW49PyBBTkQgbmFtZT0/Iik7CiAgICAgaWYgKHN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gcHJlcGFyZSBkZWxldGlvbiBvZiBkYXRhYmFzZSAlcyBmcm9tIG9yaWdpbiAlcyBmcm9t
IHRyYWNrZXIiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmll
cigpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAgICAgCisK
ICAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
CiAgICAgc3RhdGVtZW50LmJpbmRUZXh0KDIsIG5hbWUpOwotICAgIAorCiAgICAgaWYgKCFzdGF0
ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBl
eGVjdXRlIGRlbGV0aW9uIG9mIGRhdGFiYXNlICVzIGZyb20gb3JpZ2luICVzIGZyb20gdHJhY2tl
ciIsIG5hbWUuYXNjaWkoKS5kYXRhKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgewogICAg
ICAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBxdW90YU1hbmFnZXJMb2NrZXIob3JpZ2lu
UXVvdGFNYW5hZ2VyKCkpOwogICAgICAgICBvcmlnaW5RdW90YU1hbmFnZXIoKS5yZW1vdmVEYXRh
YmFzZShvcmlnaW4sIG5hbWUpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2NsaWVudCkgewog
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luKTsKICAgICAg
ICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmgJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlVHJhY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxOCArNzAs
MTggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2FnZUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YUZvck9yaWdpbihTZWN1
cml0eU9yaWdpbiopOwogICAgIHZvaWQgc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW4qLCB1bnNpZ25l
ZCBsb25nIGxvbmcpOwotICAgIAorCiAgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKTsKICAg
ICB2b2lkIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIHZvaWQgZGVsZXRlRGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBz
ZXRDbGllbnQoRGF0YWJhc2VUcmFja2VyQ2xpZW50Kik7Ci0gICAgCisKICAgICAvLyBGcm9tIGEg
c2Vjb25kYXJ5IHRocmVhZCwgbXVzdCBiZSB0aHJlYWQgc2FmZSB3aXRoIGl0cyBkYXRhCiAgICAg
dm9pZCBzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSk7Ci0gICAgCisKICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG9yaWdpblF1
b3RhTWFuYWdlcigpOwotICAgIAorCiAgICAgc3RhdGljIERhdGFiYXNlVHJhY2tlciYgdHJhY2tl
cigpOwogCiAgICAgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiopOwpAQCAt
OTMsMTIgKzkzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBvcGVuVHJhY2tlckRhdGFiYXNlKGJv
b2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpOwogCiAgICAgU3RyaW5nIG9yaWdpblBhdGgoU2VjdXJp
dHlPcmlnaW4qKSBjb25zdDsKLSAgICAKKwogICAgIGJvb2wgaGFzRW50cnlGb3JEYXRhYmFzZShT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKLSAgICAK
KwogICAgIGJvb2wgYWRkRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBwb3B1bGF0ZU9yaWdpbnMoKTsKLSAg
ICAKKwogICAgIGJvb2wgZGVsZXRlRGF0YWJhc2VGaWxlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIFNRTGl0ZURhdGFiYXNlIG1fZGF0YWJhc2U7CkBAIC0xMTcs
NyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBtX3F1
b3RhTWFuYWdlcjsKIAogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aDsKLSAgICAK
KwogICAgIERhdGFiYXNlVHJhY2tlckNsaWVudCogbV9jbGllbnQ7CiAKICAgICBzdGQ6OnBhaXI8
U2VjdXJpdHlPcmlnaW4qLCBEYXRhYmFzZURldGFpbHM+KiBtX3Byb3Bvc2VkRGF0YWJhc2U7Cklu
ZGV4OiBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGFzay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRhc2suY3BwCShyZXZpc2lvbiA0Nzc5OSkKKysr
IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CkBAIC03Myw0ICs3MywzIEBAIHZvaWQgTG9jYWxTdG9yYWdlVGFzazo6cGVyZm9ybVRhc2soKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQotCkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvTG9jYWxTdG9yYWdlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VUYXNrLmgJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2Fs
U3RvcmFnZVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCiAjaWZuZGVmIExvY2FsU3RvcmFnZVRhc2tfaApJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9y
YWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9z
dG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIw
LDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVN5bmMoUGEKIHZv
aWQgTG9jYWxTdG9yYWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgCisKICAgICAvLyBJZGVhbGx5IHdlJ2QgbmV2ZXIgYmUga2lsbGluZyBh
IHRocmVhZCB0aGF0IHdhc24ndCBsaXZlLCBzbyBBU1NFUlQgaXQuCiAgICAgLy8gQnV0IGlmIHdl
IGRvIGluIGEgcmVsZWFzZSBidWlsZCwgbWFrZSBzdXJlIHRvIG5vdCB3YWl0IG9uIGEgY29uZGl0
aW9uIHRoYXQgd2lsbCBuZXZlciBnZXQgc2lnbmFsbGVkCiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtp
bGxlZCgpICYmIG1fdGhyZWFkSUQpOwpAQCAtMTA5LDkgKzEwOSw5IEBAIHZvaWQgTG9jYWxTdG9y
YWdlVGhyZWFkOjp0ZXJtaW5hdGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV90ZXJtaW5hdGVMb2NrKTsKLSAgICAKKwogICAgIG1fcXVldWUuYXBwZW5kKExv
Y2FsU3RvcmFnZVRhc2s6OmNyZWF0ZVRlcm1pbmF0ZSh0aGlzKSk7Ci0gICAgCisKICAgICBtX3Rl
cm1pbmF0ZUNvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlTG9jayk7CiB9CiAKQEAgLTEyMCw3ICsx
MjAsNyBAQCB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6cGVyZm9ybVRlcm1pbmF0CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX3F1ZXVlLmtpbGwoKTsKLSAgICAgICAgCisK
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV90ZXJtaW5hdGVMb2NrKTsKICAgICBtX3Rlcm1pbmF0
ZUNvbmRpdGlvbi5zaWduYWwoKTsKIH0KQEAgLTEyOCw0ICsxMjgsMyBAQCB2b2lkIExvY2FsU3Rv
cmFnZVRocmVhZDo6cGVyZm9ybVRlcm1pbmF0CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NU
T1JBR0UpCi0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgJKHJldmlzaW9u
IDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYg
TG9jYWxTdG9yYWdlVGhyZWFkX2gKQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlVGhyZWFkPiBtX3NlbGZSZWY7CiAKICAgICAg
ICAgTWVzc2FnZVF1ZXVlPFJlZlB0cjxMb2NhbFN0b3JhZ2VUYXNrPiA+IG1fcXVldWU7Ci0gICAg
ICAgIAorCiAgICAgICAgIE11dGV4IG1fdGVybWluYXRlTG9jazsKICAgICAgICAgVGhyZWFkQ29u
ZGl0aW9uIG1fdGVybWluYXRlQ29uZGl0aW9uOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
T3JpZ2luUXVvdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvT3JpZ2luUXVvdGFNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMjUgKzc1LDI1
IEBAIGJvb2wgT3JpZ2luUXVvdGFNYW5hZ2VyOjp0cmFja3NPcmlnaW4oU2UKIHZvaWQgT3JpZ2lu
UXVvdGFNYW5hZ2VyOjphZGREYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAg
ICBBU1NFUlQobV91c2FnZVJlY29yZEd1YXJkTG9ja2VkKTsKLSAgICAKKwogICAgIE9yaWdpblVz
YWdlUmVjb3JkKiB1c2FnZVJlY29yZCA9IG1fdXNhZ2VNYXAuZ2V0KG9yaWdpbik7CiAgICAgQVNT
RVJUKHVzYWdlUmVjb3JkKTsKLSAgICAKKwogICAgIHVzYWdlUmVjb3JkLT5hZGREYXRhYmFzZShk
YXRhYmFzZUlkZW50aWZpZXIuY29weSgpLCBmdWxsUGF0aC5jb3B5KCkpOwogfQogCiB2b2lkIE9y
aWdpblF1b3RhTWFuYWdlcjo6cmVtb3ZlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKG1fdXNhZ2VS
ZWNvcmRHdWFyZExvY2tlZCk7Ci0gICAgCi0gICAgaWYgKE9yaWdpblVzYWdlUmVjb3JkKiB1c2Fn
ZVJlY29yZCA9IG1fdXNhZ2VNYXAuZ2V0KG9yaWdpbikpICAgIAorCisgICAgaWYgKE9yaWdpblVz
YWdlUmVjb3JkKiB1c2FnZVJlY29yZCA9IG1fdXNhZ2VNYXAuZ2V0KG9yaWdpbikpCiAgICAgICAg
IHVzYWdlUmVjb3JkLT5yZW1vdmVEYXRhYmFzZShkYXRhYmFzZUlkZW50aWZpZXIpOwogfQogCiB2
b2lkIE9yaWdpblF1b3RhTWFuYWdlcjo6cmVtb3ZlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiB7CiAgICAgQVNTRVJUKG1fdXNhZ2VSZWNvcmRHdWFyZExvY2tlZCk7Ci0gICAgCisKICAg
ICBpZiAoT3JpZ2luVXNhZ2VSZWNvcmQqIHVzYWdlUmVjb3JkID0gbV91c2FnZU1hcC5nZXQob3Jp
Z2luKSkgewogICAgICAgICBtX3VzYWdlTWFwLnJlbW92ZShvcmlnaW4pOwogICAgICAgICBkZWxl
dGUgdXNhZ2VSZWNvcmQ7CkBAIC0xMDcsMjEgKzEwNywyMCBAQCB2b2lkIE9yaWdpblF1b3RhTWFu
YWdlcjo6bWFya0RhdGFiYXNlKERhCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7CiAgICAgT3JpZ2luVXNhZ2VSZWNvcmQq
IHVzYWdlUmVjb3JkID0gbV91c2FnZU1hcC5nZXQob3JpZ2luKTsKICAgICBBU1NFUlQodXNhZ2VS
ZWNvcmQpOwotICAgIAorCiAgICAgdXNhZ2VSZWNvcmQtPm1hcmtEYXRhYmFzZShkYXRhYmFzZS0+
c3RyaW5nSWRlbnRpZmllcigpKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIE9yaWdpblF1b3Rh
TWFuYWdlcjo6ZGlza1VzYWdlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pIGNvbnN0CiB7CiAgICAg
QVNTRVJUKG1fdXNhZ2VSZWNvcmRHdWFyZExvY2tlZCk7Ci0gICAgCisKICAgICBPcmlnaW5Vc2Fn
ZVJlY29yZCogdXNhZ2VSZWNvcmQgPSBtX3VzYWdlTWFwLmdldChvcmlnaW4pOwogICAgIEFTU0VS
VCh1c2FnZVJlY29yZCk7Ci0gICAgCisKICAgICByZXR1cm4gdXNhZ2VSZWNvcmQtPmRpc2tVc2Fn
ZSgpOwogfQogCi0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6IFdlYkNv
cmUvc3RvcmFnZS9PcmlnaW5Vc2FnZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL09yaWdpblVzYWdlUmVjb3JkLmNwcAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvT3JpZ2luVXNhZ2VSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCAr
NDQsMTAgQEAgdm9pZCBPcmlnaW5Vc2FnZVJlY29yZDo6YWRkRGF0YWJhc2UoY29ucwogICAgIEFT
U0VSVCghbV9kYXRhYmFzZU1hcC5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgQVNTRVJUX0FS
RyhpZGVudGlmaWVyLCBpZGVudGlmaWVyLmltcGwoKS0+cmVmQ291bnQoKSA9PSAxKTsKICAgICBB
U1NFUlRfQVJHKGZ1bGxQYXRoLCBmdWxsUGF0aC5pbXBsKCktPnJlZkNvdW50KCkgPT0gMSk7Ci0g
ICAgCisKICAgICBtX2RhdGFiYXNlTWFwLnNldChpZGVudGlmaWVyLCBEYXRhYmFzZUVudHJ5KGZ1
bGxQYXRoKSk7CiAgICAgbV91bmtub3duU2V0LmFkZChpZGVudGlmaWVyKTsKLSAgICAgCisKICAg
ICBtX2NhY2hlZERpc2tVc2FnZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtODEsMTMgKzgxLDEz
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBPcmlnaW5Vc2FnZVJlY29yZDo6ZGkKICAgICBmb3IgKDsg
aVVua25vd24gIT0gZW5kVW5rbm93bjsgKytpVW5rbm93bikgewogICAgICAgICBjb25zdCBTdHJp
bmcmIHBhdGggPSBtX2RhdGFiYXNlTWFwLmdldCgqaVVua25vd24pLmZpbGVuYW1lOwogICAgICAg
ICBBU1NFUlQoIXBhdGguaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAv
LyBXaGVuIHdlIGNhbid0IGRldGVybWluZSB0aGUgZmlsZSBzaXplLCB3ZSdsbCBqdXN0IGhhdmUg
dG8gYXNzdW1lIHRoZSBmaWxlIGlzIG1pc3NpbmcvaW5hY2Nlc3NpYmxlLgogICAgICAgICBsb25n
IGxvbmcgc2l6ZSA9IFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCk7
CiAgICAgICAgIG1fZGF0YWJhc2VNYXAuc2V0KCppVW5rbm93biwgRGF0YWJhc2VFbnRyeShwYXRo
LCBzaXplKSk7CiAgICAgfQogICAgIG1fdW5rbm93blNldC5jbGVhcigpOwotICAgIAorCiAgICAg
Ly8gUmVjYWxjdWxhdGUgdGhlIGNhY2hlZCB1c2FnZSB2YWx1ZS4KICAgICBtX2NhY2hlZERpc2tV
c2FnZSA9IDA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIERhdGFiYXNlRW50cnk+OjppdGVyYXRvciBp
RGF0YWJhc2UgPSBtX2RhdGFiYXNlTWFwLmJlZ2luKCk7CkBAIC05OCw3ICs5OCw3IEBAIHVuc2ln
bmVkIGxvbmcgbG9uZyBPcmlnaW5Vc2FnZVJlY29yZDo6ZGkKICAgICBtX2NhY2hlZERpc2tVc2Fn
ZUlzVmFsaWQgPSB0cnVlOwogICAgIHJldHVybiBtX2NhY2hlZERpc2tVc2FnZTsKIH0KLSAgICAK
KwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5Vc2FnZVJlY29yZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5Vc2FnZVJlY29yZC5oCShyZXZp
c2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9PcmlnaW5Vc2FnZVJlY29yZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw0ICs2OCw0IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0jZW5kaWYg
CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9TUUxFcnJvci5oCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUv
c3RvcmFnZS9TUUxFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHVuc2lnbmVkIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KICAgICBT
dHJpbmcgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5jb3B5KCk7IH0KLSAgICAK
KwogcHJpdmF0ZToKICAgICBTUUxFcnJvcih1bnNpZ25lZCBjb2RlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIDogbV9jb2RlKGNvZGUpLCBtX21lc3NhZ2UobWVzc2FnZS5jb3B5KCkpIHsgfQogICAg
IHVuc2lnbmVkIG1fY29kZTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3Qu
aAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNRTFJlc3VsdFNldFJvd0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTUUxSZXN1bHRT
ZXRSb3dMaXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMUmVzdWx0U2V0
Um93TGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFJlc3VsdFNldFJvd0xp
c3QpOyB9Ci0gICAgCisKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29sdW1uTmFtZXMoKSBj
b25zdCB7IHJldHVybiBtX2NvbHVtbnM7IH0KICAgICBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiB2
YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfQogCkBAIC01MCw3ICs1MCw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0KCkgeyB9Ci0gICAgCisK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX2NvbHVtbnM7CiAgICAgVmVjdG9yPFNRTFZhbHVlPiBtX3Jl
c3VsdDsKIH07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAkocmV2aXNpb24gNDc3OTkp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcsMjQgKzU3LDI0IEBAIFNRTFN0YXRlbWVudDo6U1FMU3RhdGVtZW50KGNvbnN0IFN0cmluZyYK
ICAgICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCiB7CiB9Ci0gICAKKwogYm9vbCBTUUxTdGF0ZW1l
bnQ6OmV4ZWN1dGUoRGF0YWJhc2UqIGRiKQogewogICAgIEFTU0VSVCghbV9yZXN1bHRTZXQpOwot
ICAgICAgICAKKwogICAgIC8vIElmIHdlJ3JlIHJlLXJ1bm5pbmcgdGhpcyBzdGF0ZW1lbnQgYWZ0
ZXIgYSBxdW90YSB2aW9sYXRpb24sIHdlIG5lZWQgdG8gY2xlYXIgdGhhdCBlcnJvciBub3cKICAg
ICBjbGVhckZhaWx1cmVEdWVUb1F1b3RhKCk7CiAKLSAgICAvLyBUaGlzIHRyYW5zYWN0aW9uIG1p
Z2h0IGhhdmUgYmVlbiBtYXJrZWQgYmFkIHdoaWxlIGl0IHdhcyBiZWluZyBzZXQgdXAgb24gdGhl
IG1haW4gdGhyZWFkLCAKKyAgICAvLyBUaGlzIHRyYW5zYWN0aW9uIG1pZ2h0IGhhdmUgYmVlbiBt
YXJrZWQgYmFkIHdoaWxlIGl0IHdhcyBiZWluZyBzZXQgdXAgb24gdGhlIG1haW4gdGhyZWFkLAog
ICAgIC8vIHNvIGlmIHRoZXJlIGlzIHN0aWxsIGFuIGVycm9yLCByZXR1cm4gZmFsc2UuCiAgICAg
aWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICBpZiAo
bV9yZWFkT25seSkKICAgICAgICAgZGItPnNldEF1dGhvcml6ZXJSZWFkT25seSgpOwotICAgIAor
CiAgICAgU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlID0gJmRiLT5tX3NxbGl0ZURhdGFiYXNlOwot
ICAgIAorCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCgqZGF0YWJhc2UsIG1fc3RhdGVt
ZW50KTsKICAgICBpbnQgcmVzdWx0ID0gc3RhdGVtZW50LnByZXBhcmUoKTsKIApAQCAtOTgsNyAr
OTgsNyBAQCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSogZGIpCiAgICAgICAg
ICAgICBzZXRGYWlsdXJlRHVlVG9RdW90YSgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2sp
IHsKICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIGJpbmQgdmFsdWUgaW5k
ZXggJWkgdG8gc3RhdGVtZW50IGZvciBxdWVyeSAnJXMnIiwgaSArIDEsIG1fc3RhdGVtZW50LmFz
Y2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKDEs
IGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CkBAIC0xNjUsOSArMTY1LDkgQEAgdm9pZCBTUUxT
dGF0ZW1lbnQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRQogYm9vbCBTUUxTdGF0ZW1lbnQ6OnBlcmZv
cm1DYWxsYmFjayhTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKHRy
YW5zYWN0aW9uKTsKLSAgICAKKwogICAgIGJvb2wgY2FsbGJhY2tFcnJvciA9IGZhbHNlOwotICAg
IAorCiAgICAgLy8gQ2FsbCB0aGUgYXBwcm9wcmlhdGUgc3RhdGVtZW50IGNhbGxiYWNrIGFuZCB0
cmFjayBpZiBpdCByZXN1bHRlZCBpbiBhbiBlcnJvciwKICAgICAvLyBiZWNhdXNlIHRoZW4gd2Ug
bmVlZCB0byBqdW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxsYmFjay4KICAgICBpZiAo
bV9lcnJvcikgewpAQCAtMTk1LDkgKzE5NSw5IEBAIHZvaWQgU1FMU3RhdGVtZW50OjpjbGVhckZh
aWx1cmVEdWVUb1F1b3QKICAgICAgICAgbV9lcnJvciA9IDA7CiB9CiAKLWJvb2wgU1FMU3RhdGVt
ZW50OjpsYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpIGNvbnN0IAoteyAKLSAgICByZXR1
cm4gbV9lcnJvciAmJiBtX2Vycm9yLT5jb2RlKCkgPT0gNDsgCitib29sIFNRTFN0YXRlbWVudDo6
bGFzdEV4ZWN1dGlvbkZhaWxlZER1ZVRvUXVvdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2Vy
cm9yICYmIG1fZXJyb3ItPmNvZGUoKSA9PSA0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5oCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUv
c3RvcmFnZS9TUUxTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTAgKzUyLDEwIEBA
IGNsYXNzIFN0cmluZzsKIGNsYXNzIFNRTFN0YXRlbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlU2hh
cmVkPFNRTFN0YXRlbWVudD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFN0
YXRlbWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mLCBQ
YXNzUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrPiwgYm9vbCByZWFkT25seSk7Ci0gICAgCisKICAgICBib29sIGV4ZWN1dGUo
RGF0YWJhc2UqKTsKICAgICBib29sIGxhc3RFeGVjdXRpb25GYWlsZWREdWVUb1F1b3RhKCkgY29u
c3Q7Ci0gICAgCisKICAgICBib29sIGhhc1N0YXRlbWVudENhbGxiYWNrKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZW1lbnRDYWxsYmFjazsgfQogICAgIGJvb2wgaGFzU3RhdGVtZW50RXJyb3JDYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVtZW50RXJyb3JDYWxsYmFjazsgfQogCkBAIC02
MywyMiArNjMsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVyc2lvbk1pc21hdGNoZWRFcnJv
cigpOwogCiAgICAgYm9vbCBwZXJmb3JtQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24qKTsKLSAgICAK
KwogICAgIFNRTEVycm9yKiBzcWxFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7
IH0KIHByaXZhdGU6CiAgICAgU1FMU3RhdGVtZW50KGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBj
b25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50
Q2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIGJvb2wgcmVhZE9ubHkpOwogCiAgICAgdm9pZCBzZXRGYWlsdXJlRHVl
VG9RdW90YSgpOwogICAgIHZvaWQgY2xlYXJGYWlsdXJlRHVlVG9RdW90YSgpOwotICAgIAorCiAg
ICAgU3RyaW5nIG1fc3RhdGVtZW50OwogICAgIFZlY3RvcjxTUUxWYWx1ZT4gbV9hcmd1bWVudHM7
CiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudENhbGxiYWNrPiBtX3N0YXRlbWVudENhbGxiYWNrOwog
ICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBtX3N0YXRlbWVudEVycm9yQ2Fs
bGJhY2s7Ci0gICAgCisKICAgICBSZWZQdHI8U1FMRXJyb3I+IG1fZXJyb3I7CiAgICAgUmVmUHRy
PFNRTFJlc3VsdFNldD4gbV9yZXN1bHRTZXQ7Ci0gICAgCisKICAgICBib29sIG1fcmVhZE9ubHk7
CiB9OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50Q2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50Q2FsbGJhY2suaAkocmV2aXNp
b24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50Q2FsbGJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNRTFRyYW5zYWN0aW9uOwogY2xhc3MgU1FMUmVzdWx0U2V0OwotICAgIAorCiBjbGFzcyBTUUxT
dGF0ZW1lbnRDYWxsYmFjayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTFN0YXRlbWVudENh
bGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1FMU3RhdGVtZW50Q2FsbGJhY2soKSB7
IH0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaAko
cmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU1FMVHJhbnNhY3Rpb247CiBjbGFzcyBTUUxFcnJvcjsKLSAgICAKKwogY2xh
c3MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrKCkgeyB9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5j
cHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsMjAgKzUyLDIwIEBACiAjaW5jbHVkZSAiU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAKLS8vIFRoZXJlJ3Mg
bm8gd2F5IG9mIGtub3dpbmcgZXhhY3RseSBob3cgbXVjaCBtb3JlIHNwYWNlIHdpbGwgYmUgcmVx
dWlyZWQgd2hlbiBhIHN0YXRlbWVudCBoaXRzIHRoZSBxdW90YSBsaW1pdC4gIAorLy8gVGhlcmUn
cyBubyB3YXkgb2Yga25vd2luZyBleGFjdGx5IGhvdyBtdWNoIG1vcmUgc3BhY2Ugd2lsbCBiZSBy
ZXF1aXJlZCB3aGVuIGEgc3RhdGVtZW50IGhpdHMgdGhlIHF1b3RhIGxpbWl0LgogLy8gRm9yIG5v
dywgd2UnbGwgYXJiaXRyYXJpbHkgY2hvb3NlIGN1cnJlbnRRdW90YSArIDFtYi4KIC8vIEluIHRo
ZSBmdXR1cmUgd2UgZGVjaWRlIHRvIHRyYWNrIGlmIGEgc2l6ZSBpbmNyZWFzZSB3YXNuJ3QgZW5v
dWdoLCBhbmQgYXNrIGZvciBsYXJnZXItYW5kLWxhcmdlciBpbmNyZWFzZXMgdW50aWwgaXRzIGVu
b3VnaC4KIHN0YXRpYyBjb25zdCBpbnQgRGVmYXVsdFF1b3RhU2l6ZUluY3JlYXNlID0gMTA0ODU3
NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBT
UUxUcmFuc2FjdGlvbjo6Y3JlYXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2ssIAorUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJh
bnNhY3Rpb246OmNyZWF0ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25D
YWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1FMVHJhbnNhY3Rpb24oZGIsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2Fs
bGJhY2ssIHdyYXBwZXIpKTsKIH0KIAotU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERh
dGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIAorU1FMVHJhbnNhY3Rpb246
OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bldyYXBwZXI+IHdyYXBwZXIpCiAgICAgOiBtX25leHRTdGVwKCZTUUxUcmFuc2FjdGlvbjo6YWNx
dWlyZUxvY2spCiAgICAgLCBtX2V4ZWN1dGVTcWxBbGxvd2VkKGZhbHNlKQpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FMKGNvbnN0IFN0CiAgICAgUGFnZSog
cGFnZSA9IG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UgfHwg
cGFnZS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZWFk
T25seU1vZGUgPSB0cnVlOwotICAgIAorCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudD4gc3RhdGVt
ZW50ID0gU1FMU3RhdGVtZW50OjpjcmVhdGUoc3FsU3RhdGVtZW50LCBhcmd1bWVudHMsIGNhbGxi
YWNrLCBjYWxsYmFja0Vycm9yLCByZWFkT25seU1vZGUpOwogCiAgICAgaWYgKG1fZGF0YWJhc2Ut
PmRlbGV0ZWQoKSkKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNo
ZWNrQW5kSGFuZGxlQ2xvc2UKIHsKICAgICBpZiAoIW1fZGF0YWJhc2UtPnN0b3BwZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3YXMgc3Rv
cHBlZCwgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIGNhbmNlbCBxdWV1ZWQgd29yawogICAgIExPRyhT
dG9yYWdlQVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgLSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRo
aXMgdHJhbnNhY3Rpb24iKTsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRl
eCk7CiAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSAwOwot
ICAgIAorCiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBz
dG9wcGVkLCBhcyB3ZWxsCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKICAgICAgICAg
bV9zcWxpdGVUcmFuc2FjdGlvbi0+c3RvcCgpOwpAQCAtMTc2LDkgKzE3Niw5IEBAIGJvb2wgU1FM
VHJhbnNhY3Rpb246OnBlcmZvcm1OZXh0U3RlcCgpCiAgICAgICAgICAgIG1fbmV4dFN0ZXAgPT0g
JlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0IHx8CiAgICAgICAgICAgIG1fbmV4
dFN0ZXAgPT0gJlNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJTdWNjZXNzQ2FsbGJhY2sgfHwK
ICAgICAgICAgICAgbV9uZXh0U3RlcCA9PSAmU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjayk7Ci0gICAgCisKICAgICBjaGVja0FuZEhhbmRsZUNsb3Nl
ZERhdGFiYXNlKCk7Ci0gICAgCisKICAgICBpZiAobV9uZXh0U3RlcCkKICAgICAgICAgKHRoaXMt
PiptX25leHRTdGVwKSgpOwogCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bjo6cGVyZm9ybVBlbmRpbmdDYWxsYgogICAgICAgICAgICBtX25leHRTdGVwID09ICZTUUxUcmFu
c2FjdGlvbjo6ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjayk7CiAKICAgICBjaGVja0FuZEhhbmRsZUNs
b3NlZERhdGFiYXNlKCk7Ci0gICAgCisKICAgICBpZiAobV9uZXh0U3RlcCkKICAgICAgICAgKHRo
aXMtPiptX25leHRTdGVwKSgpOwogfQpAQCAtMjMxLDE0ICsyMzEsMTQgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUAogCiAgICAgLy8gU2V0IHRoZSBtYXhpbXVtIHVz
YWdlIGZvciB0aGlzIHRyYW5zYWN0aW9uCiAgICAgbV9kYXRhYmFzZS0+bV9zcWxpdGVEYXRhYmFz
ZS5zZXRNYXhpbXVtU2l6ZShtX2RhdGFiYXNlLT5tYXhpbXVtU2l6ZSgpKTsKLSAgICAKKwogICAg
IEFTU0VSVCghbV9zcWxpdGVUcmFuc2FjdGlvbik7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5z
ZXQobmV3IFNRTGl0ZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UtPm1fc3FsaXRlRGF0YWJhc2UpKTsK
LSAgICAKKwogICAgIG1fZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7
CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKLSAgICBtX2RhdGFiYXNlLT5tX2Rh
dGFiYXNlQXV0aG9yaXplci0+ZW5hYmxlKCk7ICAgIAotICAgIAorICAgIG1fZGF0YWJhc2UtPm1f
ZGF0YWJhc2VBdXRob3JpemVyLT5lbmFibGUoKTsKKwogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXBz
IDErMiAtIE9wZW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2UsIGp1bXBpbmcgdG8gdGhl
IGVycm9yIGNhbGxiYWNrIGlmIHRoYXQgZmFpbHMKICAgICBpZiAoIW1fc3FsaXRlVHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPm1fc3FsaXRl
RGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZv
aWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFAKICAgICAgICAgaGFuZGxlVHJh
bnNhY3Rpb25FcnJvcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAg
ICAvLyBUcmFuc2FjdGlvbiBTdGVwcyAzIC0gUGVmb3JtIHByZWZsaWdodCBzdGVwcywganVtcGlu
ZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBmYWlsCiAgICAgaWYgKG1fd3JhcHBlciAm
JiAhbV93cmFwcGVyLT5wZXJmb3JtUHJlZmxpZ2h0KHRoaXMpKSB7CiAgICAgICAgIEFTU0VSVCgh
bV9kYXRhYmFzZS0+bV9zcWxpdGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CkBA
IC0yNTksNyArMjU5LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5k
UAogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICAKKwogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgNCAtIEludm9rZSB0aGUg
dHJhbnNhY3Rpb24gY2FsbGJhY2sgd2l0aCB0aGUgbmV3IFNRTFRyYW5zYWN0aW9uIG9iamVjdAog
ICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxi
YWNrOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyVHJhbnNhY3Rpb25D
YWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwpAQCAtMzAzLDcgKzMwMyw3IEBA
IHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogICAgICAgICAgICAgbV9zaG91
bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAgICAgICAgICAgIC8vIEZJWE1FIC0g
QW5vdGhlciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBhZnRlciA8cmRhcjovL3Byb2JsZW0v
NTYyODQ2OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAgLy8gU2VlIDo6b3BlblRyYW5zYWN0
aW9uQW5kUHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KLSAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICAvLyBSZXNldCB0aGUgbWF4aW11bSBzaXplIGhlcmUsIGFzIGl0IHdhcyBpbmNyZWFzZWQg
dG8gYWxsb3cgdXMgdG8gcmV0cnkgdGhpcyBzdGF0ZW1lbnQKICAgICAgICAgICAgIG1fZGF0YWJh
c2UtPm1fc3FsaXRlRGF0YWJhc2Uuc2V0TWF4aW11bVNpemUobV9kYXRhYmFzZS0+bWF4aW11bVNp
emUoKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMTMsMTQgKzMxMywxNCBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpydW5TdGF0ZW1lbnRzKCkKICAgICAgICAgICAgICAgICBoYW5kbGVDdXJyZW50
U3RhdGVtZW50RXJyb3IoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGFkdmFuY2UgdG8gdGhl
IG5leHQgc3RhdGVtZW50CiAgICAgICAgICAgICBnZXROZXh0U3RhdGVtZW50KCk7CiAgICAgICAg
IH0KICAgICB9IHdoaWxlIChydW5DdXJyZW50U3RhdGVtZW50KCkpOwotICAgIAorCiAgICAgLy8g
SWYgcnVuQ3VycmVudFN0YXRlbWVudCgpIHJldHVybmVkIGZhbHNlLCB0aGF0IG1lYW5zIGVpdGhl
ciB0aGVyZSB3YXMgbm8gY3VycmVudCBzdGF0ZW1lbnQgdG8gcnVuLAotICAgIC8vIG9yIHRoZSBj
dXJyZW50IHN0YXRlbWVudCByZXF1aXJlcyBhIGNhbGxiYWNrIHRvIGNvbXBsZXRlLiAgSW4gdGhl
IGxhdGVyIGNhc2UsIGl0IGFsc28gc2NoZWR1bGVkIAorICAgIC8vIG9yIHRoZSBjdXJyZW50IHN0
YXRlbWVudCByZXF1aXJlcyBhIGNhbGxiYWNrIHRvIGNvbXBsZXRlLiAgSW4gdGhlIGxhdGVyIGNh
c2UsIGl0IGFsc28gc2NoZWR1bGVkCiAgICAgLy8gdGhlIGNhbGxiYWNrIG9yIHBlcmZvcm1lZCBh
bnkgb3RoZXIgYWRkaXRpb25hbCB3b3JrIHNvIHdlIGNhbiByZXR1cm4KICAgICBpZiAoIW1fY3Vy
cmVudFN0YXRlbWVudCkKICAgICAgICAgcG9zdGZsaWdodEFuZENvbW1pdCgpOwpAQCAtMzI5LDcg
KzMyOSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogdm9pZCBTUUxU
cmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRlbWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50
ID0gMDsKLSAgICAKKwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsK
ICAgICBpZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fY3VycmVu
dFN0YXRlbWVudCA9IG1fc3RhdGVtZW50UXVldWUuZmlyc3QoKTsKQEAgLTM0MSw5ICszNDEsOSBA
QCBib29sIFNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50CiB7CiAgICAgaWYgKCFt
X2N1cnJlbnRTdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAg
ICBtX2RhdGFiYXNlLT5tX2RhdGFiYXNlQXV0aG9yaXplci0+cmVzZXQoKTsKLSAgICAKKwogICAg
IGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmV4ZWN1dGUobV9kYXRhYmFzZS5nZXQoKSkpIHsKICAg
ICAgICAgaWYgKG1fZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3JpemVyLT5sYXN0QWN0aW9uQ2hh
bmdlZERhdGFiYXNlKCkpIHsKICAgICAgICAgICAgIC8vIEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBh
cyBoYXZpbmcgY2hhbmdlZCB0aGUgZGF0YWJhc2UgZm9yIGxhdGVyIGRlbGVnYXRlIG5vdGlmaWNh
dGlvbgpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRT
dGF0ZW1lbnQKICAgICAgICAgICAgIC8vIEFsc28gZGlydHkgdGhlIHNpemUgb2YgdGhpcyBkYXRh
YmFzZSBmaWxlIGZvciBjYWxjdWxhdGluZyBxdW90YSB1c2FnZQogICAgICAgICAgICAgbV9kYXRh
YmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+ZGlkRXhlY3V0ZVN0YXRlbWVudCh0aGlzKTsKICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+
aGFzU3RhdGVtZW50Q2FsbGJhY2soKSkgewogICAgICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxU
cmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENhbGxiYWNrOwogICAgICAgICAgICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayBmb3IgdHJhbnNh
Y3Rpb24gJXBcbiIsIHRoaXMpOwpAQCAtMzYwLDE2ICszNjAsMTYgQEAgYm9vbCBTUUxUcmFuc2Fj
dGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmxhc3RFeGVjdXRp
b25GYWlsZWREdWVUb1F1b3RhKCkpIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2Fj
dGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhc2VDYWxsYmFjazsKICAgICAgICAgTE9HKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIGRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2sgZm9yIHRyYW5zYWN0
aW9uICVwXG4iLCB0aGlzKTsKICAgICAgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlv
bkNhbGxiYWNrKHRoaXMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAg
ICAgaGFuZGxlQ3VycmVudFN0YXRlbWVudEVycm9yKCk7Ci0gICAgCisKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVD
dXJyZW50U3RhdGVtCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVtZW50Q2FsbGJh
Y2soKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZW1lbnQpOwotICAgIAorCiAgICAgLy8g
VHJhbnNhY3Rpb24gU3RlcCA2LjYgYW5kIDYuMyhlcnJvcikgLSBJZiB0aGUgc3RhdGVtZW50IGNh
bGxiYWNrIHdlbnQgd3JvbmcsIGp1bXAgdG8gdGhlIHRyYW5zYWN0aW9uIGVycm9yIGNhbGxiYWNr
CiAgICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSB0byBsb29wIHRocm91Z2ggdGhlIHN0YXRlbWVu
dCBxdWV1ZQogICAgIG1fZXhlY3V0ZVNxbEFsbG93ZWQgPSB0cnVlOwpAQCAtNDE5LDcgKzQxOSw3
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIH0KIAogdm9pZCBT
UUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdodEFuZENvbW1pdCgpCi17ICAgIAorewogICAgIEFTU0VS
VChtX2xvY2tBY3F1aXJlZCk7CiAKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDcgLSBQZWZvcm0g
cG9zdGZsaWdodCBzdGVwcywganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBm
YWlsCkBAIC00MzAsMTAgKzQzMCwxMCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0
QW5kQ29tbWl0CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgLy8gVHJhbnNhY3RvbiBTdGVwIDgrOSAtIENv
bW1pdCB0aGUgdHJhbnNhY3Rpb24sIGp1bXBpbmcgdG8gdGhlIGVycm9yIGNhbGxiYWNrIGlmIHRo
YXQgZmFpbHMKICAgICBBU1NFUlQobV9zcWxpdGVUcmFuc2FjdGlvbik7Ci0gICAgCisKICAgICBt
X2RhdGFiYXNlLT5tX2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOwogICAgIG1fc3FsaXRl
VHJhbnNhY3Rpb24tPmNvbW1pdCgpOwogICAgIG1fZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3Jp
emVyLT5lbmFibGUoKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpw
b3N0ZmxpZ2h0QW5kQ29tbWl0CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgLy8gVGhlIGNvbW1pdCB3YXMg
c3VjY2Vzc2Z1bCwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIG1vZGlm
aWVkIHRoaXMgZGF0YWJhc2UKICAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlKQogICAgICAgICBt
X2RhdGFiYXNlLT50cmFuc2FjdGlvbkNsaWVudCgpLT5kaWRDb21taXRUcmFuc2FjdGlvbih0aGlz
KTsKQEAgLTQ1MiwxMyArNDUyLDEzIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRB
bmRDb21taXQKICAgICAvLyBOb3cgcmVsZWFzZSBvdXIgdW5uZWVkZWQgY2FsbGJhY2tzLCB0byBi
cmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIG1fY2FsbGJhY2sgPSAwOwogICAgIG1fZXJyb3JD
YWxsYmFjayA9IDA7Ci0gICAgCisKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDEwIC0gRGVsaXZl
ciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVyZSBpcyBvbmUKICAgICBpZiAobV9zdWNjZXNzQ2Fs
bGJhY2spIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN1
Y2Nlc3NDYWxsYmFjazsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2
ZXJTdWNjZXNzQ2FsbGJhY2sgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICAgICAg
bV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKHRoaXMpOwotICAgIH0gZWxz
ZSAKKyAgICB9IGVsc2UKICAgICAgICAgY2xlYW51cEFmdGVyU3VjY2Vzc0NhbGxiYWNrKCk7CiB9
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3VjY2Vz
c0NhbGxiCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCAxMCAtIERlbGl2ZXIgc3VjY2VzcyBjYWxs
YmFjawogICAgIEFTU0VSVChtX3N1Y2Nlc3NDYWxsYmFjayk7CiAgICAgbV9zdWNjZXNzQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KCk7Ci0gICAgCisKICAgICAvLyBSZWxlYXNlIHRoZSBsYXN0IGNhbGxi
YWNrIHRvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZQogICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsK
IApAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZVRyYW5zYWN0
aW9uRXIKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgLy8g
Tm8gZXJyb3IgY2FsbGJhY2ssIHNvIGZhc3QtZm9yd2FyZCB0bzoKICAgICAvLyBUcmFuc2FjdGlv
biBTdGVwIDEyIC0gUm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uLgogICAgIGlmIChpbkNhbGxiYWNr
KSB7CkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlVHJhbnNh
Y3Rpb25Fcgogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaygpCiB7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25FcnJvcik7Ci0gICAgCisKICAgICAv
LyBUcmFuc2FjdGlvbiBTdGVwIDEyIC0gSWYgZXhpc3RzLCBpbnZva2UgZXJyb3IgY2FsbGJhY2sg
d2l0aCB0aGUgbGFzdAogICAgIC8vIGVycm9yIHRvIGhhdmUgb2NjdXJyZWQgaW4gdGhpcyB0cmFu
c2FjdGlvbi4KICAgICBpZiAobV9lcnJvckNhbGxiYWNrKQpAQCAtNTM4LDE4ICs1MzgsMTggQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2xlYW51cEFmdGVyVHJhbnNhYwogICAgIGlmIChtX3NxbGl0
ZVRyYW5zYWN0aW9uKSB7CiAgICAgICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTIgLSBSb2xsYmFj
ayB0aGUgdHJhbnNhY3Rpb24uCiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24tPnJvbGxiYWNr
KCk7Ci0gICAgICAgIAorCiAgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+bV9zcWxpdGVEYXRh
YmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rp
b24uY2xlYXIoKTsKICAgICB9CiAgICAgbV9kYXRhYmFzZS0+bV9kYXRhYmFzZUF1dGhvcml6ZXIt
PmVuYWJsZSgpOwotICAgIAorCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCAxMiAtIEFueSBzdGls
bC1wZW5kaW5nIHN0YXRlbWVudHMgaW4gdGhlIHRyYW5zYWN0aW9uIGFyZSBkaXNjYXJkZWQuCiAg
ICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CiAgICAg
ICAgIG1fc3RhdGVtZW50UXVldWUuY2xlYXIoKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBUcmFu
c2FjdGlvbiBpcyBjb21wbGV0ZSEgIFRoZXJlIGlzIG5vIG5leHQgc3RlcAogICAgIExPRyhTdG9y
YWdlQVBJLCAiVHJhbnNhY3Rpb24gJXAgaXMgY29tcGxldGUgd2l0aCBhbiBlcnJvclxuIiwgdGhp
cyk7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5tX3NxbGl0ZURhdGFiYXNlLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiA0
Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbldy
YXBwZXIoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2Fj
dGlvbiopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNh
Y3Rpb24qKSA9IDA7Ci0gICAgCisKICAgICB2aXJ0dWFsIFNRTEVycm9yKiBzcWxFcnJvcigpIGNv
bnN0ID0gMDsKIH07CiAKQEAgLTY5LDE0ICs2OSwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
V3JhcHBlcj4pOwogCiAgICAgflNRTFRyYW5zYWN0aW9uKCk7Ci0gICAgCi0gICAgdm9pZCBleGVj
dXRlU1FMKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+
JiBhcmd1bWVudHMsIAorCisgICAgdm9pZCBleGVjdXRlU1FMKGNvbnN0IFN0cmluZyYgc3FsU3Rh
dGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1bWVudHMsCiAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVm
UHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IGNhbGxiYWNrRXJyb3IsIEV4Y2VwdGlvbkNv
ZGUmIGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCiAgICAg
dm9pZCBsb2NrQWNxdWlyZWQoKTsKICAgICBib29sIHBlcmZvcm1OZXh0U3RlcCgpOwogICAgIHZv
aWQgcGVyZm9ybVBlbmRpbmdDYWxsYmFjaygpOwotICAgIAorCiAgICAgRGF0YWJhc2UqIGRhdGFi
YXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtODQsMTEg
Kzg0LDExIEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIHZvaWQgKFNRTFRyYW5zYWN0aW9uOjoq
VHJhbnNhY3Rpb25TdGVwTWV0aG9kKSgpOwogICAgIFRyYW5zYWN0aW9uU3RlcE1ldGhvZCBtX25l
eHRTdGVwOwotICAgIAorCiAgICAgdm9pZCBlbnF1ZXVlU3RhdGVtZW50KFBhc3NSZWZQdHI8U1FM
U3RhdGVtZW50Pik7Ci0gICAgCisKICAgICB2b2lkIGNoZWNrQW5kSGFuZGxlQ2xvc2VkRGF0YWJh
c2UoKTsKLSAgICAKKwogICAgIHZvaWQgYWNxdWlyZUxvY2soKTsKICAgICB2b2lkIG9wZW5UcmFu
c2FjdGlvbkFuZFByZWZsaWdodCgpOwogICAgIHZvaWQgZGVsaXZlclRyYW5zYWN0aW9uQ2FsbGJh
Y2soKTsKQEAgLTExMSw5ICsxMTEsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZWZQdHI8
U1FMU3RhdGVtZW50PiBtX2N1cnJlbnRTdGF0ZW1lbnQ7Ci0gICAgCisKICAgICBib29sIG1fZXhl
Y3V0ZVNxbEFsbG93ZWQ7Ci0gICAgCisKICAgICBSZWZQdHI8RGF0YWJhc2U+IG1fZGF0YWJhc2U7
CiAgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gbV93cmFwcGVyOwogICAgIFJlZlB0
cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOwpAQCAtMTIzLDEzICsxMjMsMTMg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50OwogICAg
IGJvb2wgbV9tb2RpZmllZERhdGFiYXNlOwogICAgIGJvb2wgbV9sb2NrQWNxdWlyZWQ7Ci0gICAg
CisKICAgICBNdXRleCBtX3N0YXRlbWVudE11dGV4OwogICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0
ZW1lbnQ+ID4gbV9zdGF0ZW1lbnRRdWV1ZTsKIAogICAgIE93blB0cjxTUUxpdGVUcmFuc2FjdGlv
bj4gbV9zcWxpdGVUcmFuc2FjdGlvbjsKIH07Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNr
LmgJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2Fs
bGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNRTFRyYW5zYWN0aW9uOwogY2xhc3MgU1FMRXJyb3I7Ci0gICAgCisKIGNs
YXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaygpIHsgfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE5ICszNCwx
NyBAQAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAorCiAgICAgY2xhc3MgU1FMRXJyb3I7Ci0gICAgCisKICAgICBjbGFzcyBTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjaygpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoU1FMRXJyb3IqKSA9IDA7CiAgICAgfTsKLSAgICAKKwogfQogCiAjZW5kaWYKIAogI2VuZGlm
IC8vIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFja19oCi0KLQpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNw
cAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDkgKzIwLDkgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAKKwogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKIApAQCAtMTExLDQgKzExMSwz
IEBAIGJvb2wgU3RvcmFnZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShET01fU1RPUkFHRSkKLQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5oCShyZXZpc2lvbiA0Nzc5
OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBTdG9yYWdlX2gKQEAgLTU4
LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
U3RvcmFnZShGcmFtZSosIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+KTsKLSAgICAgICAgICAgIAor
CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IG1f
c3RvcmFnZUFyZWE7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCShyZXZpc2lvbiA0
Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgU3RvcmFnZUFy
ZWFfaApJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHJldmlzaW9uIDQ3Nzk5
KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2Niw0ICsyNjYsMyBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6ZGlzcGF0Y2hTdG9yYWdl
RXZlCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCi0KSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZUFyZWFJbXBsLmgJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpZm5kZWYgU3RvcmFnZUFyZWFJbXBsX2gKSW5kZXg6IFdlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlQXJlYVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTc2LDcgKzc2LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlRmluYWxTeW5jKAogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgdG8gYXZvaWQgcmFjZXMs
IGJ1dCBpdCdkIGJlIGJldHRlciB0byBtYWtlIHRoaW5ncyBzYWZlIHdpdGhvdXQgYmxvY2tpbmcu
CiAgICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7Ci0gICAgCisKICAgICBpZiAobV9zeW5j
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zeW5jVGltZXIuc3RvcCgpOwogICAgIGVsc2Ug
ewpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJl
ZChUaW0KIAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciBpdCA9IG1fY2hh
bmdlZEl0ZW1zLmJlZ2luKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46Oml0ZXJhdG9y
IGVuZCA9IG1fY2hhbmdlZEl0ZW1zLmVuZCgpOwotICAgIAorCiAgICAgewogICAgICAgICBNdXRl
eExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAKQEAgLTE4MiwxNCArMTgyLDE0IEBAIHZvaWQg
U3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtSW1wb3J0KCkKICAgICAgICAgbWFya0ltcG9ydGVkKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBTUUxpdGVTdGF0ZW1lbnQgcXVl
cnkobV9kYXRhYmFzZSwgIlNFTEVDVCBrZXksIHZhbHVlIEZST00gSXRlbVRhYmxlIik7CiAgICAg
aWYgKHF1ZXJ5LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZWxlY3QgaXRlbXMgZnJvbSBJdGVtVGFibGUgZm9yIGxvY2FsIHN0b3JhZ2Ui
KTsKICAgICAgICAgbWFya0ltcG9ydGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtTWFwOwogCiAgICAgaW50IHJlc3Vs
dCA9IHF1ZXJ5LnN0ZXAoKTsKQEAgLTIwNSwxMyArMjA1LDEzIEBAIHZvaWQgU3RvcmFnZUFyZWFT
eW5jOjpwZXJmb3JtSW1wb3J0KCkKICAgICB9CiAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9p
bXBvcnRMb2NrKTsKLSAgICAKKwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRv
ciBpdCA9IGl0ZW1NYXAuYmVnaW4oKTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRl
cmF0b3IgZW5kID0gaXRlbU1hcC5lbmQoKTsKLSAgICAKKwogICAgIGZvciAoOyBpdCAhPSBlbmQ7
ICsraXQpCiAgICAgICAgIG1fc3RvcmFnZUFyZWEtPmltcG9ydEl0ZW0oaXQtPmZpcnN0LCBpdC0+
c2Vjb25kKTsKLSAgICAKKwogICAgIC8vIEJyZWFrIHRoZSAocmVmIGNvdW50KSBjeWNsZS4KICAg
ICBtX3N0b3JhZ2VBcmVhID0gMDsKICAgICBtX2ltcG9ydENvbXBsZXRlID0gdHJ1ZTsKQEAgLTI2
NSw3ICsyNjUsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlCiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBwcmVwYXJlIGNsZWFyIHN0YXRlbWVudCAt
IGNhbm5vdCB3cml0ZSB0byBsb2NhbCBzdG9yYWdlIGRhdGFiYXNlIik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaW50IHJlc3VsdCA9IGNsZWFy
LnN0ZXAoKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjbGVhciBhbGwgaXRlbXMgaW4gdGhlIGxvY2FsIHN0
b3JhZ2UgZGF0YWJhc2UgLSAlaSIsIHJlc3VsdCk7CkBAIC0yODksMTEgKzI4OSwxMSBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6c3luYyhib29sIGNsZWFySXRlCiAKICAgICBmb3IgKEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGl0ZW1zLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICAvLyBCYXNlZCBvbiB0aGUgbnVsbC1uZXNzIG9mIHRoZSBz
ZWNvbmQgYXJndW1lbnQsIGRlY2lkZSB3aGV0aGVyIHRoaXMgaXMgYW4gaW5zZXJ0IG9yIGEgZGVs
ZXRlLgotICAgICAgICBTUUxpdGVTdGF0ZW1lbnQmIHF1ZXJ5ID0gaXQtPnNlY29uZC5pc051bGwo
KSA/IHJlbW92ZSA6IGluc2VydDsgICAgICAgIAorICAgICAgICBTUUxpdGVTdGF0ZW1lbnQmIHF1
ZXJ5ID0gaXQtPnNlY29uZC5pc051bGwoKSA/IHJlbW92ZSA6IGluc2VydDsKIAogICAgICAgICBx
dWVyeS5iaW5kVGV4dCgxLCBpdC0+Zmlyc3QpOwogCi0gICAgICAgIC8vIElmIHRoZSBzZWNvbmQg
YXJndW1lbnQgaXMgbm9uLW51bGwsIHdlJ3JlIGRvaW5nIGFuIGluc2VydCwgc28gYmluZCBpdCBh
cyB0aGUgdmFsdWUuIAorICAgICAgICAvLyBJZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vbi1u
dWxsLCB3ZSdyZSBkb2luZyBhbiBpbnNlcnQsIHNvIGJpbmQgaXQgYXMgdGhlIHZhbHVlLgogICAg
ICAgICBpZiAoIWl0LT5zZWNvbmQuaXNOdWxsKCkpCiAgICAgICAgICAgICBxdWVyeS5iaW5kVGV4
dCgyLCBpdC0+c2Vjb25kKTsKIApAQCAtMzM1LDQgKzMzNSwzIEBAIHZvaWQgU3RvcmFnZUFyZWFT
eW5jOjpwZXJmb3JtU3luYygpCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoRE9NX1NUT1JBR0UpCi0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5
bmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmgJKHJl
dmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5k
ZWYgU3RvcmFnZUFyZWFTeW5jX2gKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIFN0b3JhZ2VBcmVhSW1wbDsKICAgICBjbGFz
cyBTdG9yYWdlU3luY01hbmFnZXI7Ci0gICAgCisKICAgICBjbGFzcyBTdG9yYWdlQXJlYVN5bmMg
OiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlQXJlYVN5bmM+IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4gY3JlYXRlKFBhc3NSZWZQdHI8
U3RvcmFnZVN5bmNNYW5hZ2VyPiBzdG9yYWdlU3luY01hbmFnZXIsIFBhc3NSZWZQdHI8U3RvcmFn
ZUFyZWFJbXBsPiBzdG9yYWdlQXJlYSk7CkBAIC01MCwxNiArNTAsMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZvaWQgc2NoZWR1bGVJdGVtRm9yU3luYyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgICAgIHZvaWQgc2NoZWR1bGVDbGVhcigp
OwotICAgICAgICAKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0b3JhZ2VBcmVhU3luYyhQYXNz
UmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gc3RvcmFnZVN5bmNNYW5hZ2VyLCBQYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhSW1wbD4gc3RvcmFnZUFyZWEpOwogCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hT
dG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIEZyYW1lKiBzb3VyY2VGcmFtZSk7CiAKLSAgICAgICAgVGlt
ZXI8U3RvcmFnZUFyZWFTeW5jPiBtX3N5bmNUaW1lcjsgICAgICAgIAorICAgICAgICBUaW1lcjxT
dG9yYWdlQXJlYVN5bmM+IG1fc3luY1RpbWVyOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBtX2NoYW5nZWRJdGVtczsKICAgICAgICAgYm9vbCBtX2l0ZW1zQ2xlYXJlZDsKLSAgICAg
ICAgCisKICAgICAgICAgYm9vbCBtX2ZpbmFsU3luY1NjaGVkdWxlZDsKIAogICAgICAgICBSZWZQ
dHI8U3RvcmFnZUFyZWFJbXBsPiBtX3N0b3JhZ2VBcmVhOwpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VF
dmVudC5jcHAJKHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNzYsNCArNzYsMyBAQCB2b2lkIFN0b3JhZ2VF
dmVudDo6aW5pdFN0b3JhZ2VFdmVudChjb25zCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoRE9NX1NUT1JBR0UpCi0KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmgJ
KHJldmlzaW9uIDQ3Nzk5KQorKysgV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5k
ZWYgU3RvcmFnZUV2ZW50X2gKQEAgLTU1LDE2ICs1NSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3RvcmFnZUV2ZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgcHJpdmF0ZTogICAgCisgICAgcHJpdmF0ZToKICAgICAgICAgU3RvcmFn
ZUV2ZW50KCk7CiAgICAgICAgIFN0b3JhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcm
IG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVyaSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHNvdXJj
ZSwgU3RvcmFnZSogc3RvcmFnZUFyZWEpOwotICAgICAgICAKKwogICAgICAgICBTdHJpbmcgbV9r
ZXk7CiAgICAgICAgIFN0cmluZyBtX29sZFZhbHVlOwogICAgICAgICBTdHJpbmcgbV9uZXdWYWx1
ZTsKICAgICAgICAgU3RyaW5nIG1fdXJpOwogICAgICAgICBSZWZQdHI8RE9NV2luZG93PiBtX3Nv
dXJjZTsKLSAgICAgICAgUmVmUHRyPFN0b3JhZ2U+IG1fc3RvcmFnZUFyZWE7ICAgICAgICAKKyAg
ICAgICAgUmVmUHRyPFN0b3JhZ2U+IG1fc3RvcmFnZUFyZWE7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmNwcAkocmV2aXNpb24gNDc3OTkp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpA
QCAtMzQsNyArMzQsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OmNyZWF0
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdG9yYWdlTWFwKTsKIH0KLSAgICAKKwogU3Rv
cmFnZU1hcDo6U3RvcmFnZU1hcCgpCiAgICAgOiBtX2l0ZXJhdG9yKG1fbWFwLmVuZCgpKQogICAg
ICwgbV9pdGVyYXRvckluZGV4KFVJTlRfTUFYKQpAQCAtNTcsMTkgKzU3LDE5IEBAIHZvaWQgU3Rv
cmFnZU1hcDo6aW52YWxpZGF0ZUl0ZXJhdG9yKCkKIHZvaWQgU3RvcmFnZU1hcDo6c2V0SXRlcmF0
b3JUb0luZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBPbmNlIHdl
IGhhdmUgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMgZm9yIEhhc2hNYXAgd2UgY2FuIGJlIG1vcmUg
aW50ZWxsaWdlbnQgYWJvdXQgdGhpcy4KLSAgICAvLyBUaGUgcmVxdWVzdGVkIGluZGV4IHdpbGwg
YmUgY2xvc2VzdCB0byBiZWdpbigpLCBvdXIgY3VycmVudCBpdGVyYXRvciwgb3IgZW5kKCksIGFu
ZCB3ZSAKKyAgICAvLyBUaGUgcmVxdWVzdGVkIGluZGV4IHdpbGwgYmUgY2xvc2VzdCB0byBiZWdp
bigpLCBvdXIgY3VycmVudCBpdGVyYXRvciwgb3IgZW5kKCksIGFuZCB3ZQogICAgIC8vIGNhbiB0
YWtlIHRoZSBzaG9ydGVzdCByb3V0ZS4KICAgICAvLyBVbnRpbCB0aGF0IG1lY2hhbmlzbSBpcyBh
dmFpbGFibGUsIHdlJ2xsIGFsd2F5cyBpbmNyZW1lbnQgb3VyIGl0ZXJhdG9yIGZyb20gYmVnaW4o
KSBvciBjdXJyZW50LgotICAgIAorCiAgICAgaWYgKG1faXRlcmF0b3JJbmRleCA9PSBpbmRleCkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKGluZGV4IDwgbV9pdGVyYXRvckluZGV4
KSB7CiAgICAgICAgIG1faXRlcmF0b3JJbmRleCA9IDA7CiAgICAgICAgIG1faXRlcmF0b3IgPSBt
X21hcC5iZWdpbigpOwogICAgICAgICBBU1NFUlQobV9pdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7
CiAgICAgfQotICAgIAorCiAgICAgd2hpbGUgKG1faXRlcmF0b3JJbmRleCA8IGluZGV4KSB7CiAg
ICAgICAgICsrbV9pdGVyYXRvckluZGV4OwogICAgICAgICArK21faXRlcmF0b3I7CkBAIC04Niw3
ICs4Niw3IEBAIFN0cmluZyBTdG9yYWdlTWFwOjprZXkodW5zaWduZWQgaW5kZXgpIGMKIHsKICAg
ICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAK
KwogICAgIHNldEl0ZXJhdG9yVG9JbmRleChpbmRleCk7CiAgICAgcmV0dXJuIG1faXRlcmF0b3It
PmZpcnN0OwogfQpAQCAtOTksNyArOTksNyBAQCBTdHJpbmcgU3RvcmFnZU1hcDo6Z2V0SXRlbShj
b25zdCBTdHJpbmcmCiBQYXNzUmVmUHRyPFN0b3JhZ2VNYXA+IFN0b3JhZ2VNYXA6OnNldEl0ZW0o
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIFN0cmluZyYgb2xkVmFsdWUp
CiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc051bGwoKSk7Ci0gICAgCisKICAgICAvLyBJbXBsZW1l
bnQgY29weS1vbi13cml0ZSBzZW1hbnRpY3MgaGVyZS4gIFdlJ3JlIGd1YXJhbnRlZWQgdGhhdCB0
aGUgb25seSByZWZzIG9mIFN0b3JhZ2VNYXBzIGJlbG9uZyB0byBTdG9yYWdlIG9iamVjdHMKICAg
ICAvLyBzbyBpZiBtb3JlIHRoYW4gb25lIFN0b3JhZ2Ugb2JqZWN0IHJlZnMgdGhpcyBtYXAsIGNv
cHkgaXQgYmVmb3JlIG11dGF0aW5nIGl0LgogICAgIGlmIChyZWZDb3VudCgpID4gMSkgewpAQCAt
MTU4LDQgKzE1OCwzIEBAIHZvaWQgU3RvcmFnZU1hcDo6aW1wb3J0SXRlbShjb25zdCBTdHJpbmcK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShET01fU1RPUkFHRSkKLQpJbmRleDogV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2VNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU1h
cC5oCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lm
bmRlZiBTdG9yYWdlTWFwX2gKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUkKICAgICAgICAgQVNTRVJUKGxvY2FsU3RvcmFn
ZU5hbWVzcGFjZU1hcCgpLmdldChtX3BhdGgpID09IHRoaXMpOwogICAgICAgICBsb2NhbFN0b3Jh
Z2VOYW1lc3BhY2VNYXAoKS5yZW1vdmUobV9wYXRoKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAo
IW1faXNTaHV0ZG93bikKICAgICAgICAgY2xvc2UoKTsKIH0KQEAgLTExNyw3ICsxMTcsNyBAQCB2
b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7Ci0gICAgCisKICAgICAvLyBJZiB3
ZSdyZSBzZXNzaW9uIHN0b3JhZ2UsIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGFueSB3b3JrIGhl
cmUuCiAgICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gU2Vzc2lvblN0b3JhZ2UpIHsKICAgICAgICAg
QVNTRVJUKCFtX3N5bmNNYW5hZ2VyKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpjbG9zZSgpCiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9
IG1fc3RvcmFnZUFyZWFNYXAuZW5kKCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0
b3IgaXQgPSBtX3N0b3JhZ2VBcmVhTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAg
ICAgaXQtPnNlY29uZC0+Y2xvc2UoKTsKLSAgICAKKwogICAgIGlmIChtX3N5bmNNYW5hZ2VyKQog
ICAgICAgICBtX3N5bmNNYW5hZ2VyLT5jbG9zZSgpOwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZVN5bmNNYW5hZ2VyLmNwcAkocmV2aXNpb24gNDc3OTkpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
U3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAog
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0xMDEsNCArMTAx
LDMgQEAgdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OnNjaGVkdWxlU3luYyhQYQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERPTV9TVE9SQUdFKQotCkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5oCShyZXZpc2lvbiA0Nzc5OSkKKysrIFdlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFN0b3JhZ2VTeW5jTWFuYWdl
cl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>