<?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>135146</bug_id>
          
          <creation_ts>2014-07-21 20:21:36 -0700</creation_ts>
          <short_desc>[ftlopt] Get rid of structure checks as a way of checking if a function is in fact a function</short_desc>
          <delta_ts>2014-07-22 21:16:30 -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>JavaScriptCore</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135145</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023874</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-21 20:21:36 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023887</commentid>
    <comment_count>1</comment_count>
      <attachid>235268</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-21 22:42:30 -0700</bug_when>
    <thetext>Created attachment 235268
work in progress

I accidentally wrote this against trunk.  It passes tests but I haven&apos;t checked performance.  I&apos;ll rebase it onto the branch and do performance testing there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024144</commentid>
    <comment_count>2</comment_count>
      <attachid>235338</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-22 19:14:13 -0700</bug_when>
    <thetext>Created attachment 235338
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024157</commentid>
    <comment_count>3</comment_count>
      <attachid>235338</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-07-22 20:49:57 -0700</bug_when>
    <thetext>Comment on attachment 235338
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGUseKind.cpp:42
&gt; -        break;
&gt; +        return;

i kind of wish the s/break/return/ change was separate but not enough to r- or anything :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024161</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-22 21:16:30 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/171389</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235268</attachid>
            <date>2014-07-21 22:42:30 -0700</date>
            <delta_ts>2014-07-22 19:14:13 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31539</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8u
Y3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsOCArNjEsNyBA
QCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmCiB7CiAgICAgaWYgKGlz
TGlua2VkKCkpIHsKICAgICAgICAgaWYgKHN0dWIpIHsKLSAgICAgICAgICAgIGlmICghSGVhcDo6
aXNNYXJrZWQoc3R1Yi0+c3RydWN0dXJlKCkpCi0gICAgICAgICAgICAgICAgfHwgIUhlYXA6Omlz
TWFya2VkKHN0dWItPmV4ZWN1dGFibGUoKSkpIHsKKyAgICAgICAgICAgIGlmICghSGVhcDo6aXNN
YXJrZWQoc3R1Yi0+ZXhlY3V0YWJsZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAg
ICAgICAgICAgICAgICAgICJDbGVhcmluZyBjbG9zdXJlIGNhbGwgZnJvbSAiLCAqcmVwYXRjaEJ1
ZmZlci5jb2RlQmxvY2soKSwgIiB0byAiLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxNSArNDAsMTIgQEAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZh
bHNlOwogQ2FsbExpbmtTdGF0dXM6OkNhbGxMaW5rU3RhdHVzKEpTVmFsdWUgdmFsdWUpCiAgICAg
OiBtX2NhbGxUYXJnZXQodmFsdWUpCiAgICAgLCBtX2V4ZWN1dGFibGUoMCkKLSAgICAsIG1fc3Ry
dWN0dXJlKDApCiAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNlKQogICAgICwgbV9pc1By
b3ZlZChmYWxzZSkKIHsKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fc3RydWN0dXJlID0gdmFsdWUuYXNDZWxsKCktPnN0cnVj
dHVyZSgpOwotICAgIAogICAgIGlmICghdmFsdWUuYXNDZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rp
b246OmluZm8oKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTE2MiwxNCArMTU5LDE0IEBA
IENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICAgICAgICAgcmV0dXJu
IHRha2VzU2xvd1BhdGgoKTsKICAgICAKICAgICBpZiAoQ2xvc3VyZUNhbGxTdHViUm91dGluZSog
c3R1YiA9IGNhbGxMaW5rSW5mby5zdHViLmdldCgpKQotICAgICAgICByZXR1cm4gQ2FsbExpbmtT
dGF0dXMoc3R1Yi0+ZXhlY3V0YWJsZSgpLCBzdHViLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cyhzdHViLT5leGVjdXRhYmxlKCkpOwogICAgIAogICAgIEpTRnVu
Y3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKICAgICBp
ZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKCk7CiAgICAgCiAgICAg
aWYgKGNhbGxMaW5rSW5mby5oYXNTZWVuQ2xvc3VyZSkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpLCB0YXJnZXQtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldC0+ZXhlY3V0YWJsZSgpKTsKIAogICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQpOwogfQpAQCAtMjcwLDkgKzI2Nyw2IEBAIHZvaWQg
Q2FsbExpbmtTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG8KICAgICAgICAgaWYgKCFpc0NvbXBp
bGF0aW9uVGhyZWFkKCkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIi8iLCBtX2V4ZWN1dGFibGUt
Pmhhc2hGb3IoQ29kZUZvckNhbGwpKTsKICAgICB9Ci0gICAgCi0gICAgaWYgKG1fc3RydWN0dXJl
KQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJTdHJ1Y3R1cmU6ICIsIFJhd1BvaW50ZXIobV9z
dHJ1Y3R1cmUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTcxMzM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDYgQEAgY2xhc3MgQ2FsbExpbmtTdGF0dXMgewogcHVi
bGljOgogICAgIENhbGxMaW5rU3RhdHVzKCkKICAgICAgICAgOiBtX2V4ZWN1dGFibGUoMCkKLSAg
ICAgICAgLCBtX3N0cnVjdHVyZSgwKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFs
c2UpCiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKICAgICB7CkBAIC02MSw5ICs2MCw4IEBA
IHB1YmxpYzoKICAgICAKICAgICBleHBsaWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAg
ICAKLSAgICBDYWxsTGlua1N0YXR1cyhFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUpCiAgICAgICAgIDogbV9leGVjdXRhYmxlKGV4ZWN1dGFibGUpCi0gICAgICAgICwgbV9z
dHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2Up
CiAgICAgICAgICwgbV9pc1Byb3ZlZChmYWxzZSkKICAgICB7CkBAIC0xMDgsNyArMTA2LDYgQEAg
cHVibGljOgogICAgIEludGVybmFsRnVuY3Rpb24qIGludGVybmFsRnVuY3Rpb24oKSBjb25zdDsK
ICAgICBJbnRyaW5zaWMgaW50cmluc2ljRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0
OwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVj
dXRhYmxlOyB9Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZTsgfQogICAgIGJvb2wgaXNQcm92ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvdmVk
OyB9CiAgICAgYm9vbCBjYW5PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2NhbGxUYXJnZXQg
fHwgbV9leGVjdXRhYmxlKSAmJiAhbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIApAQCAtMTI2
LDcgKzEyMyw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgSlNWYWx1ZSBtX2NhbGxUYXJnZXQ7CiAg
ICAgRXhlY3V0YWJsZUJhc2UqIG1fZXhlY3V0YWJsZTsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKICAgICBib29sIG1faXNQcm92ZWQ7
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDE3MTMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg1LDEwICsxMjg1LDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0aW9uQ2hlY2tzKAogICAgIGlmIChKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxMaW5rU3RhdHVzLmZ1bmN0aW9uKCkpCiAgICAgICAgIGFk
ZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGZ1bmN0aW9uKSwgY2FsbFRhcmdldCwgdGhp
c0FyZ3VtZW50KTsKICAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLnN0
cnVjdHVyZSgpKTsKICAgICAgICAgQVNTRVJUKGNhbGxMaW5rU3RhdHVzLmV4ZWN1dGFibGUoKSk7
CiAgICAgICAgIAotICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9n
cmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY2FsbExpbmtTdGF0dXMuc3RydWN0dXJlKCkpKSwgY2FsbFRh
cmdldCk7CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tFeGVjdXRhYmxlLCBPcEluZm8oY2FsbExp
bmtTdGF0dXMuZXhlY3V0YWJsZSgpKSwgY2FsbFRhcmdldCwgdGhpc0FyZ3VtZW50KTsKICAgICB9
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHJldmlzaW9uIDE3MTMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw3ICs5MTgsMTEgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFi
bGU6CisgICAgICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CisgICAgICAgICAgICBmaXhFZGdl
PEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
IGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAgIGNhc2UgQ2hlY2tG
dW5jdGlvbjoKQEAgLTE1NTksNiArMTU2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2Vs
bFVzZToKICAgICAgICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0VXNl
OgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAg
ICAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICAgICAgY2FzZSBTdHJpbmdPYmplY3RVc2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
cmV2aXNpb24gMTcxMzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIGNhc2UgQ2VsbFVzZToKICAgICAgICAgY2FzZSBP
YmplY3RVc2U6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CiAgICAgICAgIGNhc2UgRmluYWxP
YmplY3RVc2U6CiAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgY2FzZSBT
dHJpbmdJZGVudFVzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcxMzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzY5Miw2ICszNjkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAKICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNw
ZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZEZ1bmN0aW9uLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5v
ZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
ZnVuY3Rpb24uZ3ByKCksIG5vZGUtPmZ1bmN0aW9uKCkpKTsKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zODA1LDYgKzM4MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVj
RnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRF
eGVjdXRhYmxlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5v
ZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzA4LDIwICs3MDgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBu
bwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlUmVnKSwgbm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDgoCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQXJndW1lbnRzVHlw
ZSkpKTsKKyAgICAgICAgc3BlY3VsYXRlQ2VsbFR5cGVXaXRob3V0VHlwZUZpbHRlcmluZyhub2Rl
LT5jaGlsZDEoKSwgYmFzZVJlZywgQXJndW1lbnRzVHlwZSk7CiAKICAgICAgICAgbm9SZXN1bHQo
bV9jdXJyZW50Tm9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VS
ZWcpLCBub2RlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUobm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpKSk7CisgICAgICAgIHNwZWN1
bGF0ZUNlbGxUeXBlV2l0aG91dFR5cGVGaWx0ZXJpbmcoCisgICAgICAgICAgICBub2RlLT5jaGls
ZDEoKSwgYmFzZVJlZywKKyAgICAgICAgICAgIHR5cGVGb3JUeXBlZEFycmF5VHlwZShub2RlLT5h
cnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY3VycmVu
dE5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDUwNiw2ICs0NTAwLDI4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmEKICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxU
eXBlV2l0aG91dFR5cGVGaWx0ZXJpbmcoCisgICAgRWRnZSBlZGdlLCBHUFJSZWcgY2VsbEdQUiwg
SlNUeXBlIGpzVHlwZSkKK3sKKyAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICBCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgZWRnZSwKKyAgICAgICAgbV9q
aXQuYnJhbmNoOCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihq
c1R5cGUpKSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxUeXBlKAor
ICAgIEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNwZWN1bGF0ZWRUeXBlIHNwZWNUeXBlLCBK
U1R5cGUganNUeXBlKQoreworICAgIERGR19UWVBFX0NIRUNLKAorICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgZWRnZSwgc3BlY1R5cGUsCisgICAgICAgIG1faml0
LmJyYW5jaDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihqc1R5cGUpKSk7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUludDMyKEVkZ2UgZWRnZSkKIHsKICAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNJbnQzMikpCkBAIC00NTc5LDE4ICs0NTk1LDIyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChFZGcKICAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UpCit7CisgICAgaWYgKCFuZWVkc1R5cGVD
aGVjayhlZGdlLCBTcGVjRnVuY3Rpb24pKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKKyAgICBzcGVjdWxhdGVDZWxs
VHlwZShlZGdlLCBvcGVyYW5kLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsK
K30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdl
KQogewogICAgIGlmICghbmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0ZpbmFsT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhp
cywgZWRnZSk7Ci0gICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7Ci0gICAgREZHX1RZUEVf
Q0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNw
ZWNGaW5hbE9iamVjdCwgbV9qaXQuYnJhbmNoOCgKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmlu
YWxPYmplY3RUeXBlKSkpOworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKGVkZ2UsIG9wZXJhbmQuZ3By
KCksIFNwZWNGaW5hbE9iamVjdCwgRmluYWxPYmplY3RUeXBlKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlIGVkZ2UpCkBAIC00ODM0LDYgKzQ4
NTQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUoTm9kZSosIEVkCiAgICAgY2Fz
ZSBPYmplY3RVc2U6CiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChlZGdlKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGdW5jdGlvblVzZToKKyAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24oZWRn
ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmluYWxPYmplY3RVc2U6CiAgICAgICAgIHNw
ZWN1bGF0ZUZpbmFsT2JqZWN0KGVkZ2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE3MTMz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjI0NSw2ICsyMjQ1LDkgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNU
eXBlQ2hlY2soRWRnZSBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gpIHsg
cmV0dXJuIG1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSwgdHlwZXNQYXNzZWRUaHJv
dWdoKTsgfQogICAgIHZvaWQgdHlwZUNoZWNrKEpTVmFsdWVTb3VyY2UsIEVkZ2UsIFNwZWN1bGF0
ZWRUeXBlIHR5cGVzUGFzc2VkVGhyb3VnaCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFp
bCk7CiAgICAgCisgICAgdm9pZCBzcGVjdWxhdGVDZWxsVHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5n
KEVkZ2UsIEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUpOworICAgIHZvaWQgc3BlY3VsYXRlQ2VsbFR5
cGUoRWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNwZWN1bGF0ZWRUeXBlLCBKU1R5cGUpOworICAgIAog
ICAgIHZvaWQgc3BlY3VsYXRlSW50MzIoRWRnZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICB2
b2lkIGNvbnZlcnRNYWNoaW5lSW50KEVkZ2UsIEdQUlJlZyByZXN1bHRHUFIpOwpAQCAtMjI1Niw2
ICsyMjU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPYmplY3QoRWRn
ZSk7CisgICAgdm9pZCBzcGVjdWxhdGVGdW5jdGlvbihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0
ZUZpbmFsT2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdl
KTsKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNpb24gMTcx
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksODAgKzM5LDgzIEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBVc2UKICAgICBzd2l0Y2ggKHVzZUtpbmQpIHsKICAgICBjYXNlIFVudHlwZWRVc2U6
CiAgICAgICAgIG91dC5wcmludCgiVW50eXBlZCIpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsK
LSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtub3duSW50MzJVc2U6
CiAgICAgICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwotICAgICAgICBicmVhazsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50
NTJSZXAiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIE1hY2hp
bmVJbnRVc2U6CiAgICAgICAgIG91dC5wcmludCgiTWFjaGluZUludCIpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgTnVtYmVyVXNlOgogICAgICAgICBvdXQucHJp
bnQoIk51bWJlciIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
RG91YmxlUmVwVXNlOgogICAgICAgICBvdXQucHJpbnQoIkRvdWJsZVJlcCIpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRG91YmxlUmVwUmVhbFVzZToKICAgICAg
ICAgb3V0LnByaW50KCJEb3VibGVSZXBSZWFsIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBEb3VibGVSZXBNYWNoaW5lSW50VXNlOgogICAgICAgICBvdXQucHJp
bnQoIkRvdWJsZVJlcE1hY2hpbmVJbnQiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEJvb2xlYW5Vc2U6CiAgICAgICAgIG91dC5wcmludCgiQm9vbGVhbiIpOwot
ICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2VsbFVzZToKICAgICAg
ICAgb3V0LnByaW50KCJDZWxsIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBLbm93bkNlbGxVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25DZWxsIik7Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBPYmplY3RVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiT2JqZWN0Iik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBGdW5jdGlvblVzZToKKyAgICAgICAgb3V0LnByaW50KCJGdW5jdGlvbiIpOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGaW5hbE9iamVjdFVzZToKICAgICAgICAgb3V0LnBy
aW50KCJGaW5hbE9iamVjdCIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAg
IGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3RPck90aGVy
Iik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdJZGVu
dFVzZToKICAgICAgICAgb3V0LnByaW50KCJTdHJpbmdJZGVudCIpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nVXNlOgogICAgICAgICBvdXQucHJpbnQo
IlN0cmluZyIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgS25v
d25TdHJpbmdVc2U6CiAgICAgICAgIG91dC5wcmludCgiS25vd25TdHJpbmciKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0cmluZ09iamVjdFVzZToKICAgICAg
ICAgb3V0LnByaW50KCJTdHJpbmdPYmplY3QiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICBvdXQucHJp
bnQoIlN0cmluZ09yU3RyaW5nT2JqZWN0Iik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBOb3RTdHJpbmdWYXJVc2U6CiAgICAgICAgIG91dC5wcmludCgiTm90U3Ry
aW5nVmFyIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBOb3RD
ZWxsVXNlOgogICAgICAgICBvdXQucHJpbnQoIk5vdENlbGwiKTsKLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJldHVybjsKICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICBvdXQucHJpbnQoIk90
aGVyIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBNaXNjVXNl
OgogICAgICAgICBvdXQucHJpbnQoIk1pc2MiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGFzdFVzZUtpbmQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5oCShyZXZpc2lvbiAxNzEzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VzZUtpbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNiArNDgsNyBAQCBlbnVtIFVzZUtpbmQgewogICAgIENlbGxVc2UsCiAgICAgS25vd25D
ZWxsVXNlLAogICAgIE9iamVjdFVzZSwKKyAgICBGdW5jdGlvblVzZSwKICAgICBGaW5hbE9iamVj
dFVzZSwKICAgICBPYmplY3RPck90aGVyVXNlLAogICAgIFN0cmluZ0lkZW50VXNlLApAQCAtODks
NiArOTAsOCBAQCBpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihVc2VLCiAgICAg
ICAgIHJldHVybiBTcGVjQ2VsbDsKICAgICBjYXNlIE9iamVjdFVzZToKICAgICAgICAgcmV0dXJu
IFNwZWNPYmplY3Q7CisgICAgY2FzZSBGdW5jdGlvblVzZToKKyAgICAgICAgcmV0dXJuIFNwZWNG
dW5jdGlvbjsKICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICByZXR1cm4gU3BlY0Zp
bmFsT2JqZWN0OwogICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKQEAgLTE3MSw2ICsxNzQsNyBA
QCBpbmxpbmUgYm9vbCBpc0NlbGwoVXNlS2luZCBraW5kKQogICAgIGNhc2UgQ2VsbFVzZToKICAg
ICBjYXNlIEtub3duQ2VsbFVzZToKICAgICBjYXNlIE9iamVjdFVzZToKKyAgICBjYXNlIEZ1bmN0
aW9uVXNlOgogICAgIGNhc2UgRmluYWxPYmplY3RVc2U6CiAgICAgY2FzZSBTdHJpbmdJZGVudFVz
ZToKICAgICBjYXNlIFN0cmluZ1VzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE3MTMzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4
LDYgKzM2OCw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKEdyYXBoJiBncmFwaCkKICAg
ICAgICAgICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBLbm93bkNl
bGxVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBPYmplY3RVc2U6CisgICAgICAgICAgICAgICAg
Y2FzZSBGdW5jdGlvblVzZToKICAgICAgICAgICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAgICAgICAgICAgY2FzZSBL
bm93blN0cmluZ1VzZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2Nyw2
ICsxNjY3LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9u
KG1fbm9kZS0+Y2hpbGQxKCksIGNlbGwpOworICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAog
ICAgICAgICAgICAgQmFkRXhlY3V0YWJsZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBtX25vZGUtPmNo
aWxkMSgpLm5vZGUoKSwKICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKApAQCAtNTI4Miw2ICs1
Mjg0LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBPYmplY3RVc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVPYmplY3QoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBG
dW5jdGlvblVzZToKKyAgICAgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT2JqZWN0T3JPdGhlclVzZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoZWRnZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU0
MTcsNiArNTQyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgTFZh
bHVlIGlzRnVuY3Rpb24oTFZhbHVlIGNlbGwpIHsgcmV0dXJuIGlzVHlwZShjZWxsLCBKU0Z1bmN0
aW9uVHlwZSk7IH0KKyAgICBMVmFsdWUgaXNOb3RGdW5jdGlvbihMVmFsdWUgY2VsbCkgeyByZXR1
cm4gaXNOb3RUeXBlKGNlbGwsIEpTRnVuY3Rpb25UeXBlKTsgfQorICAgIAogICAgIExWYWx1ZSBp
c1R5cGUoTFZhbHVlIGNlbGwsIEpTVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0LmVxdWFsKApAQCAtNTQzOSw2ICs1NDQ3LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIHNwZWN1
bGF0ZU9iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBz
cGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBTcGVjRnVuY3Rpb24sIGlz
Tm90RnVuY3Rpb24oY2VsbCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNwZWN1bGF0ZUZ1bmN0
aW9uKEVkZ2UgZWRnZSkKKyAgICB7CisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKGVkZ2UsIGxv
d0NlbGwoZWRnZSkpOworICAgIH0KKyAgICAKICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdE9yT3Ro
ZXIoRWRnZSBlZGdlKQogICAgIHsKICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlw
ZUNoZWNrKGVkZ2UpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zOSw5ICszOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBDbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lOjpDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiYgY29kZSwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLAotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbikKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwgY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbikKICAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkK
LSAgICAsIG1fc3RydWN0dXJlKHZtLCBvd25lciwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRh
YmxlKHZtLCBvd25lciwgZXhlY3V0YWJsZSkKICAgICAsIG1fY29kZU9yaWdpbihjb2RlT3JpZ2lu
KQogewpAQCAtNTMsNyArNTIsNiBAQCBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lOjp+Q2xvc3VyZUNh
bGxTdHViCiAKIHZvaWQgQ2xvc3VyZUNhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0
c0ludGVybmFsKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIHZpc2l0b3IuYXBwZW5kKCZt
X3N0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJm1fZXhlY3V0YWJsZSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91
dGluZS5oCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Ns
b3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTEgKzM3LDEwIEBAIGNs
YXNzIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0MKIHB1YmxpYzoKICAgICBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
LCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCi0gICAgICAgIFN0cnVjdHVyZSosIEV4ZWN1dGFi
bGVCYXNlKiwgY29uc3QgQ29kZU9yaWdpbiYpOworICAgICAgICBFeGVjdXRhYmxlQmFzZSosIGNv
bnN0IENvZGVPcmlnaW4mKTsKICAgICAKICAgICB2aXJ0dWFsIH5DbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lKCk7CiAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZS5nZXQoKTsgfQogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CiAgICAgY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29kZU9yaWdpbjsgfQogCkBAIC00OSw3ICs0
OCw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0lu
dGVybmFsKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVC
YXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gZmlndXJlIG91dCB3
aG8gYSBjYWxsIGlzIGxpbmtlZCB0byBieSBzZWFyY2hpbmcgdGhyb3VnaAogICAgIC8vIHN0dWIg
cm91dGluZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3MTMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE5
OSwxMyArMTk5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gSklUKHZt
LCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGVmZm9ydCk7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVDbG9zdXJlQ2FsbChWTSogdm0sIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2Nr
KiBjYWxsZWVDb2RlQmxvY2ssIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUsIEV4ZWN1dGFi
bGVCYXNlKiBleHBlY3RlZEV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
KQotICAgICAgICB7Ci0gICAgICAgICAgICBKSVQgaml0KHZtLCBjYWxsZXJDb2RlQmxvY2spOwot
ICAgICAgICAgICAgaml0Lm1fYnl0ZWNvZGVPZmZzZXQgPSBjYWxsTGlua0luZm8tPmNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIGppdC5wcml2YXRlQ29tcGlsZUNsb3N1cmVD
YWxsKGNhbGxMaW5rSW5mbywgY2FsbGVlQ29kZUJsb2NrLCBleHBlY3RlZFN0cnVjdHVyZSwgZXhw
ZWN0ZWRFeGVjdXRhYmxlLCBjb2RlUHRyKTsKLSAgICAgICAgfQotCiAgICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeVZhbChWTSogdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBCeVZhbElu
Zm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBKSVRBcnJheU1v
ZGUgYXJyYXlNb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBKSVQgaml0KHZtLCBjb2RlQmxv
Y2spOwpAQCAtMjQ3LDggKzI0MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CiAgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHByaXZh
dGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKICAgICAgICAgCi0gICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsTGlua0luZm8qLCBDb2RlQmxvY2sqIGNhbGxl
ZUNvZGVCbG9jaywgU3RydWN0dXJlKiwgRXhlY3V0YWJsZUJhc2UqLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIpOwotICAgICAgICAKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5VmFsKEJ5
VmFsSW5mbyosIFJldHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CiAgICAgICAgIHZvaWQg
cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChCeVZhbEluZm8qLCBSZXR1cm5BZGRyZXNzUHRyLCBKSVRB
cnJheU1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwCShyZXZpc2lvbiAxNzEzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw1MiArMzU5LDYgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGVtaXRQdXRDYWxsUmVzdWx0
KGluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwo
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBT
dHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhwZWN0ZWRFeGVj
dXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKLXsKLSAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7Ci0KLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1Y3R1cmUpKSk7Ci0gICAgc2xvd0Nh
c2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246
Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZEV4ZWN1dGFibGUp
KSk7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4oKSksIHJlZ1QxKTsKLSAgICBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVy
KHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKLSAgICAKLSAgICBDYWxsIGNhbGwgPSBuZWFy
Q2FsbCgpOwotICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKLSAgICAKLSAgICBzbG93Q2FzZXMubGlu
ayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJu
TG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIHJlZ1QyKTsKLSAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7Ci0gICAgSnVtcCBzbG93ID0ganVtcCgpOwotICAg
IAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBtX2NvZGVCbG9jayk7
Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cihjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5r
SW5mby0+aG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQoMCkpOwotICAgIHBhdGNoQnVmZmVyLmxp
bmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwobV92bS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRo
dW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKLSAgICAKLSAgICBSZWZQdHI8Q2xvc3VyZUNhbGxTdHVi
Um91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgQ2xvc3VyZUNhbGxTdHViUm91dGlu
ZSgKLSAgICAgICAgRklOQUxJWkVfQ09ERSgKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAg
ICAgICAgICAgKCJCYXNlbGluZSBjbG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2lu
dCAlcCwgdGFyZ2V0ICVwICglcykiLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2Rl
QmxvY2spLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhl
ci5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAg
Y29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhw
b2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spKS5kYXRhKCkpKSwKLSAgICAgICAgKm1fdm0sIG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4cGVjdGVk
RXhlY3V0YWJsZSwKLSAgICAgICAgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKSk7Ci0gICAgCi0g
ICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKLSAgICAKLSAgICBy
ZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3Rh
cnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVn
aW4pLAotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNvZGUo
KSkpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxv
Y2F0aW9uLCBtX3ZtLT5nZXRDVElTdHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KSk7Ci0gICAgCi0gICAgY2FsbExpbmtJbmZvLT5zdHViID0gc3R1YlJvdXRpbmUucmVsZWFzZSgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3MTMz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2OCw1MiArMjY4LDYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShP
cGNvZGVJRAogICAgIGVtaXRQdXRDYWxsUmVzdWx0KGluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8s
IENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJl
LCBFeGVjdXRhYmxlQmFzZSogZXhwZWN0ZWRFeGVjdXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0cikKLXsKLSAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBleHBlY3RlZFN0cnVjdHVyZSkpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRF
eGVjdXRhYmxlKSkpOwotICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKHJlZ1QxLCBKU1N0YWNrOjpTY29wZUNoYWluKTsKLSAgICAKLSAgICBDYWxsIGNhbGwg
PSBuZWFyQ2FsbCgpOwotICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKLSAgICAKLSAgICBzbG93Q2Fz
ZXMubGluayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLT5jYWxs
UmV0dXJuTG9jYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSksIHJlZ1QyKTsKLSAgICByZXN0b3Jl
UmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihyZWdUMik7Ci0gICAgSnVtcCBzbG93ID0ganVtcCgp
OwotICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fdm0sICp0aGlzLCBtX2NvZGVC
bG9jayk7Ci0gICAgCi0gICAgcGF0Y2hCdWZmZXIubGluayhjYWxsLCBGdW5jdGlvblB0cihjb2Rl
UHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNh
bGxMaW5rSW5mby0+aG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQoMCkpOwotICAgIHBhdGNoQnVm
ZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9uTGFiZWwobV92bS0+Z2V0Q1RJU3R1Yih2aXJ0dWFs
Q2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkpKTsKLSAgICAKLSAgICBSZWZQdHI8Q2xvc3VyZUNh
bGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgQ2xvc3VyZUNhbGxTdHVi
Um91dGluZSgKLSAgICAgICAgRklOQUxJWkVfQ09ERSgKLSAgICAgICAgICAgIHBhdGNoQnVmZmVy
LAotICAgICAgICAgICAgKCJCYXNlbGluZSBjbG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVy
biBwb2ludCAlcCwgdGFyZ2V0ICVwICglcykiLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZygq
bV9jb2RlQmxvY2spLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmhvdFBh
dGhPdGhlci5sYWJlbEF0T2Zmc2V0KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAg
ICAgICAgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIHRvQ1N0
cmluZyhwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spKS5kYXRhKCkpKSwKLSAgICAgICAgKm1f
dm0sIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4
cGVjdGVkRXhlY3V0YWJsZSwKLSAgICAgICAgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKSk7Ci0g
ICAgCi0gICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKLSAgICAK
LSAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgUmVwYXRjaEJ1ZmZl
cjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLT5ob3RQ
YXRoQmVnaW4pLAotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgp
LmNvZGUoKSkpOwotICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJl
dHVybkxvY2F0aW9uLCBtX3ZtLT5nZXRDVElTdHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKSk7Ci0KLSAgICBjYWxsTGlua0luZm8tPnN0dWIgPSBzdHViUm91dGluZS5yZWxlYXNl
KCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX2NhbGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBjb21waWxlT3BDYWxsKG9wX2NhbGwsIGN1cnJlbnRJbnN0cnVjdGlv
biwgbV9jYWxsTGlua0luZm9JbmRleCsrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTcxMzM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc4LDEz
ICs3NzgsMTAgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVDbG9zdXJlQ2FsbAogICAg
IGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBWTSYgdm0gPSBleGVjQ2FsbGVlLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIEpTRnVuY3Rp
b24qIG9sZENhbGxlZSA9IGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCk7CiAgICAgCi0gICAgaWYg
KCFvbGRDYWxsZWUKLSAgICAgICAgfHwgb2xkQ2FsbGVlLT5zdHJ1Y3R1cmUodm0pICE9IGNhbGxl
ZS0+c3RydWN0dXJlKHZtKQotICAgICAgICB8fCBvbGRDYWxsZWUtPmV4ZWN1dGFibGUoKSAhPSBj
YWxsZWUtPmV4ZWN1dGFibGUoKSkKKyAgICBpZiAoIW9sZENhbGxlZSB8fCBvbGRDYWxsZWUtPmV4
ZWN1dGFibGUoKSAhPSBjYWxsZWUtPmV4ZWN1dGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIEFTU0VSVChjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNh
bGwoKSk7CkBAIC04MDMsOCArODAwLDcgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVD
bG9zdXJlQ2FsbAogICAgIH0KICAgICAKICAgICBsaW5rQ2xvc3VyZUNhbGwoCi0gICAgICAgIGV4
ZWNDYWxsZWUsIGNhbGxMaW5rSW5mbywgY29kZUJsb2NrLAotICAgICAgICBjYWxsZWUtPnN0cnVj
dHVyZSgpLCBjYWxsZWUtPmV4ZWN1dGFibGUoKSwgY29kZVB0ciwgcmVnaXN0ZXJzKTsKKyAgICAg
ICAgZXhlY0NhbGxlZSwgY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZS0+ZXhlY3V0YWJs
ZSgpLCBjb2RlUHRyLCByZWdpc3RlcnMpOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNzEzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTk5LDggKzE1OTksOCBAQCB2b2lkIGxpbmtTbG93Rm9yKAogfQogCiB2b2lkIGxpbmtDbG9z
dXJlQ2FsbCgKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZv
LCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRy
LAorICAgIEV4ZWNTdGF0ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVC
bG9jayogY2FsbGVlQ29kZUJsb2NrLCAKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIsCiAgICAgUmVnaXN0ZXJQcmVzZXJ2YXRpb25N
b2RlIHJlZ2lzdGVycykKIHsKICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5zdHViKTsKQEAgLTE2
MzQsMTAgKzE2MzQsMTAgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoCiAjZW5kaWYKICAgICAKICAg
ICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAgIGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAg
ICAgICBzdHViSml0LmJyYW5jaDgoCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKLSAgICAgICAgICAgIHN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0
aW9uVHlwZSkpKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQu
YnJhbmNoUHRyKApAQCAtMTY5MSw3ICsxNjkxLDcgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoCiAg
ICAgICAgICAgICAoIkNsb3N1cmUgY2FsbCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwLCB0
YXJnZXQgJXAgKCVzKSIsCiAgICAgICAgICAgICAgICAgdG9DU3RyaW5nKCpjYWxsZXJDb2RlQmxv
Y2spLmRhdGEoKSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KDApLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCB0b0NTdHJpbmcocG9pbnRlckR1bXAoY2FsbGVlQ29kZUJsb2NrKSkuZGF0
YSgpKSksCi0gICAgICAgICp2bSwgY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlLCBleGVjdXRhYmxlLCBjYWxsTGlua0luZm8uY29kZU9yaWdpbikpOworICAgICAg
ICAqdm0sIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGV4ZWN1dGFibGUsIGNh
bGxMaW5rSW5mby5jb2RlT3JpZ2luKSk7CiAgICAgCiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNo
QnVmZmVyKGNhbGxlckNvZGVCbG9jayk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guaAkocmV2aXNpb24gMTcxMzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBidWlsZFB1
dEJ5SWRMaXN0KEV4ZWNTdGF0ZSosIEpTVmFsdQogdm9pZCByZXBhdGNoSW4oRXhlY1N0YXRlKiwg
SlNDZWxsKiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5
U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIGxpbmtGb3IoRXhlY1N0YXRlKiwgQ2Fs
bExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlvbiogY2FsbGVlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZSk7CiB2b2lkIGxpbmtTbG93Rm9yKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyYsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7Ci12b2lkIGxpbmtDbG9z
dXJlQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUq
LCBFeGVjdXRhYmxlQmFzZSosIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciwgUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlKTsKK3ZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5m
byYsIENvZGVCbG9jayosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLCBS
ZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwogdm9pZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZl
ciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVy
JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbihSZXBhdGNoQnVmZmVyJiwgU3Ry
dWN0dXJlU3R1YkluZm8mKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235338</attachid>
            <date>2014-07-22 19:14:13 -0700</date>
            <delta_ts>2014-07-22 20:49:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34766</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMzgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDE0LTA3LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gR2V0IHJpZCBvZiBzdHJ1Y3R1cmUgY2hlY2tzIGFzIGEgd2F5IG9mIGNoZWNraW5n
IGlmIGEgZnVuY3Rpb24gaXMgaW4gZmFjdCBhIGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUxNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZ3JlYXRseSBzaW1wbGlm
aWVzIG91dCBjbG9zdXJlIGNhbGwgb3B0aW1pemF0aW9ucyBieSB0YWtpbmcgYWR2YW50YWdlIG9m
IHRoZSB0eXBlCisgICAgICAgIGJpdHMgYXZhaWxhYmxlIGluIHRoZSBjZWxsIGhlYWRlci4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHA6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rSW5mbzo6dmlzaXRXZWFrKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyk6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rU3RhdHVzOjpleGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6ZW1pdEZ1bmN0
aW9uQ2hlY2tzKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpvYnNlcnZlVXNlS2luZE9uTm9kZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTYWZlVG9FeGVjdXRlRWRnZTo6b3BlcmF0b3Io
KSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUNlbGxUeXBlV2l0aG91dFR5cGVGaWx0ZXJpbmcpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVDZWxsVHlwZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVXNlS2luZC5jcHA6
CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGRmZy9ERkdVc2VLaW5k
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6aXNDZWxsKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hlY2tFeGVj
dXRhYmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzTm90RnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVGdW5jdGlvbik6CisgICAgICAgICogaml0
L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwOgorICAgICAgICAoSlNDOjpDbG9zdXJlQ2FsbFN0
dWJSb3V0aW5lOjpDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6Q2xvc3Vy
ZUNhbGxTdHViUm91dGluZTo6bWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFsKToKKyAgICAgICAg
KiBqaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5oOgorICAgICAgICAoSlNDOjpDbG9zdXJlQ2Fs
bFN0dWJSb3V0aW5lOjpzdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQ2xvc3VyZUNhbGwpOiBEZWxldGVkLgorICAgICAg
ICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNs
b3N1cmVDYWxsKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9SZXBhdGNo
Lmg6CisKIDIwMTQtMDctMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbZnRsb3B0XSBERkcgRmx1c2goU2V0TG9jYWwpIHN0b3JlIGVsaW1pbmF0aW9uIGlzIG92
ZXJ6ZWFsb3VzIGZvciBjYXB0dXJlZCB2YXJpYWJsZXMgaW4gdGhlIHByZXNlbmNlIG9mIG5vZGVz
IHRoYXQgaGF2ZSBubyBlZmZlY3RzIGJ1dCBtYXkgdGhyb3cgKG1lcmdlIHRydW5rIHIxNzExOTAp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDggKzYxLDcg
QEAgdm9pZCBDYWxsTGlua0luZm86OnZpc2l0V2VhayhSZXBhdGNoQnVmZgogewogICAgIGlmIChp
c0xpbmtlZCgpKSB7CiAgICAgICAgIGlmIChzdHViKSB7Ci0gICAgICAgICAgICBpZiAoIUhlYXA6
OmlzTWFya2VkKHN0dWItPnN0cnVjdHVyZSgpKQotICAgICAgICAgICAgICAgIHx8ICFIZWFwOjpp
c01hcmtlZChzdHViLT5leGVjdXRhYmxlKCkpKSB7CisgICAgICAgICAgICBpZiAoIUhlYXA6Omlz
TWFya2VkKHN0dWItPmV4ZWN1dGFibGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2xlYXJpbmcgY2xvc3VyZSBjYWxsIGZyb20gIiwgKnJlcGF0Y2hC
dWZmZXIuY29kZUJsb2NrKCksICIgdG8gIiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDEyIEBAIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBm
YWxzZTsKIENhbGxMaW5rU3RhdHVzOjpDYWxsTGlua1N0YXR1cyhKU1ZhbHVlIHZhbHVlKQogICAg
IDogbV9jYWxsVGFyZ2V0KHZhbHVlKQogICAgICwgbV9leGVjdXRhYmxlKDApCi0gICAgLCBtX3N0
cnVjdHVyZSgwKQogICAgICwgbV9jb3VsZFRha2VTbG93UGF0aChmYWxzZSkKICAgICAsIG1faXNQ
cm92ZWQoZmFsc2UpCiB7CiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBtX3N0cnVjdHVyZSA9IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKTsKLSAgICAKICAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0xNzUsMTQgKzE3MiwxNCBA
QCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgICAgIHJldHVy
biB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCiAgICAgaWYgKENsb3N1cmVDYWxsU3R1YlJvdXRpbmUq
IHN0dWIgPSBjYWxsTGlua0luZm8uc3R1Yi5nZXQoKSkKLSAgICAgICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKHN0dWItPmV4ZWN1dGFibGUoKSwgc3R1Yi0+c3RydWN0dXJlKCkpOworICAgICAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoc3R1Yi0+ZXhlY3V0YWJsZSgpKTsKICAgICAKICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXQgPSBjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAg
aWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwogICAgIAogICAg
IGlmIChjYWxsTGlua0luZm8uaGFzU2VlbkNsb3N1cmUpCi0gICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSwgdGFyZ2V0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CiAKICAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0KTsKIH0KQEAgLTI4MSw5ICsyNzgsNiBAQCB2b2lk
IENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvCiAgICAgICAgIGlmICghaXNDb21w
aWxhdGlvblRocmVhZCgpKQogICAgICAgICAgICAgb3V0LnByaW50KCIvIiwgbV9leGVjdXRhYmxl
LT5oYXNoRm9yKENvZGVGb3JDYWxsKSk7CiAgICAgfQotICAgIAotICAgIGlmIChtX3N0cnVjdHVy
ZSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiU3RydWN0dXJlOiAiLCBSYXdQb2ludGVyKG1f
c3RydWN0dXJlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDE3MTM1
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIENhbGxMaW5rU3RhdHVzIHsKIHB1
YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCiAgICAgICAgIDogbV9leGVjdXRhYmxlKDApCi0g
ICAgICAgICwgbV9zdHJ1Y3R1cmUoMCkKICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZh
bHNlKQogICAgICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiAgICAgewpAQCAtNjIsOSArNjEsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgZXhwbGljaXQgQ2FsbExpbmtTdGF0dXMoSlNWYWx1ZSk7CiAg
ICAgCi0gICAgQ2FsbExpbmtTdGF0dXMoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIENhbGxMaW5rU3RhdHVzKEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKQogICAgICAgICA6IG1fZXhlY3V0YWJsZShleGVjdXRhYmxlKQotICAgICAgICAsIG1f
c3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAgICAgLCBtX2NvdWxkVGFrZVNsb3dQYXRoKGZhbHNl
KQogICAgICAgICAsIG1faXNQcm92ZWQoZmFsc2UpCiAgICAgewpAQCAtMTIyLDcgKzEyMCw2IEBA
IHB1YmxpYzoKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3Q7
CiAgICAgSW50cmluc2ljIGludHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25z
dDsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhl
Y3V0YWJsZTsgfQotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb3Zl
ZDsgfQogICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAobV9jYWxsVGFyZ2V0
IHx8IG1fZXhlY3V0YWJsZSkgJiYgIW1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTE0
MCw3ICsxMzcsNiBAQCBwcml2YXRlOgogICAgIAogICAgIEpTVmFsdWUgbV9jYWxsVGFyZ2V0Owog
ICAgIEV4ZWN1dGFibGVCYXNlKiBtX2V4ZWN1dGFibGU7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiAgICAgYm9vbCBtX2lzUHJvdmVk
OwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxNzEzNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwMywxMCArMTEwMyw4
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRGdW5jdGlvbkNoZWNrcygKICAgICBpZiAoSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsTGlua1N0YXR1cy5mdW5jdGlvbigpKQogICAgICAgICBh
ZGRUb0dyYXBoKENoZWNrRnVuY3Rpb24sIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShmdW5jdGlvbikp
LCBjYWxsVGFyZ2V0LCB0aGlzQXJndW1lbnQpOwogICAgIGVsc2UgewotICAgICAgICBBU1NFUlQo
Y2FsbExpbmtTdGF0dXMuc3RydWN0dXJlKCkpOwogICAgICAgICBBU1NFUlQoY2FsbExpbmtTdGF0
dXMuZXhlY3V0YWJsZSgpKTsKICAgICAgICAgCi0gICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1
Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChjYWxsTGlua1N0YXR1cy5zdHJ1
Y3R1cmUoKSkpLCBjYWxsVGFyZ2V0KTsKICAgICAgICAgYWRkVG9HcmFwaChDaGVja0V4ZWN1dGFi
bGUsIE9wSW5mbyhjYWxsTGlua1N0YXR1cy5leGVjdXRhYmxlKCkpLCBjYWxsVGFyZ2V0LCB0aGlz
QXJndW1lbnQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODk3LDcgKzg5Nywx
MSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBj
YXNlIENoZWNrRXhlY3V0YWJsZToKKyAgICAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6IHsKKyAg
ICAgICAgICAgIGZpeEVkZ2U8RnVuY3Rpb25Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDaGVja1N0
cnVjdHVyZToKICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENoZWNr
SGFzSW5zdGFuY2U6CkBAIC0xNTMzLDYgKzE1MzcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IENlbGxVc2U6CiAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICBjYXNlIE9iamVj
dFVzZToKKyAgICAgICAgY2FzZSBGdW5jdGlvblVzZToKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6
CiAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CiAgICAgICAgIGNhc2UgU3RyaW5nT2JqZWN0
VXNlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDE3MTM1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2FzZSBCb29sZWFuVXNlOgogICAgICAgICBjYXNlIENlbGxVc2U6CiAgICAgICAgIGNh
c2UgT2JqZWN0VXNlOgorICAgICAgICBjYXNlIEZ1bmN0aW9uVXNlOgogICAgICAgICBjYXNlIEZp
bmFsT2JqZWN0VXNlOgogICAgICAgICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgIGNh
c2UgU3RyaW5nSWRlbnRVc2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3MTM1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2NTMsNiArMzY1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgc3BlY3VsYXRlQ2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVj
RnVuY3Rpb24sIEpTRnVuY3Rpb25UeXBlKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRF
eGVjdXRhYmxlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChmdW5jdGlvbi5ncHIoKSksIG5v
ZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb24uZ3ByKCksIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZSgpKSwgbm9kZS0+ZXhlY3V0YWJsZSgpKSk7CiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcwNiw2ICszNzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAKICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZTogewogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3Bl
Y0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
RXhlY3V0YWJsZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZnVuY3Rpb24uZ3ByKCkpLCBu
b2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWws
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uLmdwcigpLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGUoKSksIG5vZGUtPmV4ZWN1dGFibGUoKSkpOwogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxMCwyMCArNzEwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSog
bm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6Ci0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZVJlZyksIG5vZGUsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2g4KAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5
cGUpKSk7CisgICAgICAgIHNwZWN1bGF0ZUNlbGxUeXBlV2l0aG91dFR5cGVGaWx0ZXJpbmcobm9k
ZS0+Y2hpbGQxKCksIGJhc2VSZWcsIEFyZ3VtZW50c1R5cGUpOwogCiAgICAgICAgIG5vUmVzdWx0
KG1fY3VycmVudE5vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaDgoCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpKSkpOworICAgICAgICBzcGVj
dWxhdGVDZWxsVHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5nKAorICAgICAgICAgICAgbm9kZS0+Y2hp
bGQxKCksIGJhc2VSZWcsCisgICAgICAgICAgICB0eXBlRm9yVHlwZWRBcnJheVR5cGUobm9kZS0+
YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpOwogICAgICAgICBub1Jlc3VsdChtX2N1cnJl
bnROb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ1ODUsNiArNDU3OSwyOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJhCiAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVDZWxs
VHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5nKAorICAgIEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGxHUFIs
IEpTVHlwZSBqc1R5cGUpCit7CisgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIGVkZ2UsCisgICAgICAgIG1f
aml0LmJyYW5jaDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
anNUeXBlKSkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVDZWxsVHlwZSgK
KyAgICBFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsR1BSLCBTcGVjdWxhdGVkVHlwZSBzcGVjVHlwZSwg
SlNUeXBlIGpzVHlwZSkKK3sKKyAgICBERkdfVFlQRV9DSEVDSygKKyAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIGVkZ2UsIHNwZWNUeXBlLAorICAgICAgICBtX2pp
dC5icmFuY2g4KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoanNUeXBlKSkpOworfQorCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVJbnQzMihFZGdlIGVkZ2UpCiB7CiAgICAgaWYg
KCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjSW50MzIpKQpAQCAtNDY1OCwxOCArNDY3NCwyMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3QoRWRnCiAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlRnVuY3Rpb24oRWRnZSBlZGdlKQoreworICAgIGlmICghbmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0Z1bmN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CisgICAgc3BlY3VsYXRlQ2Vs
bFR5cGUoZWRnZSwgb3BlcmFuZC5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UgZWRn
ZSkKIHsKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNGaW5hbE9iamVjdCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIGVkZ2UpOwotICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwotICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBT
cGVjRmluYWxPYmplY3QsIG1faml0LmJyYW5jaDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZp
bmFsT2JqZWN0VHlwZSkpKTsKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShlZGdlLCBvcGVyYW5kLmdw
cigpLCBTcGVjRmluYWxPYmplY3QsIEZpbmFsT2JqZWN0VHlwZSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIoRWRnZSBlZGdlKQpAQCAtNDkwNSw2ICs0
OTI1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogICAgIGNh
c2UgT2JqZWN0VXNlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKGVk
Z2UpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICBz
cGVjdWxhdGVGaW5hbE9iamVjdChlZGdlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNzEz
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyMDEsNiArMjIwMSw5IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRz
VHlwZUNoZWNrKEVkZ2UgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZXNQYXNzZWRUaHJvdWdoKSB7
IHJldHVybiBtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UsIHR5cGVzUGFzc2VkVGhy
b3VnaCk7IH0KICAgICB2b2lkIHR5cGVDaGVjayhKU1ZhbHVlU291cmNlLCBFZGdlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlc1Bhc3NlZFRocm91Z2gsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0Zh
aWwpOwogCisgICAgdm9pZCBzcGVjdWxhdGVDZWxsVHlwZVdpdGhvdXRUeXBlRmlsdGVyaW5nKEVk
Z2UsIEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUpOworICAgIHZvaWQgc3BlY3VsYXRlQ2VsbFR5cGUo
RWRnZSwgR1BSUmVnIGNlbGxHUFIsIFNwZWN1bGF0ZWRUeXBlLCBKU1R5cGUpOworICAgIAogICAg
IHZvaWQgc3BlY3VsYXRlSW50MzIoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVNYWNoaW5lSW50
KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyKEVkZ2UpOwpAQCAtMjIwOCw2ICsyMjEx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3BlY3VsYXRlQm9vbGVhbihFZGdlKTsKICAgICB2b2lk
IHNwZWN1bGF0ZUNlbGwoRWRnZSk7CiAgICAgdm9pZCBzcGVjdWxhdGVPYmplY3QoRWRnZSk7Cisg
ICAgdm9pZCBzcGVjdWxhdGVGdW5jdGlvbihFZGdlKTsKICAgICB2b2lkIHNwZWN1bGF0ZUZpbmFs
T2JqZWN0KEVkZ2UpOwogICAgIHZvaWQgc3BlY3VsYXRlT2JqZWN0T3JPdGhlcihFZGdlKTsKICAg
ICB2b2lkIHNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVXNlS2luZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkocmV2aXNpb24gMTcxMzU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdVc2VLaW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksNzQgKzM5LDc4IEBAIHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBVc2UKICAgICBzd2l0Y2ggKHVzZUtpbmQpIHsKICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiVW50eXBlZCIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgSW50MzJVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50MzIiKTsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtub3duSW50MzJVc2U6CiAgICAg
ICAgIG91dC5wcmludCgiS25vd25JbnQzMiIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgICAgIG91dC5wcmludCgiSW50NTJSZXAi
KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIE51bWJlclVzZToK
ICAgICAgICAgb3V0LnByaW50KCJOdW1iZXIiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIERvdWJsZVJlcFVzZToKICAgICAgICAgb3V0LnByaW50KCJEb3VibGVS
ZXAiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIERvdWJsZVJl
cFJlYWxVc2U6CiAgICAgICAgIG91dC5wcmludCgiRG91YmxlUmVwUmVhbCIpOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQm9vbGVhblVzZToKICAgICAgICAgb3V0
LnByaW50KCJCb29sZWFuIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBDZWxsVXNlOgogICAgICAgICBvdXQucHJpbnQoIkNlbGwiKTsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEtub3duQ2VsbFVzZToKICAgICAgICAgb3V0LnBy
aW50KCJLbm93bkNlbGwiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBj
YXNlIE9iamVjdFVzZToKICAgICAgICAgb3V0LnByaW50KCJPYmplY3QiKTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZ1bmN0aW9uVXNlOgorICAgICAgICBvdXQu
cHJpbnQoIkZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZpbmFsT2JqZWN0
VXNlOgogICAgICAgICBvdXQucHJpbnQoIkZpbmFsT2JqZWN0Iik7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICBvdXQu
cHJpbnQoIk9iamVjdE9yT3RoZXIiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIFN0cmluZ0lkZW50VXNlOgogICAgICAgICBvdXQucHJpbnQoIlN0cmluZ0lkZW50
Iik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTdHJpbmdVc2U6
CiAgICAgICAgIG91dC5wcmludCgiU3RyaW5nIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBy
ZXR1cm47CiAgICAgY2FzZSBLbm93blN0cmluZ1VzZToKICAgICAgICAgb3V0LnByaW50KCJLbm93
blN0cmluZyIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3Ry
aW5nT2JqZWN0VXNlOgogICAgICAgICBvdXQucHJpbnQoIlN0cmluZ09iamVjdCIpOwotICAgICAg
ICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RV
c2U6CiAgICAgICAgIG91dC5wcmludCgiU3RyaW5nT3JTdHJpbmdPYmplY3QiKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5vdFN0cmluZ1ZhclVzZToKICAgICAg
ICAgb3V0LnByaW50KCJOb3RTdHJpbmdWYXIiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgICAgIG91dC5wcmludCgiTm90Q2VsbCIp
OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgT3RoZXJVc2U6CiAg
ICAgICAgIG91dC5wcmludCgiT3RoZXIiKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIE1pc2NVc2U6CiAgICAgICAgIG91dC5wcmludCgiTWlzYyIpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBMYXN0VXNl
S2luZDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1VzZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1VzZUtpbmQuaAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdVc2VLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgZW51
bSBVc2VLaW5kIHsKICAgICBDZWxsVXNlLAogICAgIEtub3duQ2VsbFVzZSwKICAgICBPYmplY3RV
c2UsCisgICAgRnVuY3Rpb25Vc2UsCiAgICAgRmluYWxPYmplY3RVc2UsCiAgICAgT2JqZWN0T3JP
dGhlclVzZSwKICAgICBTdHJpbmdJZGVudFVzZSwKQEAgLTgzLDYgKzg0LDggQEAgaW5saW5lIFNw
ZWN1bGF0ZWRUeXBlIHR5cGVGaWx0ZXJGb3IoVXNlSwogICAgICAgICByZXR1cm4gU3BlY0NlbGw7
CiAgICAgY2FzZSBPYmplY3RVc2U6CiAgICAgICAgIHJldHVybiBTcGVjT2JqZWN0OworICAgIGNh
c2UgRnVuY3Rpb25Vc2U6CisgICAgICAgIHJldHVybiBTcGVjRnVuY3Rpb247CiAgICAgY2FzZSBG
aW5hbE9iamVjdFVzZToKICAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKICAgICBjYXNl
IE9iamVjdE9yT3RoZXJVc2U6CkBAIC0xNjIsNiArMTY1LDcgQEAgaW5saW5lIGJvb2wgaXNDZWxs
KFVzZUtpbmQga2luZCkKICAgICBjYXNlIENlbGxVc2U6CiAgICAgY2FzZSBLbm93bkNlbGxVc2U6
CiAgICAgY2FzZSBPYmplY3RVc2U6CisgICAgY2FzZSBGdW5jdGlvblVzZToKICAgICBjYXNlIEZp
bmFsT2JqZWN0VXNlOgogICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6CiAgICAgY2FzZSBTdHJpbmdV
c2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAxNzEzNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBD
ZWxsVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25DZWxsVXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgT2JqZWN0VXNlOgorICAgICAgICAgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CiAg
ICAgICAgICAgICAgICAgY2FzZSBPYmplY3RPck90aGVyVXNlOgogICAgICAgICAgICAgICAgIGNh
c2UgU3RyaW5nVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgS25vd25TdHJpbmdVc2U6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAko
cmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3Niw4IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIAorICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBj
ZWxsKTsKKyAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZEV4ZWN1
dGFibGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgbV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksCiAgICAg
ICAgICAgICBtX291dC5ub3RFcXVhbCgKQEAgLTU0NTgsNiArNTQ2MCw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgT2JqZWN0VXNlOgogICAgICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KGVkZ2Up
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRnVuY3Rpb25Vc2U6CisgICAgICAg
ICAgICBzcGVjdWxhdGVGdW5jdGlvbihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIE9iamVjdE9yT3RoZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVPYmplY3RPck90
aGVyKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01NTgxLDYgKzU1ODYsOSBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBpc0Z1bmN0aW9uKExWYWx1
ZSBjZWxsKSB7IHJldHVybiBpc1R5cGUoY2VsbCwgSlNGdW5jdGlvblR5cGUpOyB9CisgICAgTFZh
bHVlIGlzTm90RnVuY3Rpb24oTFZhbHVlIGNlbGwpIHsgcmV0dXJuIGlzTm90VHlwZShjZWxsLCBK
U0Z1bmN0aW9uVHlwZSk7IH0KKyAgICAKICAgICBMVmFsdWUgaXNUeXBlKExWYWx1ZSBjZWxsLCBK
U1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKQEAgLTU2MDMs
NiArNTYxMSwxNiBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGVPYmplY3QoZWRnZSwgbG93
Q2VsbChlZGdlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlRnVuY3Rpb24oRWRn
ZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFs
dWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY0Z1bmN0aW9uLCBpc05vdEZ1bmN0aW9uKGNlbGwpKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UpCisgICAg
eworICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKKyAgICB9
CisgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVPYmplY3RPck90aGVyKEVkZ2UgZWRnZSkKICAgICB7
CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lLmNwcAkocmV2aXNpb24gMTcxMzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksOSArMzksOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogQ2xvc3VyZUNhbGxTdHViUm91dGluZTo6Q2xvc3VyZUNhbGxTdHVi
Um91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGUsIFZNJiB2bSwg
Y29uc3QgSlNDZWxsKiBvd25lciwKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUsIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUsIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAg
ICAgOiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZSwgdm0pCi0gICAgLCBtX3N0cnVjdHVyZSh2
bSwgb3duZXIsIHN0cnVjdHVyZSkKICAgICAsIG1fZXhlY3V0YWJsZSh2bSwgb3duZXIsIGV4ZWN1
dGFibGUpCiAgICAgLCBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKIHsKQEAgLTUzLDcgKzUyLDYg
QEAgQ2xvc3VyZUNhbGxTdHViUm91dGluZTo6fkNsb3N1cmVDYWxsU3R1YgogCiB2b2lkIENsb3N1
cmVDYWxsU3R1YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICB2aXNpdG9yLmFwcGVuZCgmbV9zdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZtX2V4ZWN1dGFibGUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMTcx
MzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDExICszNywxMCBAQCBjbGFzcyBDbG9zdXJlQ2FsbFN0dWJS
b3V0aW5lIDogcHVibGljIEdDCiBwdWJsaWM6CiAgICAgQ2xvc3VyZUNhbGxTdHViUm91dGluZSgK
ICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwq
IG93bmVyLAotICAgICAgICBTdHJ1Y3R1cmUqLCBFeGVjdXRhYmxlQmFzZSosIGNvbnN0IENvZGVP
cmlnaW4mKTsKKyAgICAgICAgRXhlY3V0YWJsZUJhc2UqLCBjb25zdCBDb2RlT3JpZ2luJik7CiAg
ICAgCiAgICAgdmlydHVhbCB+Q2xvc3VyZUNhbGxTdHViUm91dGluZSgpOwogICAgIAotICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0
YWJsZS5nZXQoKTsgfQogICAgIGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX2NvZGVPcmlnaW47IH0KIApAQCAtNDksNyArNDgsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOwog
ICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGZpZ3VyZSBvdXQgd2hvIGEgY2FsbCBpcyBsaW5rZWQg
dG8gYnkgc2VhcmNoaW5nIHRocm91Z2gKICAgICAvLyBzdHViIHJvdXRpbmVzLgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNzEzNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksMTMgKzE5OSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIEpJVCh2bSwgY29kZUJsb2NrKS5wcml2YXRl
Q29tcGlsZShlZmZvcnQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlQ2xvc3VyZUNhbGwoVk0qIHZtLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywg
Q29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBT
dHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhwZWN0ZWRFeGVj
dXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKLSAgICAgICAgewotICAgICAg
ICAgICAgSklUIGppdCh2bSwgY2FsbGVyQ29kZUJsb2NrKTsKLSAgICAgICAgICAgIGppdC5tX2J5
dGVjb2RlT2Zmc2V0ID0gY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci0g
ICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChjYWxsTGlua0luZm8sIGNh
bGxlZUNvZGVCbG9jaywgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4cGVjdGVkRXhlY3V0YWJsZSwgY29k
ZVB0cik7Ci0gICAgICAgIH0KLQogICAgICAgICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlWYWwo
Vk0qIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnlWYWxJbmZvKiBieVZhbEluZm8sIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgSklUQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSklUIGppdCh2bSwgY29kZUJsb2NrKTsKQEAgLTI1MSw4ICsyNDQs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpOwogICAgICAgICBDb21waWxhdGlvblJlc3VsdCBwcml2YXRlQ29tcGlsZShKSVRDb21waWxh
dGlvbkVmZm9ydCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlQ2xvc3Vy
ZUNhbGwoQ2FsbExpbmtJbmZvKiwgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIFN0cnVjdHVy
ZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKTsKLSAgICAgICAgCiAg
ICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeVZhbChCeVZhbEluZm8qLCBSZXR1cm5BZGRy
ZXNzUHRyLCBKSVRBcnJheU1vZGUpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUHV0QnlW
YWwoQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVzc1B0ciwgSklUQXJyYXlNb2RlKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTcx
MzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTgsNTIgKzM1OCw2IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsU2xv
d0Nhc2UoT3Bjb2RlSUQKICAgICBlbWl0UHV0Q2FsbFJlc3VsdChpbnN0cnVjdGlvbik7CiB9CiAK
LXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywgU3RydWN0dXJlKiBleHBlY3RlZFN0
cnVjdHVyZSwgRXhlY3V0YWJsZUJhc2UqIGV4cGVjdGVkRXhlY3V0YWJsZSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHIpCi17Ci0gICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwotCi0gICAgc2xv
d0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUo
KSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwotICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdU
MSk7Ci0gICAgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwgSlNTdGFjazo6U2Nv
cGVDaGFpbik7Ci0gICAgCi0gICAgQ2FsbCBjYWxsID0gbmVhckNhbGwoKTsKLSAgICBKdW1wIGRv
bmUgPSBqdW1wKCk7Ci0gICAgCi0gICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7Ci0gICAgbW92ZShU
cnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpLCByZWdUMik7Ci0gICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
cmVnVDIpOwotICAgIEp1bXAgc2xvdyA9IGp1bXAoKTsKLSAgICAKLSAgICBMaW5rQnVmZmVyIHBh
dGNoQnVmZmVyKCptX3ZtLCB0aGlzLCBtX2NvZGVCbG9jayk7Ci0gICAgCi0gICAgcGF0Y2hCdWZm
ZXIubGluayhjYWxsLCBGdW5jdGlvblB0cihjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsK
LSAgICBwYXRjaEJ1ZmZlci5saW5rKGRvbmUsIGNhbGxMaW5rSW5mby0+aG90UGF0aE90aGVyLmxh
YmVsQXRPZmZzZXQoMCkpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoc2xvdywgQ29kZUxvY2F0aW9u
TGFiZWwobV92bS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsQ2FsbFRodW5rR2VuZXJhdG9yKS5jb2RlKCkp
KTsKLSAgICAKLSAgICBSZWZQdHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUg
PSBhZG9wdFJlZihuZXcgQ2xvc3VyZUNhbGxTdHViUm91dGluZSgKLSAgICAgICAgRklOQUxJWkVf
Q09ERSgKLSAgICAgICAgICAgIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJCYXNlbGluZSBj
bG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFyZ2V0ICVwICglcyki
LAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwKLSAgICAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zmc2V0KDApLmV4
ZWN1dGFibGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhwb2ludGVyRHVtcChjYWxsZWVDb2Rl
QmxvY2spKS5kYXRhKCkpKSwKLSAgICAgICAgKm1fdm0sIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUsIGV4cGVjdGVkRXhlY3V0YWJsZSwKLSAgICAgICAg
Y2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKSk7Ci0gICAgCi0gICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKG1fY29kZUJsb2NrKTsKLSAgICAKLSAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VX
aXRoSnVtcCgKLSAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRj
aE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4pLAotICAgICAgICBDb2RlTG9j
YXRpb25MYWJlbChzdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBtX3ZtLT5nZXRDVElT
dHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IpLmNvZGUoKSk7Ci0gICAgCi0gICAgY2FsbExp
bmtJbmZvLT5zdHViID0gc3R1YlJvdXRpbmUucmVsZWFzZSgpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3MTM1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw1MiArMjY3LDYg
QEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShPcGNvZGVJRAogICAgIGVtaXRQdXRD
YWxsUmVzdWx0KGluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xv
c3VyZUNhbGwoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29k
ZUJsb2NrLCBTdHJ1Y3R1cmUqIGV4cGVjdGVkU3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhw
ZWN0ZWRFeGVjdXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cikKLXsKLSAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7Ci0KLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIo
Tm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBleHBlY3RlZFN0cnVjdHVyZSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4
ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwotICAgIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWlu
KCkpLCByZWdUMSk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlZ1QxLCBKU1N0YWNr
OjpTY29wZUNoYWluKTsKLSAgICAKLSAgICBDYWxsIGNhbGwgPSBuZWFyQ2FsbCgpOwotICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKLSAgICAKLSAgICBzbG93Q2FzZXMubGluayh0aGlzKTsKLSAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24uZXhlY3V0
YWJsZUFkZHJlc3MoKSksIHJlZ1QyKTsKLSAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybihyZWdUMik7Ci0gICAgSnVtcCBzbG93ID0ganVtcCgpOwotICAgIAotICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKm1fdm0sIHRoaXMsIG1fY29kZUJsb2NrKTsKLSAgICAKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKGNhbGwsIEZ1bmN0aW9uUHRyKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSkpOwotICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJbmZvLT5ob3RQYXRoT3Ro
ZXIubGFiZWxBdE9mZnNldCgwKSk7Ci0gICAgcGF0Y2hCdWZmZXIubGluayhzbG93LCBDb2RlTG9j
YXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHZpcnR1YWxDYWxsVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKSkpOwotICAgIAotICAgIFJlZlB0cjxDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91
dGluZSA9IGFkb3B0UmVmKG5ldyBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKAotICAgICAgICBGSU5B
TElaRV9DT0RFKAotICAgICAgICAgICAgcGF0Y2hCdWZmZXIsCi0gICAgICAgICAgICAoIkJhc2Vs
aW5lIGNsb3N1cmUgY2FsbCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwLCB0YXJnZXQgJXAg
KCVzKSIsCi0gICAgICAgICAgICAgICAgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLAot
ICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+aG90UGF0aE90aGVyLmxhYmVsQXRPZmZzZXQo
MCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwKLSAgICAgICAgICAgICAgICBjb2RlUHRyLmV4ZWN1dGFi
bGVBZGRyZXNzKCksCi0gICAgICAgICAgICAgICAgdG9DU3RyaW5nKHBvaW50ZXJEdW1wKGNhbGxl
ZUNvZGVCbG9jaykpLmRhdGEoKSkpLAotICAgICAgICAqbV92bSwgbV9jb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBleHBlY3RlZFN0cnVjdHVyZSwgZXhwZWN0ZWRFeGVjdXRhYmxlLAotICAg
ICAgICBjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4pKTsKLSAgICAKLSAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIobV9jb2RlQmxvY2spOwotICAgIAotICAgIHJlcGF0Y2hCdWZmZXIucmVw
bGFjZVdpdGhKdW1wKAotICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0
aFBhdGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8tPmhvdFBhdGhCZWdpbiksCi0gICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKHN0dWJSb3V0aW5lLT5jb2RlKCkuY29kZSgpKSk7Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24sIG1fdm0tPmdl
dENUSVN0dWIodmlydHVhbENhbGxUaHVua0dlbmVyYXRvcikuY29kZSgpKTsKLQotICAgIGNhbGxM
aW5rSW5mby0+c3R1YiA9IHN0dWJSb3V0aW5lLnJlbGVhc2UoKTsKLX0KLQogdm9pZCBKSVQ6OmVt
aXRfb3BfY2FsbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGNvbXBp
bGVPcENhbGwob3BfY2FsbCwgY3VycmVudEluc3RydWN0aW9uLCBtX2NhbGxMaW5rSW5mb0luZGV4
KyspOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxNzEzNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODIsMTMgKzc4MiwxMCBAQCBzdGF0aWMgYm9v
bCBhdHRlbXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsCiAgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFZNJiB2bSA9IGV4ZWNDYWxs
ZWUtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0gY2FsbExp
bmtJbmZvLmNhbGxlZS5nZXQoKTsKICAgICAKLSAgICBpZiAoIW9sZENhbGxlZQotICAgICAgICB8
fCBvbGRDYWxsZWUtPnN0cnVjdHVyZSh2bSkgIT0gY2FsbGVlLT5zdHJ1Y3R1cmUodm0pCi0gICAg
ICAgIHx8IG9sZENhbGxlZS0+ZXhlY3V0YWJsZSgpICE9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpKQor
ICAgIGlmICghb2xkQ2FsbGVlIHx8IG9sZENhbGxlZS0+ZXhlY3V0YWJsZSgpICE9IGNhbGxlZS0+
ZXhlY3V0YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgQVNTRVJUKGNh
bGxlZS0+ZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKQEAgLTgwNyw4ICs4MDQs
NyBAQCBzdGF0aWMgYm9vbCBhdHRlbXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsCiAgICAgfQogICAg
IAogICAgIGxpbmtDbG9zdXJlQ2FsbCgKLSAgICAgICAgZXhlY0NhbGxlZSwgY2FsbExpbmtJbmZv
LCBjb2RlQmxvY2ssCi0gICAgICAgIGNhbGxlZS0+c3RydWN0dXJlKCksIGNhbGxlZS0+ZXhlY3V0
YWJsZSgpLCBjb2RlUHRyLCByZWdpc3RlcnMpOworICAgICAgICBleGVjQ2FsbGVlLCBjYWxsTGlu
a0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLT5leGVjdXRhYmxlKCksIGNvZGVQdHIsIHJlZ2lzdGVy
cyk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE3MTM1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NTUsOCArMTU1NSw4IEBAIHZv
aWQgbGlua1Nsb3dGb3IoCiB9CiAKIHZvaWQgbGlua0Nsb3N1cmVDYWxsKAotICAgIEV4ZWNTdGF0
ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sIENvZGVCbG9jayogY2FsbGVlQ29k
ZUJsb2NrLAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIsCisgICAgRXhlY1N0YXRlKiBleGVj
LCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ss
IAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
Y29kZVB0ciwKICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQogewogICAg
IEFTU0VSVCghY2FsbExpbmtJbmZvLnN0dWIpOwpAQCAtMTU5MCwxMCArMTU5MCwxMCBAQCB2b2lk
IGxpbmtDbG9zdXJlQ2FsbCgKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAg
ICAgICAgYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIHN0dWJKaXQuYnJhbmNoOCgK
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCi0gICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAot
ICAgICAgICAgICAgc3RydWN0dXJlKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoY2FsbGVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb25UeXBlKSkpOwogICAgIAogICAg
IHNsb3dQYXRoLmFwcGVuZCgKICAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCkBAIC0xNjQ3LDcg
KzE2NDcsNyBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKICAgICAgICAgICAgICgiQ2xvc3VyZSBj
YWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldCAlcCAoJXMpIiwKICAgICAg
ICAgICAgICAgICB0b0NTdHJpbmcoKmNhbGxlckNvZGVCbG9jaykuZGF0YSgpLCBjYWxsTGlua0lu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoMCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgICAgICAgICBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIHRvQ1N0cmlu
Zyhwb2ludGVyRHVtcChjYWxsZWVDb2RlQmxvY2spKS5kYXRhKCkpKSwKLSAgICAgICAgKnZtLCBj
YWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUsIGV4ZWN1dGFibGUs
IGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKSk7CisgICAgICAgICp2bSwgY2FsbGVyQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgZXhlY3V0YWJsZSwgY2FsbExpbmtJbmZvLmNvZGVPcmlnaW4p
KTsKICAgICAKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2Nr
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAx
NzEzNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIGJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXRlKiwg
SlNWYWx1CiB2b2lkIHJlcGF0Y2hJbihFeGVjU3RhdGUqLCBKU0NlbGwqLCBjb25zdCBJZGVudGlm
aWVyJiwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgbGlua0ZvcihFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sq
LCBKU0Z1bmN0aW9uKiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKTsKIHZvaWQgbGlua1Nsb3dGb3Io
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgUmVnaXN0
ZXJQcmVzZXJ2YXRpb25Nb2RlKTsKLXZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENh
bGxMaW5rSW5mbyYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIEV4ZWN1dGFibGVCYXNlKiwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwordm9pZCBsaW5r
Q2xvc3VyZUNhbGwoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgRXhlY3V0
YWJsZUJhc2UqLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9k
ZSk7CiB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiwgU3RydWN0dXJlU3R1YkluZm8m
KTsKIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCByZXNldEluKFJlcGF0Y2hCdWZmZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwo=
</data>
<flag name="review"
          id="259912"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>