<?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>21754</bug_id>
          
          <creation_ts>2008-10-20 08:16:43 -0700</creation_ts>
          <short_desc>REGRESSION (r37712): Windows JSC build broken (can&apos;t return JSValuePtr from ctiTrampoline, which is extern &quot;C&quot;)</short_desc>
          <delta_ts>2008-10-20 09:17:09 -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>PC</rep_platform>
          <op_sys>Windows XP</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>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>95997</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-10-20 08:16:43 -0700</bug_when>
    <thetext>The Windows JSC build is broken. Here&apos;s the error:

c:\cygwin\home\adam roben\dev\webkit\opensource\javascriptcore\vm\CTI.h(233) : warning C4190: &apos;ctiTrampoline&apos; has C-linkage specified, but returns UDT &apos;JSC::JSValuePtr&apos; which is incompatible with C
        c:\cygwin\home\adam roben\dev\webkit\opensource\javascriptcore\kjs\JSImmediate.h(42) : see declaration of &apos;JSC::JSValuePtr&apos;

r37712 &lt;http://trac.webkit.org/changeset/37712&gt; changed JSValuePtr from a JSValue* typedef to a class. We could roll out r37712 (and r37714, which depends upon it). But hopefully there&apos;s a better fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95999</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-20 08:20:31 -0700</bug_when>
    <thetext>Build is probably fixed by http://trac.webkit.org/changeset/37721 but compiling isn&apos;t enough -- not sure the CTI code still works properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96007</commentid>
    <comment_count>2</comment_count>
      <attachid>24524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-20 09:13:54 -0700</bug_when>
    <thetext>Created attachment 24524
patch to fix so it actually runs, not just compiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96008</commentid>
    <comment_count>3</comment_count>
      <attachid>24524</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-10-20 09:17:09 -0700</bug_when>
    <thetext>Comment on attachment 24524
patch to fix so it actually runs, not just compiles

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24524</attachid>
            <date>2008-10-20 09:13:54 -0700</date>
            <delta_ts>2008-10-20 09:17:09 -0700</delta_ts>
            <desc>patch to fix so it actually runs, not just compiles</desc>
            <filename>WindowsFixPatch.txt</filename>
            <type>text/plain</type>
            <size>45896</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NzI3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODEgQEAKKzIwMDgtMTAtMjAgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gZ2V0IENUSSB3b3JraW5nIG9uIFdpbmRvd3MgYWdhaW4KKworICAg
ICAgICAqIFZNL0NUSS5jcHA6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdENUSUNhbGwpOiBBZGQg
YW4gb3ZlcmxvYWQgZm9yIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgIHJldHVybiBKU09iamVjdCou
CisgICAgICAgICogVk0vQ1RJLmg6IFVzZSBKU1ZhbHVlKiBhbmQgSlNPYmplY3QqIGFzIHJldHVy
biB0eXBlcyBmb3IKKyAgICAgICAgY3RpX29wIGZ1bmN0aW9ucy4gQXBwYXJlbnRseSwgTVNWQyBk
b2Vzbid0IGhhbmRsZSByZXR1cm5pbmcKKyAgICAgICAgdGhlIEpTVmFsdWVQdHIgc3RydWN0IGlu
IGEgcmVnaXN0ZXIuIFdlJ2xsIGhhdmUgdG8gbG9vayBpbnRvCisgICAgICAgIHRoaXMgbW9yZS4K
KworICAgICAgICAqIFZNL01hY2hpbmUuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlf
b3BfY29udmVydF90aGlzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2FkZCk6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9wcmVfaW5jKToKKyAgICAgICAgKEpTQzo6TWFj
aGluZTo6Y3RpX29wX25ld19vYmplY3QpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3Bf
Z2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2dldF9ieV9pZF9zZWNv
bmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2dlbmVyaWMpOgor
ICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwpOgorICAgICAgICAo
SlNDOjpNYWNoaW5lOjpjdGlfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6
OmN0aV9vcF9kZWxfYnlfaWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfbXVsKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX25ld19mdW5jKToKKyAgICAgICAgKEpTQzo6
TWFjaGluZTo6Y3RpX29wX3B1c2hfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6
OmN0aV9vcF9jYWxsX05vdEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlf
b3BfbmV3X2FycmF5KToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX3Jlc29sdmUpOgor
ICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfY29uc3RydWN0X0pTQ29uc3RydWN0RmFzdCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmU6OmN0aV9vcF9zdWIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3Bf
bGVzc2VxKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX25lZ2F0ZSk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9yZXNvbHZlX2Jhc2UpOgorICAgICAgICAoSlNDOjpNYWNo
aW5lOjpjdGlfb3BfcmVzb2x2ZV9za2lwKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29w
X3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2Rpdik6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9wcmVfZGVjKToKKyAgICAgICAgKEpTQzo6TWFj
aGluZTo6Y3RpX29wX25vdCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9lcSk6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9sc2hpZnQpOgorICAgICAgICAoSlNDOjpNYWNo
aW5lOjpjdGlfb3BfYml0YW5kKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX3JzaGlm
dCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9iaXRub3QpOgorICAgICAgICAoSlND
OjpNYWNoaW5lOjpjdGlfb3BfbmV3X2Z1bmNfZXhwKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6
Y3RpX29wX21vZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9sZXNzKToKKyAgICAg
ICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX25lcSk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0
aV9vcF91cnNoaWZ0KToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2JpdHhvcik6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9uZXdfcmVnZXhwKToKKyAgICAgICAgKEpTQzo6
TWFjaGluZTo6Y3RpX29wX2JpdG9yKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2Nh
bGxfZXZhbCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF90aHJvdyk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9uZXh0X3BuYW1lKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZTo6Y3RpX29wX3R5cGVvZik6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9pc191bmRl
ZmluZWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfaXNfYm9vbGVhbik6CisgICAg
ICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9pc19udW1iZXIpOgorICAgICAgICAoSlNDOjpNYWNo
aW5lOjpjdGlfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6Y3RpX29wX2lz
X29iamVjdCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9pc19mdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9zdHJpY3RlcSk6CisgICAgICAgIChKU0M6Ok1h
Y2hpbmU6OmN0aV9vcF9uc3RyaWN0ZXEpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3Bf
dG9fanNudW1iZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfaW4pOgorICAgICAg
ICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfcHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAoSlNDOjpN
YWNoaW5lOjpjdGlfb3BfZGVsX2J5X3ZhbCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9v
cF9uZXdfZXJyb3IpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfdm1fdGhyb3cpOgorICAg
ICAgICBDaGFuZ2UgdGhlc2UgZnVuY3Rpb25zIHRvIHJldHVybiBwb2ludGVyIHR5cGVzLCBhbmQg
bmV2ZXIKKyAgICAgICAgSlNWYWx1ZVB0ci4KKyAgICAgICAgKiBWTS9NYWNoaW5lLmg6IERpdHRv
LgorCiAyMDA4LTEwLTIwICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9D
VEkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL0NUSS5jcHAJKHJldmlzaW9u
IDM3NzIyKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ1LDYgKzM0NSwyMiBAQCBBTFdBWVNfSU5MSU5FIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIENUSTo6
CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgWDg2QXNzZW1ibGVyOjpKbXBT
cmMgQ1RJOjplbWl0Q1RJQ2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJSGVscGVyX28gaGVs
cGVyKQoreworI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQorICAgIG1faml0Lm1vdmxfaTMybSgx
LCAmaW5DYWxsZWRDb2RlKTsKKyNlbmRpZgorICAgIG1faml0LmVtaXRSZXN0b3JlQXJndW1lbnRS
ZWZlcmVuY2UoKTsKKyAgICBlbWl0UHV0Q1RJUGFyYW0oWDg2OjplZGksIENUSV9BUkdTX2NhbGxG
cmFtZSk7CisgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgY2FsbCA9IG1faml0LmVtaXRDYWxsKCk7
CisgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChjYWxsLCBoZWxwZXIsIG9wY29kZUluZGV4
KSk7CisjaWYgRU5BQkxFKFNBTVBMSU5HX1RPT0wpCisgICAgbV9qaXQubW92bF9pMzJtKDAsICZp
bkNhbGxlZENvZGUpOworI2VuZGlmCisKKyAgICByZXR1cm4gY2FsbDsKK30KKwogQUxXQVlTX0lO
TElORSBYODZBc3NlbWJsZXI6OkptcFNyYyBDVEk6OmVtaXRDVElDYWxsKHVuc2lnbmVkIG9wY29k
ZUluZGV4LCBDVElIZWxwZXJfcCBoZWxwZXIpCiB7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1RPT0wp
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9DVEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9WTS9DVEkuaAkocmV2aXNpb24gMzc3MjEpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9DVEku
aAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBz
dHJ1Y3QgT3BlcmFuZFR5cGVzOwogICAgIHN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbzsKIAotICAg
IHR5cGVkZWYgSlNWYWx1ZVB0ciAoU0ZYX0NBTEwgKkNUSUhlbHBlcl9qKShDVElfQVJHUyk7Cisg
ICAgdHlwZWRlZiBKU1ZhbHVlKiAoU0ZYX0NBTEwgKkNUSUhlbHBlcl9qKShDVElfQVJHUyk7Cisg
ICAgdHlwZWRlZiBKU09iamVjdCogKFNGWF9DQUxMICpDVElIZWxwZXJfbykoQ1RJX0FSR1MpOwog
ICAgIHR5cGVkZWYgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogKFNGWF9DQUxMICpDVElIZWxwZXJf
cCkoQ1RJX0FSR1MpOwogICAgIHR5cGVkZWYgdm9pZCAoU0ZYX0NBTEwgKkNUSUhlbHBlcl92KShD
VElfQVJHUyk7CiAgICAgdHlwZWRlZiB2b2lkKiAoU0ZYX0NBTEwgKkNUSUhlbHBlcl9zKShDVElf
QVJHUyk7CkBAIC0xMTYsNDIgKzExNyw0OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBD
YWxsUmVjb3JkKFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGYsIENUSUhlbHBlcl9qIHQsIHVuc2lnbmVk
IGkpCiAgICAgICAgICAgICA6IGZyb20oZikKLSAgICAgICAgICAgICwgdG8oKHZvaWQqKXQpCisg
ICAgICAgICAgICAsIHRvKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHQpKQorICAgICAgICAgICAg
LCBvcGNvZGVJbmRleChpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBDYWxsUmVj
b3JkKFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGYsIENUSUhlbHBlcl9vIHQsIHVuc2lnbmVkIGkpCisg
ICAgICAgICAgICA6IGZyb20oZikKKyAgICAgICAgICAgICwgdG8ocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odCkpCiAgICAgICAgICAgICAsIG9wY29kZUluZGV4KGkpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCiAgICAgICAgIENhbGxSZWNvcmQoWDg2QXNzZW1ibGVyOjpKbXBTcmMgZiwgQ1RJSGVs
cGVyX3AgdCwgdW5zaWduZWQgaSkKICAgICAgICAgICAgIDogZnJvbShmKQotICAgICAgICAgICAg
LCB0bygodm9pZCopdCkKKyAgICAgICAgICAgICwgdG8ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dCkpCiAgICAgICAgICAgICAsIG9wY29kZUluZGV4KGkpCiAgICAgICAgIHsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgQ2FsbFJlY29yZChYODZBc3NlbWJsZXI6OkptcFNyYyBmLCBDVElI
ZWxwZXJfdiB0LCB1bnNpZ25lZCBpKQogICAgICAgICAgICAgOiBmcm9tKGYpCi0gICAgICAgICAg
ICAsIHRvKCh2b2lkKil0KQorICAgICAgICAgICAgLCB0byhyZWludGVycHJldF9jYXN0PHZvaWQq
Pih0KSkKICAgICAgICAgICAgICwgb3Bjb2RlSW5kZXgoaSkKICAgICAgICAgewogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBDYWxsUmVjb3JkKFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGYsIENU
SUhlbHBlcl9zIHQsIHVuc2lnbmVkIGkpCiAgICAgICAgICAgICA6IGZyb20oZikKLSAgICAgICAg
ICAgICwgdG8oKHZvaWQqKXQpCisgICAgICAgICAgICAsIHRvKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHQpKQogICAgICAgICAgICAgLCBvcGNvZGVJbmRleChpKQogICAgICAgICB7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIENhbGxSZWNvcmQoWDg2QXNzZW1ibGVyOjpKbXBTcmMgZiwg
Q1RJSGVscGVyX2IgdCwgdW5zaWduZWQgaSkKICAgICAgICAgICAgIDogZnJvbShmKQotICAgICAg
ICAgICAgLCB0bygodm9pZCopdCkKKyAgICAgICAgICAgICwgdG8ocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odCkpCiAgICAgICAgICAgICAsIG9wY29kZUluZGV4KGkpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCiAgICAgICAgIENhbGxSZWNvcmQoWDg2QXNzZW1ibGVyOjpKbXBTcmMgZiwgQ1RJSGVs
cGVyXzIgdCwgdW5zaWduZWQgaSkKICAgICAgICAgICAgIDogZnJvbShmKQotICAgICAgICAgICAg
LCB0bygodm9pZCopdCkKKyAgICAgICAgICAgICwgdG8ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
dCkpCiAgICAgICAgICAgICAsIG9wY29kZUluZGV4KGkpCiAgICAgICAgIHsKICAgICAgICAgfQpA
QCAtNDAzLDYgKzQxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBYODZBc3NlbWJsZXI6
OkptcFNyYyBlbWl0TmFrZWRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBYODY6OlJlZ2lzdGVy
SUQpOwogICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBlbWl0TmFrZWRDYWxsKHVuc2lnbmVk
IG9wY29kZUluZGV4LCB2b2lkKCpmdW5jdGlvbikoKSk7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6
Sm1wU3JjIGVtaXRDVElDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfaik7Cisg
ICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDVElDYWxsKHVuc2lnbmVkIG9wY29kZUlu
ZGV4LCBDVElIZWxwZXJfbyk7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDVElD
YWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfcCk7CiAgICAgICAgIFg4NkFzc2Vt
Ymxlcjo6Sm1wU3JjIGVtaXRDVElDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJf
dik7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDVElDYWxsKHVuc2lnbmVkIG9w
Y29kZUluZGV4LCBDVElIZWxwZXJfcyk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAkocmV2aXNp
b24gMzc3MjApCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDI0Nyw3ICs0MjQ3LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSB2b2lkIHNldFVwVGhy
b3dUcmFtcAogI2RlZmluZSBWTV9USFJPV19FWENFUFRJT04oKSBcCiAgICAgZG8geyBcCiAgICAg
ICAgIFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsgXAotICAgICAgICByZXR1cm4gbm9WYWx1
ZSgpOyBcCisgICAgICAgIHJldHVybiAwOyBcCiAgICAgfSB3aGlsZSAoMCkKICNkZWZpbmUgVk1f
VEhST1dfRVhDRVBUSU9OXzIoKSBcCiAgICAgZG8geyBcCkBAIC00Mjc2LDcgKzQyNzYsNyBAQCBz
dGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgc2V0VXBUaHJvd1RyYW1wCiAgICAgICAgIH0gXAogICAg
IH0gd2hpbGUgKDApCiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2NvbnZlcnRfdGhpcyhD
VElfQVJHUykKK0pTT2JqZWN0KiBNYWNoaW5lOjpjdGlfb3BfY29udmVydF90aGlzKENUSV9BUkdT
KQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTQyOTcsNyArNDI5Nyw3IEBAIHZvaWQg
TWFjaGluZTo6Y3RpX29wX2VuZChDVElfQVJHUykKICAgICBzY29wZUNoYWluLT5kZXJlZigpOwog
fQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9hZGQoQ1RJX0FSR1MpCitKU1ZhbHVlKiBN
YWNoaW5lOjpjdGlfb3BfYWRkKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAK
QEAgLTQzMDksNyArNDMwOSw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2FkZChDVElf
QVJHUykKIAogICAgIGJvb2wgcmlnaHRJc051bWJlciA9IGZhc3RJc051bWJlcih2MiwgcmlnaHQp
OwogICAgIGlmIChyaWdodElzTnVtYmVyICYmIGZhc3RJc051bWJlcih2MSwgbGVmdCkpCi0gICAg
ICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCArIHJpZ2h0KTsKKyAgICAg
ICAgcmV0dXJuIGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0ICsgcmlnaHQpLnBheWxvYWQo
KTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAKQEAg
LTQzMjEsNyArNDMyMSw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2FkZChDVElfQVJH
UykKICAgICAgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTigpOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKEFSR19nbG9iYWxEYXRhLCB2YWx1ZS5yZWxlYXNlKCkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZVB0cihqc1N0cmluZyhBUkdfZ2xvYmFsRGF0YSwgdmFsdWUucmVs
ZWFzZSgpKSkucGF5bG9hZCgpOwogICAgIH0KIAogICAgIGlmIChyaWdodElzTnVtYmVyICYgbGVm
dElzU3RyaW5nKSB7CkBAIC00MzMzLDE2ICs0MzMzLDE2IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6
Y3RpX29wX2FkZChDVElfQVJHUykKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihj
YWxsRnJhbWUpOwogICAgICAgICAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGpzU3RyaW5nKEFSR19nbG9iYWxEYXRhLCB2YWx1ZS5yZWxlYXNlKCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZVB0cihqc1N0cmluZyhBUkdfZ2xvYmFsRGF0YSwgdmFs
dWUucmVsZWFzZSgpKSkucGF5bG9hZCgpOwogICAgIH0KIAogICAgIC8vIEFsbCBvdGhlciBjYXNl
cyBhcmUgcHJldHR5IHVuY29tbW9uCiAgICAgSlNWYWx1ZVB0ciByZXN1bHQgPSBqc0FkZFNsb3dD
YXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKIH0KIAot
SlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfcHJlX2luYyhDVElfQVJHUykKK0pTVmFsdWUqIE1h
Y2hpbmU6OmN0aV9vcF9wcmVfaW5jKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7
CiAKQEAgLTQzNTEsNyArNDM1MSw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3ByZV9p
bmMoQ1RJX0EKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAgICAg
SlNWYWx1ZVB0ciByZXN1bHQgPSBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgdi0+dG9OdW1iZXIo
Y2FsbEZyYW1lKSArIDEpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCiB2b2lkIE1h
Y2hpbmU6OmN0aV90aW1lb3V0X2NoZWNrKENUSV9BUkdTKQpAQCAtNDQwOCwxMSArNDQwOCwxMSBA
QCBpbnQgTWFjaGluZTo6Y3RpX29wX2xvb3BfaWZfbGVzc2VxKENUSV9BCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfbmV3X29iamVjdChDVElfQVJH
UykKK0pTT2JqZWN0KiBNYWNoaW5lOjpjdGlfb3BfbmV3X29iamVjdChDVElfQVJHUykKIHsKICAg
ICBDVElfU1RBQ0tfSEFDSygpOwogCi0gICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KEFS
R19jYWxsRnJhbWUpOzsKKyAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoQVJHX2NhbGxG
cmFtZSk7CiB9CiAKIHZvaWQgTWFjaGluZTo6Y3RpX29wX3B1dF9ieV9pZChDVElfQVJHUykKQEAg
LTQ0NjUsNyArNDQ2NSw3IEBAIHZvaWQgTWFjaGluZTo6Y3RpX29wX3B1dF9ieV9pZF9mYWlsKENU
SV8KICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFj
aGluZTo6Y3RpX29wX2dldF9ieV9pZChDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9v
cF9nZXRfYnlfaWQoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNDQ3
OSwxMCArNDQ3OSwxMCBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWQoQ1RJ
CiAgICAgY3RpUmVwYXRjaENhbGxCeVJldHVybkFkZHJlc3MoQ1RJX1JFVFVSTl9BRERSRVNTLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihjdGlfb3BfZ2V0X2J5X2lkX3NlY29uZCkpOwogCiAgICAg
Vk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2dl
dF9ieV9pZF9zZWNvbmQoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5
X2lkX3NlY29uZChDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC00NDk2
LDEwICs0NDk2LDEwIEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2dldF9ieV9pZF9zZWMK
ICAgICBBUkdfZ2xvYmFsRGF0YS0+bWFjaGluZS0+dHJ5Q1RJQ2FjaGVHZXRCeUlEKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKSwgQ1RJX1JFVFVSTl9BRERSRVNTLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90KTsKIAogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCi1KU1ZhbHVl
UHRyIE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYyhDVElfQVJHUykKK0pTVmFsdWUq
IE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYyhDVElfQVJHUykKIHsKICAgICBDVElf
U1RBQ0tfSEFDSygpOwogCkBAIC00NTExLDEwICs0NTExLDEwIEBAIEpTVmFsdWVQdHIgTWFjaGlu
ZTo6Y3RpX29wX2dldF9ieV9pZF9nZW4KICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGJhc2VWYWx1
ZS0+Z2V0KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpOwogCiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9O
X0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2Fk
KCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2dldF9ieV9pZF9mYWlsKENUSV9B
UkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX2dldF9ieV9pZF9mYWlsKENUSV9BUkdTKQog
ewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTQ1MjksMTAgKzQ1MjksMTAgQEAgSlNWYWx1
ZVB0ciBNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaQogICAgIGN0aVJlcGF0Y2hDYWxsQnlS
ZXR1cm5BZGRyZXNzKENUSV9SRVRVUk5fQUREUkVTUywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Y3RpX29wX2dldF9ieV9pZF9nZW5lcmljKSk7CiAKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRf
RU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsK
IH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfaW5zdGFuY2VvZihDVElfQVJHUykKK0pT
VmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9pbnN0YW5jZW9mKENUSV9BUkdTKQogewogICAgIENUSV9T
VEFDS19IQUNLKCk7CiAKQEAgLTQ1NTYsNyArNDU1Niw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6
Y3RpX29wX2luc3RhbmNlb2YoQ1QKICAgICB9CiAKICAgICBpZiAoIWFzT2JqZWN0KGJhc2VWYWwp
LT5zdHJ1Y3R1cmVJRCgpLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAg
ICAgICByZXR1cm4ganNCb29sZWFuKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVQdHIo
anNCb29sZWFuKGZhbHNlKSkucGF5bG9hZCgpOwogCiAgICAgaWYgKCFwcm90by0+aXNPYmplY3Qo
KSkgewogICAgICAgICB0aHJvd0Vycm9yKGNhbGxGcmFtZSwgVHlwZUVycm9yLCAiaW5zdGFuY2Vv
ZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHku
Iik7CkBAIC00NTY0LDE1ICs0NTY0LDE1IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2lu
c3RhbmNlb2YoQ1QKICAgICB9CiAgICAgICAgIAogICAgIGlmICghdmFsdWUtPmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZVB0cihqc0Jvb2xlYW4oZmFsc2UpKS5wYXlsb2FkKCk7CiAKICAgICBKU1ZhbHVlUHRyIHJlc3Vs
dCA9IGpzQm9vbGVhbihhc09iamVjdChiYXNlVmFsKS0+aGFzSW5zdGFuY2UoY2FsbEZyYW1lLCB2
YWx1ZSwgcHJvdG8pKTsKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7CiAKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCi1KU1ZhbHVl
UHRyIE1hY2hpbmU6OmN0aV9vcF9kZWxfYnlfaWQoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5l
OjpjdGlfb3BfZGVsX2J5X2lkKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAK
QEAgLTQ1ODMsMTAgKzQ1ODMsMTAgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfZGVsX2J5
X2lkKENUSQogCiAgICAgSlNWYWx1ZVB0ciByZXN1bHQgPSBqc0Jvb2xlYW4oYmFzZU9iai0+ZGVs
ZXRlUHJvcGVydHkoY2FsbEZyYW1lLCBpZGVudCkpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9B
VF9FTkQoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgp
OwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9tdWwoQ1RJX0FSR1MpCitKU1ZhbHVl
KiBNYWNoaW5lOjpjdGlfb3BfbXVsKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7
CiAKQEAgLTQ1OTYsMTUgKzQ1OTYsMTUgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfbXVs
KENUSV9BUkdTKQogICAgIGRvdWJsZSBsZWZ0OwogICAgIGRvdWJsZSByaWdodDsKICAgICBpZiAo
ZmFzdElzTnVtYmVyKHNyYzEsIGxlZnQpICYmIGZhc3RJc051bWJlcihzcmMyLCByaWdodCkpCi0g
ICAgICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCAqIHJpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0ICogcmlnaHQpLnBheWxv
YWQoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKICAgICBK
U1ZhbHVlUHRyIHJlc3VsdCA9IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBzcmMxLT50b051bWJl
cihjYWxsRnJhbWUpICogc3JjMi0+dG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgVk1fQ0hFQ0tf
RVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3Vs
dC5wYXlsb2FkKCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25ld19mdW5jKENU
SV9BUkdTKQorSlNPYmplY3QqIE1hY2hpbmU6OmN0aV9vcF9uZXdfZnVuYyhDVElfQVJHUykKIHsK
ICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC00Njk3LDcgKzQ2OTcsNyBAQCB2b2lkKiBNYWNo
aW5lOjpjdGlfdm1fY29tcGlsZShDVElfQVJHUykKICAgICByZXR1cm4gY29kZUJsb2NrLT5jdGlD
b2RlOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9wdXNoX2FjdGl2YXRpb24oQ1RJ
X0FSR1MpCitKU09iamVjdCogTWFjaGluZTo6Y3RpX29wX3B1c2hfYWN0aXZhdGlvbihDVElfQVJH
UykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC00NzA2LDcgKzQ3MDYsNyBAQCBKU1Zh
bHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9wdXNoX2FjdGl2YXRpCiAgICAgcmV0dXJuIGFjdGl2YXRp
b247CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihD
VElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9jYWxsX05vdEpTRnVuY3Rpb24oQ1RJ
X0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNDc0MSw3ICs0NzQxLDcgQEAg
SlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfY2FsbF9Ob3RKU0Z1bgogICAgICAgICBpZiAoKkFS
R19wcm9maWxlclJlZmVyZW5jZSkKICAgICAgICAgICAgICgqQVJHX3Byb2ZpbGVyUmVmZXJlbmNl
KS0+ZGlkRXhlY3V0ZShwcmV2aW91c0NhbGxGcmFtZSwgYXNPYmplY3QoZnVuY1ZhbCkpOwogCi0g
ICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlLnBh
eWxvYWQoKTsKICAgICB9CiAKICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsK
QEAgLTQ3OTgsNyArNDc5OCw3IEBAIHZvaWQgTWFjaGluZTo6Y3RpX29wX3JldF9zY29wZUNoYWlu
KENUSV8KICAgICBBUkdfY2FsbEZyYW1lLT5zY29wZUNoYWluKCktPmRlcmVmKCk7CiB9CiAKLUpT
VmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25ld19hcnJheShDVElfQVJHUykKK0pTT2JqZWN0KiBN
YWNoaW5lOjpjdGlfb3BfbmV3X2FycmF5KENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNL
KCk7CiAKQEAgLTQ4MDYsNyArNDgwNiw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25l
d19hcnJheShDVEkKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoQVJHX2NhbGxGcmFtZSwgYXJn
TGlzdCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3Jlc29sdmUoQ1RJX0FSR1Mp
CitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3BfcmVzb2x2ZShDVElfQVJHUykKIHsKICAgICBDVElf
U1RBQ0tfSEFDSygpOwogCkBAIC00ODI0LDcgKzQ4MjQsNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6
OmN0aV9vcF9yZXNvbHZlKENUSV9BCiAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0eVNsb3QoY2Fs
bEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFsdWVQdHIgcmVzdWx0ID0g
c2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKICAgICAgICAgICAgIFZNX0NIRUNLX0VY
Q0VQVElPTl9BVF9FTkQoKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKCsraXRl
ciAhPSBlbmQpOwogCkBAIC00ODM1LDcgKzQ4MzUsNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0
aV9vcF9yZXNvbHZlKENUSV9BCiAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiB9CiAKLUpTVmFs
dWVQdHIgTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9KU0NvbnN0cnVjdEZhc3QoQ1RJX0FSR1Mp
CitKU09iamVjdCogTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9KU0NvbnN0cnVjdEZhc3QoQ1RJ
X0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNDkxNCw3ICs0OTE0LDcgQEAg
Vm9pZFB0clBhaXIgTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9KUwogICAgIHJldHVybiBwYWly
OwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1
Y3QoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3BfY29uc3RydWN0X05vdEpTQ29u
c3RydWN0KENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTQ5NDMsNyAr
NDk0Myw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9Ob3QKICAgICAg
ICAgaWYgKCpBUkdfcHJvZmlsZXJSZWZlcmVuY2UpCiAgICAgICAgICAgICAoKkFSR19wcm9maWxl
clJlZmVyZW5jZSktPmRpZEV4ZWN1dGUoY2FsbEZyYW1lLCBjb25zdHJ1Y3Rvcik7CiAKLSAgICAg
ICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWUucGF5bG9h
ZCgpOwogICAgIH0KIAogICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVO
b25lKTsKQEAgLTQ5NTIsNyArNDk1Miw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2Nv
bnN0cnVjdF9Ob3QKICAgICBWTV9USFJPV19FWENFUFRJT04oKTsKIH0KIAotSlNWYWx1ZVB0ciBN
YWNoaW5lOjpjdGlfb3BfZ2V0X2J5X3ZhbChDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0
aV9vcF9nZXRfYnlfdmFsKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAg
LTQ5ODMsNyArNDk4Myw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2dldF9ieV92YWwo
Q1QKICAgICB9CiAKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKIH0KIAogVm9pZFB0clBhaXIg
TWFjaGluZTo6Y3RpX29wX3Jlc29sdmVfZnVuYyhDVElfQVJHUykKQEAgLTUwMzAsNyArNTAzMCw3
IEBAIFZvaWRQdHJQYWlyIE1hY2hpbmU6OmN0aV9vcF9yZXNvbHZlX2Z1bmMKICAgICBWTV9USFJP
V19FWENFUFRJT05fMigpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9zdWIoQ1RJ
X0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3Bfc3ViKENUSV9BUkdTKQogewogICAgIENU
SV9TVEFDS19IQUNLKCk7CiAKQEAgLTUwNDAsMTIgKzUwNDAsMTIgQEAgSlNWYWx1ZVB0ciBNYWNo
aW5lOjpjdGlfb3Bfc3ViKENUSV9BUkdTKQogICAgIGRvdWJsZSBsZWZ0OwogICAgIGRvdWJsZSBy
aWdodDsKICAgICBpZiAoZmFzdElzTnVtYmVyKHNyYzEsIGxlZnQpICYmIGZhc3RJc051bWJlcihz
cmMyLCByaWdodCkpCi0gICAgICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVm
dCAtIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0
IC0gcmlnaHQpLnBheWxvYWQoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2Nh
bGxGcmFtZTsKICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRh
LCBzcmMxLT50b051bWJlcihjYWxsRnJhbWUpIC0gc3JjMi0+dG9OdW1iZXIoY2FsbEZyYW1lKSk7
CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAKIHZvaWQgTWFjaGluZTo6Y3RpX29wX3B1
dF9ieV92YWwoQ1RJX0FSR1MpCkBAIC01MTA4LDE0ICs1MTA4LDE0IEBAIHZvaWQgTWFjaGluZTo6
Y3RpX29wX3B1dF9ieV92YWxfYXJyYXkoQ1QKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5E
KCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2xlc3NlcShDVElfQVJHUykKK0pT
VmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9sZXNzZXEoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNL
X0hBQ0soKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKICAg
ICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3NFcShjYWxsRnJhbWUsIEFSR19z
cmMxLCBBUkdfc3JjMikpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCiBpbnQgTWFj
aGluZTo6Y3RpX29wX2xvb3BfaWZfdHJ1ZShDVElfQVJHUykKQEAgLTUxMzEsNyArNTEzMSw3IEBA
IGludCBNYWNoaW5lOjpjdGlfb3BfbG9vcF9pZl90cnVlKENUSV9BUkcKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9uZWdhdGUoQ1RJX0FSR1MpCitK
U1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3BfbmVnYXRlKENUSV9BUkdTKQogewogICAgIENUSV9TVEFD
S19IQUNLKCk7CiAKQEAgLTUxMzksMjIgKzUxMzksMjIgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpj
dGlfb3BfbmVnYXRlKENUSV9BUgogCiAgICAgZG91YmxlIHY7CiAgICAgaWYgKGZhc3RJc051bWJl
cihzcmMsIHYpKQotICAgICAgICByZXR1cm4ganNOdW1iZXIoQVJHX2dsb2JhbERhdGEsIC12KTsK
KyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCAtdikucGF5bG9hZCgpOwog
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBBUkdfY2FsbEZyYW1lOwogICAgIEpTVmFsdWVQ
dHIgcmVzdWx0ID0ganNOdW1iZXIoQVJHX2dsb2JhbERhdGEsIC1zcmMtPnRvTnVtYmVyKGNhbGxG
cmFtZSkpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hp
bmU6OmN0aV9vcF9yZXNvbHZlX2Jhc2UoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlf
b3BfcmVzb2x2ZV9iYXNlKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKLSAg
ICByZXR1cm4gaW5saW5lUmVzb2x2ZUJhc2UoQVJHX2NhbGxGcmFtZSwgKkFSR19pZDEsIEFSR19j
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKSk7CisgICAgcmV0dXJuIGlubGluZVJlc29sdmVCYXNlKEFS
R19jYWxsRnJhbWUsICpBUkdfaWQxLCBBUkdfY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpLnBheWxv
YWQoKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfcmVzb2x2ZV9za2lwKENUSV9B
UkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX3Jlc29sdmVfc2tpcChDVElfQVJHUykKIHsK
ICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01MTc3LDcgKzUxNzcsNyBAQCBKU1ZhbHVlUHRy
IE1hY2hpbmU6OmN0aV9vcF9yZXNvbHZlX3NraXAoCiAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0
eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgICAgIEpTVmFsdWVQdHIg
cmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50KTsKICAgICAgICAgICAgIFZN
X0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKICAgICAgICAgfQogICAgIH0gd2hp
bGUgKCsraXRlciAhPSBlbmQpOwogCkBAIC01MTg4LDcgKzUxODgsNyBAQCBKU1ZhbHVlUHRyIE1h
Y2hpbmU6OmN0aV9vcF9yZXNvbHZlX3NraXAoCiAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiB9
CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3Jlc29sdmVfZ2xvYmFsKENUSV9BUkdTKQor
SlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX3Jlc29sdmVfZ2xvYmFsKENUSV9BUkdTKQogewogICAg
IENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTUyMDcsMTggKzUyMDcsMTggQEAgSlNWYWx1ZVB0ciBN
YWNoaW5lOjpjdGlfb3BfcmVzb2x2ZV9nbG9iYQogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpLT5yZWYoKTsKICAgICAgICAgICAgIHZQQ1s0XSA9IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlSUQoKTsKICAgICAgICAgICAgIHZQQ1s1XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5w
YXlsb2FkKCk7CiAgICAgICAgIH0KIAogICAgICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5E
KCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiByZXN1bHQucGF5bG9h
ZCgpOwogICAgIH0KICAgICAKICAgICBBUkdfZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihjYWxsRnJhbWUsIGlkZW50LCB2UEMsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCkpOwogICAgIFZNX1RIUk9XX0VYQ0VQVElPTigpOwogfQogCi1KU1ZhbHVlUHRy
IE1hY2hpbmU6OmN0aV9vcF9kaXYoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3Bf
ZGl2KENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTUyMjgsMTUgKzUy
MjgsMTUgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfZGl2KENUSV9BUkdTKQogICAgIGRv
dWJsZSBsZWZ0OwogICAgIGRvdWJsZSByaWdodDsKICAgICBpZiAoZmFzdElzTnVtYmVyKHNyYzEs
IGxlZnQpICYmIGZhc3RJc051bWJlcihzcmMyLCByaWdodCkpCi0gICAgICAgIHJldHVybiBqc051
bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCAvIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0IC8gcmlnaHQpLnBheWxvYWQoKTsKIAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9
IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBzcmMxLT50b051bWJlcihjYWxsRnJhbWUpIC8gc3Jj
Mi0+dG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAK
LUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3ByZV9kZWMoQ1RJX0FSR1MpCitKU1ZhbHVlKiBN
YWNoaW5lOjpjdGlfb3BfcHJlX2RlYyhDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygp
OwogCkBAIC01MjQ1LDcgKzUyNDUsNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9wcmVf
ZGVjKENUSV9BCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBBUkdfY2FsbEZyYW1lOwogICAg
IEpTVmFsdWVQdHIgcmVzdWx0ID0ganNOdW1iZXIoQVJHX2dsb2JhbERhdGEsIHYtPnRvTnVtYmVy
KGNhbGxGcmFtZSkgLSAxKTsKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKIH0KIAogaW50IE1h
Y2hpbmU6OmN0aV9vcF9qbGVzcyhDVElfQVJHUykKQEAgLTUyNjEsNyArNTI2MSw3IEBAIGludCBN
YWNoaW5lOjpjdGlfb3Bfamxlc3MoQ1RJX0FSR1MpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
SlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3Bfbm90KENUSV9BUkdTKQorSlNWYWx1ZSogTWFjaGlu
ZTo6Y3RpX29wX25vdChDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01
MjcxLDcgKzUyNzEsNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9ub3QoQ1RJX0FSR1Mp
CiAKICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGpzQm9vbGVhbighc3JjLT50b0Jvb2xlYW4oY2Fs
bEZyYW1lKSk7CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAKIGludCBTRlhfQ0FMTCBN
YWNoaW5lOjpjdGlfb3BfanRydWUoQ1RJX0FSR1MpCkBAIC01MzAyLDcgKzUzMDIsNyBAQCBWb2lk
UHRyUGFpciBNYWNoaW5lOjpjdGlfb3BfcG9zdF9pbmMoQ1RJCiAgICAgcmV0dXJuIHBhaXI7CiB9
CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2VxKENUSV9BUkdTKQorSlNWYWx1ZSogTWFj
aGluZTo6Y3RpX29wX2VxKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAg
LTUzMTQsMTAgKzUzMTQsMTAgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfZXEoQ1RJX0FS
R1MpCiAgICAgQVNTRVJUKCFKU0ltbWVkaWF0ZTo6YXJlQm90aEltbWVkaWF0ZU51bWJlcnMoc3Jj
MSwgc3JjMikpOwogICAgIEpTVmFsdWVQdHIgcmVzdWx0ID0ganNCb29sZWFuKGVxdWFsU2xvd0Nh
c2VJbmxpbmUoY2FsbEZyYW1lLCBzcmMxLCBzcmMyKSk7CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9O
X0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2Fk
KCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2xzaGlmdChDVElfQVJHUykKK0pT
VmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9sc2hpZnQoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNL
X0hBQ0soKTsKIApAQCAtNTMyNywxNyArNTMyNywxNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0
aV9vcF9sc2hpZnQoQ1RJX0FSCiAgICAgaW50MzJfdCBsZWZ0OwogICAgIHVpbnQzMl90IHJpZ2h0
OwogICAgIGlmIChKU0ltbWVkaWF0ZTo6YXJlQm90aEltbWVkaWF0ZU51bWJlcnModmFsLCBzaGlm
dCkpCi0gICAgICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgSlNJbW1lZGlhdGU6
OmdldFRydW5jYXRlZEludDMyKHZhbCkgPDwgKEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRVSW50
MzIoc2hpZnQpICYgMHgxZikpOworICAgICAgICByZXR1cm4ganNOdW1iZXIoQVJHX2dsb2JhbERh
dGEsIEpTSW1tZWRpYXRlOjpnZXRUcnVuY2F0ZWRJbnQzMih2YWwpIDw8IChKU0ltbWVkaWF0ZTo6
Z2V0VHJ1bmNhdGVkVUludDMyKHNoaWZ0KSAmIDB4MWYpKS5wYXlsb2FkKCk7CiAgICAgaWYgKGZh
c3RUb0ludDMyKHZhbCwgbGVmdCkgJiYgZmFzdFRvVUludDMyKHNoaWZ0LCByaWdodCkpCi0gICAg
ICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCA8PCAocmlnaHQgJiAweDFm
KSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCA8PCAocmln
aHQgJiAweDFmKSkucGF5bG9hZCgpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBBUkdf
Y2FsbEZyYW1lOwogICAgIEpTVmFsdWVQdHIgcmVzdWx0ID0ganNOdW1iZXIoQVJHX2dsb2JhbERh
dGEsICh2YWwtPnRvSW50MzIoY2FsbEZyYW1lKSkgPDwgKHNoaWZ0LT50b1VJbnQzMihjYWxsRnJh
bWUpICYgMHgxZikpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCi1KU1ZhbHVlUHRy
IE1hY2hpbmU6OmN0aV9vcF9iaXRhbmQoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlf
b3BfYml0YW5kKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTUzNDcs
MTUgKzUzNDcsMTUgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfYml0YW5kKENUSV9BUgog
ICAgIGludDMyX3QgbGVmdDsKICAgICBpbnQzMl90IHJpZ2h0OwogICAgIGlmIChmYXN0VG9JbnQz
MihzcmMxLCBsZWZ0KSAmJiBmYXN0VG9JbnQzMihzcmMyLCByaWdodCkpCi0gICAgICAgIHJldHVy
biBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgbGVmdCAmIHJpZ2h0KTsKKyAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0ICYgcmlnaHQpLnBheWxvYWQoKTsKIAogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKICAgICBKU1ZhbHVlUHRyIHJl
c3VsdCA9IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBzcmMxLT50b0ludDMyKGNhbGxGcmFtZSkg
JiBzcmMyLT50b0ludDMyKGNhbGxGcmFtZSkpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9F
TkQoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwog
fQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9yc2hpZnQoQ1RJX0FSR1MpCitKU1ZhbHVl
KiBNYWNoaW5lOjpjdGlfb3BfcnNoaWZ0KENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNL
KCk7CiAKQEAgLTUzNjUsMTcgKzUzNjUsMTcgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3Bf
cnNoaWZ0KENUSV9BUgogICAgIGludDMyX3QgbGVmdDsKICAgICB1aW50MzJfdCByaWdodDsKICAg
ICBpZiAoSlNJbW1lZGlhdGU6OmFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKHZhbCwgc2hpZnQpKQot
ICAgICAgICByZXR1cm4gSlNJbW1lZGlhdGU6OnJpZ2h0U2hpZnRJbW1lZGlhdGVOdW1iZXJzKHZh
bCwgc2hpZnQpOworICAgICAgICByZXR1cm4gSlNJbW1lZGlhdGU6OnJpZ2h0U2hpZnRJbW1lZGlh
dGVOdW1iZXJzKHZhbCwgc2hpZnQpLnBheWxvYWQoKTsKICAgICBpZiAoZmFzdFRvSW50MzIodmFs
LCBsZWZ0KSAmJiBmYXN0VG9VSW50MzIoc2hpZnQsIHJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0ID4+IChyaWdodCAmIDB4MWYpKTsKKyAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBsZWZ0ID4+IChyaWdodCAmIDB4MWYpKS5w
YXlsb2FkKCk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAg
ICAgSlNWYWx1ZVB0ciByZXN1bHQgPSBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgKHZhbC0+dG9J
bnQzMihjYWxsRnJhbWUpKSA+PiAoc2hpZnQtPnRvVUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7
CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3Rp
X29wX2JpdG5vdChDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9iaXRub3QoQ1RJ
X0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNTM4MywxMiArNTM4MywxMiBA
QCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9iaXRub3QoQ1RJX0FSCiAKICAgICBpbnQgdmFs
dWU7CiAgICAgaWYgKGZhc3RUb0ludDMyKHNyYywgdmFsdWUpKQotICAgICAgICByZXR1cm4ganNO
dW1iZXIoQVJHX2dsb2JhbERhdGEsIH52YWx1ZSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihB
UkdfZ2xvYmFsRGF0YSwgfnZhbHVlKS5wYXlsb2FkKCk7CiAgICAgICAgICAgICAKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAgICAgSlNWYWx1ZVB0ciByZXN1bHQg
PSBqc051bWJlcihBUkdfZ2xvYmFsRGF0YSwgfnNyYy0+dG9JbnQzMihjYWxsRnJhbWUpKTsKICAg
ICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKIH0KIAogVm9pZFB0clBhaXIgTWFjaGluZTo6Y3RpX29w
X3Jlc29sdmVfd2l0aF9iYXNlKENUSV9BUkdTKQpAQCAtNTQyNywxNCArNTQyNywxNCBAQCBWb2lk
UHRyUGFpciBNYWNoaW5lOjpjdGlfb3BfcmVzb2x2ZV93aXRoCiAgICAgVk1fVEhST1dfRVhDRVBU
SU9OXzIoKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfbmV3X2Z1bmNfZXhwKENU
SV9BUkdTKQorSlNPYmplY3QqIE1hY2hpbmU6OmN0aV9vcF9uZXdfZnVuY19leHAoQ1RJX0FSR1Mp
CiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIAogICAgIHJldHVybiBBUkdfZnVuY2V4cDEtPm1h
a2VGdW5jdGlvbihBUkdfY2FsbEZyYW1lLCBBUkdfY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwog
fQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9tb2QoQ1RJX0FSR1MpCitKU1ZhbHVlKiBN
YWNoaW5lOjpjdGlfb3BfbW9kKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAK
QEAgLTU0NDUsMjAgKzU0NDUsMjAgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfbW9kKENU
SV9BUkdTKQogICAgIGRvdWJsZSBkID0gZGl2aWRlbmRWYWx1ZS0+dG9OdW1iZXIoY2FsbEZyYW1l
KTsKICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGpzTnVtYmVyKEFSR19nbG9iYWxEYXRhLCBmbW9k
KGQsIGRpdmlzb3JWYWx1ZS0+dG9OdW1iZXIoY2FsbEZyYW1lKSkpOwogICAgIFZNX0NIRUNLX0VY
Q0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQu
cGF5bG9hZCgpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9sZXNzKENUSV9BUkdT
KQorSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX2xlc3MoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NU
QUNLX0hBQ0soKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsK
ICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IGpzQm9vbGVhbihqc0xlc3MoY2FsbEZyYW1lLCBBUkdf
c3JjMSwgQVJHX3NyYzIpKTsKICAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnBheWxvYWQoKTsKIH0KIAotSlNWYWx1
ZVB0ciBNYWNoaW5lOjpjdGlfb3BfbmVxKENUSV9BUkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3Rp
X29wX25lcShDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01NDcwLDcg
KzU0NzAsNyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9uZXEoQ1RJX0FSR1MpCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBBUkdfY2FsbEZyYW1lOwogICAgIEpTVmFsdWVQdHIgcmVz
dWx0ID0ganNCb29sZWFuKCFlcXVhbFNsb3dDYXNlSW5saW5lKGNhbGxGcmFtZSwgc3JjMSwgc3Jj
MikpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCiBWb2lkUHRyUGFpciBNYWNoaW5l
OjpjdGlfb3BfcG9zdF9kZWMoQ1RJX0FSR1MpCkBAIC01NDg4LDcgKzU0ODgsNyBAQCBWb2lkUHRy
UGFpciBNYWNoaW5lOjpjdGlfb3BfcG9zdF9kZWMoQ1RJCiAgICAgcmV0dXJuIHBhaXI7CiB9CiAK
LUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3Vyc2hpZnQoQ1RJX0FSR1MpCitKU1ZhbHVlKiBN
YWNoaW5lOjpjdGlfb3BfdXJzaGlmdChDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygp
OwogCkBAIC01NDk4LDE1ICs1NDk4LDE1IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3Vy
c2hpZnQoQ1RJX0EKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IEFSR19jYWxsRnJhbWU7CiAK
ICAgICBpZiAoSlNJbW1lZGlhdGU6OmFyZUJvdGhJbW1lZGlhdGVOdW1iZXJzKHZhbCwgc2hpZnQp
ICYmICFKU0ltbWVkaWF0ZTo6aXNOZWdhdGl2ZSh2YWwpKQotICAgICAgICByZXR1cm4gSlNJbW1l
ZGlhdGU6OnJpZ2h0U2hpZnRJbW1lZGlhdGVOdW1iZXJzKHZhbCwgc2hpZnQpOworICAgICAgICBy
ZXR1cm4gSlNJbW1lZGlhdGU6OnJpZ2h0U2hpZnRJbW1lZGlhdGVOdW1iZXJzKHZhbCwgc2hpZnQp
LnBheWxvYWQoKTsKICAgICBlbHNlIHsKICAgICAgICAgSlNWYWx1ZVB0ciByZXN1bHQgPSBqc051
bWJlcihBUkdfZ2xvYmFsRGF0YSwgKHZhbC0+dG9VSW50MzIoY2FsbEZyYW1lKSkgPj4gKHNoaWZ0
LT50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwogICAgICAgICBWTV9DSEVDS19FWENFUFRJ
T05fQVRfRU5EKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiByZXN1
bHQucGF5bG9hZCgpOwogICAgIH0KIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfYml0
eG9yKENUSV9BUkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX2JpdHhvcihDVElfQVJHUykK
IHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01NTE3LDE3ICs1NTE3LDE3IEBAIEpTVmFs
dWVQdHIgTWFjaGluZTo6Y3RpX29wX2JpdHhvcihDVElfQVIKIAogICAgIEpTVmFsdWVQdHIgcmVz
dWx0ID0ganNOdW1iZXIoQVJHX2dsb2JhbERhdGEsIHNyYzEtPnRvSW50MzIoY2FsbEZyYW1lKSBe
IHNyYzItPnRvSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VO
RCgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9
CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25ld19yZWdleHAoQ1RJX0FSR1MpCitKU09i
amVjdCogTWFjaGluZTo6Y3RpX29wX25ld19yZWdleHAoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NU
QUNLX0hBQ0soKTsKIAogICAgIHJldHVybiBuZXcgKEFSR19nbG9iYWxEYXRhKSBSZWdFeHBPYmpl
Y3QoQVJHX2NhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUo
KSwgQVJHX3JlZ2V4cDEpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9iaXRvcihD
VElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9iaXRvcihDVElfQVJHUykKIHsKICAg
ICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01NTM4LDEwICs1NTM4LDEwIEBAIEpTVmFsdWVQdHIg
TWFjaGluZTo6Y3RpX29wX2JpdG9yKENUSV9BUkcKIAogICAgIEpTVmFsdWVQdHIgcmVzdWx0ID0g
anNOdW1iZXIoQVJHX2dsb2JhbERhdGEsIHNyYzEtPnRvSW50MzIoY2FsbEZyYW1lKSB8IHNyYzIt
PnRvSW50MzIoY2FsbEZyYW1lKSk7CiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FUX0VORCgpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5wYXlsb2FkKCk7CiB9CiAKLUpT
VmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX2NhbGxfZXZhbChDVElfQVJHUykKK0pTVmFsdWUqIE1h
Y2hpbmU6OmN0aV9vcF9jYWxsX2V2YWwoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0so
KTsKIApAQCAtNTU2NSwxMyArNTU2NSwxMyBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9j
YWxsX2V2YWwoQ1RJCiAgICAgICAgICAgICBBUkdfZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gZXhj
ZXB0aW9uVmFsdWU7CiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT05fQVRfRU5EKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5w
YXlsb2FkKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppbXBvc3NpYmxlVmFs
dWUoKTsKKyAgICByZXR1cm4gSlNJbW1lZGlhdGU6OmltcG9zc2libGVWYWx1ZSgpLnBheWxvYWQo
KTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfdGhyb3coQ1RJX0FSR1MpCitKU1Zh
bHVlKiBNYWNoaW5lOjpjdGlfb3BfdGhyb3coQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hB
Q0soKTsKIApAQCAtNTU4OCwxNCArNTU4OCwxNCBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9v
cF90aHJvdyhDVElfQVJHCiAKICAgICBpZiAoIWhhbmRsZXJWUEMpIHsKICAgICAgICAgKkFSR19l
eGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKLSAgICAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjpu
dWxsSW1tZWRpYXRlKCk7CisgICAgICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6bnVsbEltbWVkaWF0
ZSgpLnBheWxvYWQoKTsKICAgICB9CiAKICAgICBBUkdfc2V0Q2FsbEZyYW1lKGNhbGxGcmFtZSk7
CiAgICAgdm9pZCogY2F0Y2hSb3V0aW5lID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmF0aXZl
RXhjZXB0aW9uQ29kZUZvckhhbmRsZXJWUEMoaGFuZGxlclZQQyk7CiAgICAgQVNTRVJUKGNhdGNo
Um91dGluZSk7CiAgICAgQ1RJX1NFVF9SRVRVUk5fQUREUkVTUyhjYXRjaFJvdXRpbmUpOwotICAg
IHJldHVybiBleGNlcHRpb25WYWx1ZTsKKyAgICByZXR1cm4gZXhjZXB0aW9uVmFsdWUucGF5bG9h
ZCgpOwogfQogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBNYWNoaW5lOjpjdGlfb3BfZ2V0X3Bu
YW1lcyhDVElfQVJHUykKQEAgLTU2MDUsNyArNTYwNSw3IEBAIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIE1hY2hpbmU6OmN0aV9vcF8KICAgICByZXR1cm4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
Y3JlYXRlKEFSR19jYWxsRnJhbWUsIEFSR19zcmMxKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5l
OjpjdGlfb3BfbmV4dF9wbmFtZShDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9u
ZXh0X3BuYW1lKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTU2MTMs
NyArNTYxMyw3IEBAIEpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25leHRfcG5hbWUoQ1QKICAg
ICBKU1ZhbHVlUHRyIHRlbXAgPSBpdC0+bmV4dChBUkdfY2FsbEZyYW1lKTsKICAgICBpZiAoIXRl
bXApCiAgICAgICAgIGl0LT5pbnZhbGlkYXRlKCk7Ci0gICAgcmV0dXJuIHRlbXA7CisgICAgcmV0
dXJuIHRlbXAucGF5bG9hZCgpOwogfQogCiB2b2lkIE1hY2hpbmU6OmN0aV9vcF9wdXNoX3Njb3Bl
KENUSV9BUkdTKQpAQCAtNTYzMiw1NyArNTYzMiw1NyBAQCB2b2lkIE1hY2hpbmU6OmN0aV9vcF9w
b3Bfc2NvcGUoQ1RJX0FSR1MpCiAgICAgQVJHX2NhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihBUkdf
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCktPnBvcCgpKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5l
OjpjdGlfb3BfdHlwZW9mKENUSV9BUkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX3R5cGVv
ZihDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCi0gICAgcmV0dXJuIGpzVHlw
ZVN0cmluZ0ZvclZhbHVlKEFSR19jYWxsRnJhbWUsIEFSR19zcmMxKTsKKyAgICByZXR1cm4ganNU
eXBlU3RyaW5nRm9yVmFsdWUoQVJHX2NhbGxGcmFtZSwgQVJHX3NyYzEpLnBheWxvYWQoKTsKIH0K
IAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfaXNfdW5kZWZpbmVkKENUSV9BUkdTKQorSlNW
YWx1ZSogTWFjaGluZTo6Y3RpX29wX2lzX3VuZGVmaW5lZChDVElfQVJHUykKIHsKICAgICBDVElf
U1RBQ0tfSEFDSygpOwogCiAgICAgSlNWYWx1ZVB0ciB2ID0gQVJHX3NyYzE7Ci0gICAgcmV0dXJu
IGpzQm9vbGVhbihKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodikgPyB2LT5pc1VuZGVmaW5lZCgp
IDogdi0+YXNDZWxsKCktPnN0cnVjdHVyZUlEKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4ganNCb29sZWFuKEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0
ZSh2KSA/IHYtPmlzVW5kZWZpbmVkKCkgOiB2LT5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKS0+dHlw
ZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpLnBheWxvYWQoKTsKIH0KIAotSlNWYWx1
ZVB0ciBNYWNoaW5lOjpjdGlfb3BfaXNfYm9vbGVhbihDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hp
bmU6OmN0aV9vcF9pc19ib29sZWFuKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7
CiAKLSAgICByZXR1cm4ganNCb29sZWFuKEFSR19zcmMxLT5pc0Jvb2xlYW4oKSk7CisgICAgcmV0
dXJuIGpzQm9vbGVhbihBUkdfc3JjMS0+aXNCb29sZWFuKCkpLnBheWxvYWQoKTsKIH0KIAotSlNW
YWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfaXNfbnVtYmVyKENUSV9BUkdTKQorSlNWYWx1ZSogTWFj
aGluZTo6Y3RpX29wX2lzX251bWJlcihDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygp
OwogCi0gICAgcmV0dXJuIGpzQm9vbGVhbihBUkdfc3JjMS0+aXNOdW1iZXIoKSk7CisgICAgcmV0
dXJuIGpzQm9vbGVhbihBUkdfc3JjMS0+aXNOdW1iZXIoKSkucGF5bG9hZCgpOwogfQogCi1KU1Zh
bHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9pc19zdHJpbmcoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNo
aW5lOjpjdGlfb3BfaXNfc3RyaW5nKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7
CiAKLSAgICByZXR1cm4ganNCb29sZWFuKEFSR19nbG9iYWxEYXRhLT5tYWNoaW5lLT5pc0pTU3Ry
aW5nKEFSR19zcmMxKSk7CisgICAgcmV0dXJuIGpzQm9vbGVhbihBUkdfZ2xvYmFsRGF0YS0+bWFj
aGluZS0+aXNKU1N0cmluZyhBUkdfc3JjMSkpLnBheWxvYWQoKTsKIH0KIAotSlNWYWx1ZVB0ciBN
YWNoaW5lOjpjdGlfb3BfaXNfb2JqZWN0KENUSV9BUkdTKQorSlNWYWx1ZSogTWFjaGluZTo6Y3Rp
X29wX2lzX29iamVjdChDVElfQVJHUykKIHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCi0gICAg
cmV0dXJuIGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShBUkdfc3JjMSkpOworICAgIHJldHVybiBq
c0Jvb2xlYW4oanNJc09iamVjdFR5cGUoQVJHX3NyYzEpKS5wYXlsb2FkKCk7CiB9CiAKLUpTVmFs
dWVQdHIgTWFjaGluZTo6Y3RpX29wX2lzX2Z1bmN0aW9uKENUSV9BUkdTKQorSlNWYWx1ZSogTWFj
aGluZTo6Y3RpX29wX2lzX2Z1bmN0aW9uKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNL
KCk7CiAKLSAgICByZXR1cm4ganNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoQVJHX3NyYzEpKTsK
KyAgICByZXR1cm4ganNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoQVJHX3NyYzEpKS5wYXlsb2Fk
KCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX3N0cmljdGVxKENUSV9BUkdTKQor
SlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX3N0cmljdGVxKENUSV9BUkdTKQogewogICAgIENUSV9T
VEFDS19IQUNLKCk7CiAKQEAgLTU2OTMsMTAgKzU2OTMsMTAgQEAgSlNWYWx1ZVB0ciBNYWNoaW5l
OjpjdGlfb3Bfc3RyaWN0ZXEoQ1RJXwogICAgIEFTU0VSVCghSlNJbW1lZGlhdGU6OmFyZUJvdGhJ
bW1lZGlhdGUoc3JjMSwgc3JjMikpOwogICAgIEFTU0VSVCghKEpTSW1tZWRpYXRlOjppc0VpdGhl
ckltbWVkaWF0ZShzcmMxLCBzcmMyKSAmIChzcmMxICE9IEpTSW1tZWRpYXRlOjp6ZXJvSW1tZWRp
YXRlKCkpICYgKHNyYzIgIT0gSlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSkpKTsKIAotICAg
IHJldHVybiBqc0Jvb2xlYW4oc3RyaWN0RXF1YWxTbG93Q2FzZUlubGluZShzcmMxLCBzcmMyKSk7
CisgICAgcmV0dXJuIGpzQm9vbGVhbihzdHJpY3RFcXVhbFNsb3dDYXNlSW5saW5lKHNyYzEsIHNy
YzIpKS5wYXlsb2FkKCk7CiB9CiAKLUpTVmFsdWVQdHIgTWFjaGluZTo6Y3RpX29wX25zdHJpY3Rl
cShDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9uc3RyaWN0ZXEoQ1RJX0FSR1Mp
CiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNTcwNywxMCArNTcwNywxMCBAQCBKU1Zh
bHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9uc3RyaWN0ZXEoQ1RJCiAgICAgQVNTRVJUKCFKU0ltbWVk
aWF0ZTo6YXJlQm90aEltbWVkaWF0ZShzcmMxLCBzcmMyKSk7CiAgICAgQVNTRVJUKCEoSlNJbW1l
ZGlhdGU6OmlzRWl0aGVySW1tZWRpYXRlKHNyYzEsIHNyYzIpICYgKHNyYzEgIT0gSlNJbW1lZGlh
dGU6Onplcm9JbW1lZGlhdGUoKSkgJiAoc3JjMiAhPSBKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0
ZSgpKSkpOwogICAgIAotICAgIHJldHVybiBqc0Jvb2xlYW4oIXN0cmljdEVxdWFsU2xvd0Nhc2VJ
bmxpbmUoc3JjMSwgc3JjMikpOworICAgIHJldHVybiBqc0Jvb2xlYW4oIXN0cmljdEVxdWFsU2xv
d0Nhc2VJbmxpbmUoc3JjMSwgc3JjMikpLnBheWxvYWQoKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNo
aW5lOjpjdGlfb3BfdG9fanNudW1iZXIoQ1RJX0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlf
b3BfdG9fanNudW1iZXIoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NUQUNLX0hBQ0soKTsKIApAQCAt
NTcxOSwxMCArNTcxOSwxMCBAQCBKU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF90b19qc251bWJl
cihDCiAKICAgICBKU1ZhbHVlUHRyIHJlc3VsdCA9IHNyYy0+dG9KU051bWJlcihjYWxsRnJhbWUp
OwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0
aV9vcF9pbihDVElfQVJHUykKK0pTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF9pbihDVElfQVJHUykK
IHsKICAgICBDVElfU1RBQ0tfSEFDSygpOwogCkBAIC01NzQzLDE0ICs1NzQzLDE0IEBAIEpTVmFs
dWVQdHIgTWFjaGluZTo6Y3RpX29wX2luKENUSV9BUkdTKQogCiAgICAgdWludDMyX3QgaTsKICAg
ICBpZiAocHJvcE5hbWUtPmdldFVJbnQzMihpKSkKLSAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihi
YXNlT2JqLT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGkpKTsKKyAgICAgICAgcmV0dXJuIGpzQm9v
bGVhbihiYXNlT2JqLT5oYXNQcm9wZXJ0eShjYWxsRnJhbWUsIGkpKS5wYXlsb2FkKCk7CiAKICAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGNhbGxGcmFtZSwgcHJvcE5hbWUtPnRvU3RyaW5nKGNhbGxG
cmFtZSkpOwogICAgIFZNX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIHJldHVybiBqc0Jvb2xlYW4o
YmFzZU9iai0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSkpOworICAgIHJldHVybiBq
c0Jvb2xlYW4oYmFzZU9iai0+aGFzUHJvcGVydHkoY2FsbEZyYW1lLCBwcm9wZXJ0eSkpLnBheWxv
YWQoKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfb3BfcHVzaF9uZXdfc2NvcGUoQ1RJ
X0FSR1MpCitKU09iamVjdCogTWFjaGluZTo6Y3RpX29wX3B1c2hfbmV3X3Njb3BlKENUSV9BUkdT
KQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CiAKQEAgLTU4NDAsNyArNTg0MCw3IEBAIHZvaWQq
IE1hY2hpbmU6OmN0aV9vcF9zd2l0Y2hfc3RyaW5nKENUSV8KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9kZWxfYnlfdmFsKENUSV9BUkdTKQorSlNW
YWx1ZSogTWFjaGluZTo6Y3RpX29wX2RlbF9ieV92YWwoQ1RJX0FSR1MpCiB7CiAgICAgQ1RJX1NU
QUNLX0hBQ0soKTsKIApAQCAtNTg2Miw3ICs1ODYyLDcgQEAgSlNWYWx1ZVB0ciBNYWNoaW5lOjpj
dGlfb3BfZGVsX2J5X3ZhbChDVAogICAgIH0KIAogICAgIFZNX0NIRUNLX0VYQ0VQVElPTl9BVF9F
TkQoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQucGF5bG9hZCgpOwog
fQogCiB2b2lkIE1hY2hpbmU6OmN0aV9vcF9wdXRfZ2V0dGVyKENUSV9BUkdTKQpAQCAtNTg5MSw3
ICs1ODkxLDcgQEAgdm9pZCBNYWNoaW5lOjpjdGlfb3BfcHV0X3NldHRlcihDVElfQVJHUwogICAg
IGJhc2VPYmotPmRlZmluZVNldHRlcihjYWxsRnJhbWUsIGlkZW50LCBhc09iamVjdChBUkdfc3Jj
MykpOwogfQogCi1KU1ZhbHVlUHRyIE1hY2hpbmU6OmN0aV9vcF9uZXdfZXJyb3IoQ1RJX0FSR1Mp
CitKU09iamVjdCogTWFjaGluZTo6Y3RpX29wX25ld19lcnJvcihDVElfQVJHUykKIHsKICAgICBD
VElfU1RBQ0tfSEFDSygpOwogCkBAIC01OTE3LDcgKzU5MTcsNyBAQCB2b2lkIE1hY2hpbmU6OmN0
aV9vcF9kZWJ1ZyhDVElfQVJHUykKICAgICBBUkdfZ2xvYmFsRGF0YS0+bWFjaGluZS0+ZGVidWco
Y2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKIH0KIAotSlNWYWx1ZVB0ciBNYWNoaW5lOjpjdGlfdm1fdGhyb3coQ1RJ
X0FSR1MpCitKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfdm1fdGhyb3coQ1RJX0FSR1MpCiB7CiAgICAg
Q1RJX1NUQUNLX0hBQ0soKTsKIApAQCAtNTkzNSwxNCArNTkzNSwxNCBAQCBKU1ZhbHVlUHRyIE1h
Y2hpbmU6OmN0aV92bV90aHJvdyhDVElfQVJHCiAKICAgICBpZiAoIWhhbmRsZXJWUEMpIHsKICAg
ICAgICAgKkFSR19leGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKLSAgICAgICAgcmV0dXJuIEpT
SW1tZWRpYXRlOjpudWxsSW1tZWRpYXRlKCk7CisgICAgICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6
bnVsbEltbWVkaWF0ZSgpLnBheWxvYWQoKTsKICAgICB9CiAKICAgICBBUkdfc2V0Q2FsbEZyYW1l
KGNhbGxGcmFtZSk7CiAgICAgdm9pZCogY2F0Y2hSb3V0aW5lID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+bmF0aXZlRXhjZXB0aW9uQ29kZUZvckhhbmRsZXJWUEMoaGFuZGxlclZQQyk7CiAgICAg
QVNTRVJUKGNhdGNoUm91dGluZSk7CiAgICAgQ1RJX1NFVF9SRVRVUk5fQUREUkVTUyhjYXRjaFJv
dXRpbmUpOwotICAgIHJldHVybiBleGNlcHRpb25WYWx1ZTsKKyAgICByZXR1cm4gZXhjZXB0aW9u
VmFsdWUucGF5bG9hZCgpOwogfQogCiAjdW5kZWYgQ1RJX1JFVFVSTl9BRERSRVNTCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
Vk0vTWFjaGluZS5oCShyZXZpc2lvbiAzNzcyMCkKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDEwNSArMTY0LDEwNSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX3RpbWVvdXRfY2hlY2soQ1RJX0FS
R1MpOwogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfcmVnaXN0ZXJfZmlsZV9jaGVj
ayhDVElfQVJHUyk7CiAKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29w
X2NvbnZlcnRfdGhpcyhDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU09iamVjdCogU0ZYX0NB
TEwgY3RpX29wX2NvbnZlcnRfdGhpcyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNG
WF9DQUxMIGN0aV9vcF9lbmQoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBT
RlhfQ0FMTCBjdGlfb3BfYWRkKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIg
U0ZYX0NBTEwgY3RpX29wX3ByZV9pbmMoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1
ZSogU0ZYX0NBTEwgY3RpX29wX2FkZChDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVl
KiBTRlhfQ0FMTCBjdGlfb3BfcHJlX2luYyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBpbnQg
U0ZYX0NBTEwgY3RpX29wX2xvb3BfaWZfbGVzcyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBp
bnQgU0ZYX0NBTEwgY3RpX29wX2xvb3BfaWZfbGVzc2VxKENUSV9BUkdTKTsKLSAgICAgICAgc3Rh
dGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX25ld19vYmplY3QoQ1RJX0FSR1MpOworICAg
ICAgICBzdGF0aWMgSlNPYmplY3QqIFNGWF9DQUxMIGN0aV9vcF9uZXdfb2JqZWN0KENUSV9BUkdT
KTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3B1dF9ieV9pZChDVElfQVJH
Uyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9wdXRfYnlfaWRfc2Vjb25k
KENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3B1dF9ieV9p
ZF9nZW5lcmljKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29w
X3B1dF9ieV9pZF9mYWlsKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZY
X0NBTEwgY3RpX29wX2dldF9ieV9pZChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVl
UHRyIFNGWF9DQUxMIGN0aV9vcF9nZXRfYnlfaWRfc2Vjb25kKENUSV9BUkdTKTsKLSAgICAgICAg
c3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX2dldF9ieV9pZF9nZW5lcmljKENUSV9B
UkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX2dldF9ieV9p
ZF9mYWlsKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3Rp
X29wX2RlbF9ieV9pZChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9D
QUxMIGN0aV9vcF9pbnN0YW5jZW9mKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQ
dHIgU0ZYX0NBTEwgY3RpX29wX211bChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVl
UHRyIFNGWF9DQUxMIGN0aV9vcF9uZXdfZnVuYyhDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBK
U1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfZ2V0X2J5X2lkKENUSV9BUkdTKTsKKyAgICAgICAgc3Rh
dGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9nZXRfYnlfaWRfc2Vjb25kKENUSV9BUkdTKTsK
KyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJp
YyhDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfZ2V0
X2J5X2lkX2ZhaWwoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwg
Y3RpX29wX2RlbF9ieV9pZChDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhf
Q0FMTCBjdGlfb3BfaW5zdGFuY2VvZihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVl
KiBTRlhfQ0FMTCBjdGlfb3BfbXVsKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTT2JqZWN0
KiBTRlhfQ0FMTCBjdGlfb3BfbmV3X2Z1bmMoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgVm9p
ZFB0clBhaXIgU0ZYX0NBTEwgY3RpX29wX2NhbGxfSlNGdW5jdGlvbihDVElfQVJHUyk7Ci0gICAg
ICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9jYWxsX05vdEpTRnVuY3Rpb24o
Q1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2NhbGxf
Tm90SlNGdW5jdGlvbihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0
aV9vcF9jcmVhdGVfYXJndW1lbnRzKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZY
X0NBTEwgY3RpX29wX2NyZWF0ZV9hcmd1bWVudHNfbm9fcGFyYW1zKENUSV9BUkdTKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oQ1RJX0FS
R1MpOwogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3BfdGVhcl9vZmZfYXJndW1l
bnRzKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3JldF9z
Y29wZUNoYWluKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwg
Y3RpX29wX25ld19hcnJheShDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNG
WF9DQUxMIGN0aV9vcF9yZXNvbHZlKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQ
dHIgU0ZYX0NBTEwgY3RpX29wX3Jlc29sdmVfZ2xvYmFsKENUSV9BUkdTKTsKLSAgICAgICAgc3Rh
dGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX2NvbnN0cnVjdF9KU0NvbnN0cnVjdEZhc3Qo
Q1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNPYmplY3QqIFNGWF9DQUxMIGN0aV9vcF9uZXdf
YXJyYXkoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29w
X3Jlc29sdmUoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3Rp
X29wX3Jlc29sdmVfZ2xvYmFsKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBT
RlhfQ0FMTCBjdGlfb3BfY29uc3RydWN0X0pTQ29uc3RydWN0RmFzdChDVElfQVJHUyk7CiAgICAg
ICAgIHN0YXRpYyBWb2lkUHRyUGFpciBTRlhfQ0FMTCBjdGlfb3BfY29uc3RydWN0X0pTQ29uc3Ry
dWN0KENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29w
X2NvbnN0cnVjdF9Ob3RKU0NvbnN0cnVjdChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1Zh
bHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9nZXRfYnlfdmFsKENUSV9BUkdTKTsKKyAgICAgICAgc3Rh
dGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoQ1RJ
X0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2dldF9ieV92
YWwoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgVm9pZFB0clBhaXIgU0ZYX0NBTEwgY3RpX29w
X3Jlc29sdmVfZnVuYyhDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9D
QUxMIGN0aV9vcF9zdWIoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NB
TEwgY3RpX29wX3N1YihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0
aV9vcF9wdXRfYnlfdmFsKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwg
Y3RpX29wX3B1dF9ieV92YWxfYXJyYXkoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1
ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfbGVzc2VxKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpT
VmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9sZXNzZXEoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMg
aW50IFNGWF9DQUxMIGN0aV9vcF9sb29wX2lmX3RydWUoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0
aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfcmVzb2x2ZV9iYXNlKENUSV9BUkdTKTsKLSAg
ICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX25lZ2F0ZShDVElfQVJHUyk7
Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9yZXNvbHZlX3NraXAo
Q1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfZGl2
KENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX3By
ZV9kZWMoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29w
X3Jlc29sdmVfYmFzZShDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FM
TCBjdGlfb3BfbmVnYXRlKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9D
QUxMIGN0aV9vcF9yZXNvbHZlX3NraXAoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1
ZSogU0ZYX0NBTEwgY3RpX29wX2RpdihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVl
KiBTRlhfQ0FMTCBjdGlfb3BfcHJlX2RlYyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBpbnQg
U0ZYX0NBTEwgY3RpX29wX2psZXNzKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQ
dHIgU0ZYX0NBTEwgY3RpX29wX25vdChDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVl
KiBTRlhfQ0FMTCBjdGlfb3Bfbm90KENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIGludCBTRlhf
Q0FMTCBjdGlfb3BfanRydWUoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgVm9pZFB0clBhaXIg
U0ZYX0NBTEwgY3RpX29wX3Bvc3RfaW5jKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFs
dWVQdHIgU0ZYX0NBTEwgY3RpX29wX2VxKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFs
dWVQdHIgU0ZYX0NBTEwgY3RpX29wX2xzaGlmdChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBK
U1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9iaXRhbmQoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0
aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfcnNoaWZ0KENUSV9BUkdTKTsKLSAgICAgICAg
c3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX2JpdG5vdChDVElfQVJHUyk7CisgICAg
ICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfZXEoQ1RJX0FSR1MpOworICAgICAg
ICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2xzaGlmdChDVElfQVJHUyk7CisgICAg
ICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfYml0YW5kKENUSV9BUkdTKTsKKyAg
ICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9yc2hpZnQoQ1RJX0FSR1MpOwor
ICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2JpdG5vdChDVElfQVJHUyk7
CiAgICAgICAgIHN0YXRpYyBWb2lkUHRyUGFpciBTRlhfQ0FMTCBjdGlfb3BfcmVzb2x2ZV93aXRo
X2Jhc2UoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlf
b3BfbmV3X2Z1bmNfZXhwKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZY
X0NBTEwgY3RpX29wX21vZChDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNG
WF9DQUxMIGN0aV9vcF9sZXNzKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIg
U0ZYX0NBTEwgY3RpX29wX25lcShDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU09iamVjdCog
U0ZYX0NBTEwgY3RpX29wX25ld19mdW5jX2V4cChDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBK
U1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfbW9kKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpT
VmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9sZXNzKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpT
VmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9uZXEoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgVm9p
ZFB0clBhaXIgU0ZYX0NBTEwgY3RpX29wX3Bvc3RfZGVjKENUSV9BUkdTKTsKLSAgICAgICAgc3Rh
dGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX3Vyc2hpZnQoQ1RJX0FSR1MpOwotICAgICAg
ICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfYml0eG9yKENUSV9BUkdTKTsKLSAg
ICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX25ld19yZWdleHAoQ1RJX0FS
R1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfYml0b3IoQ1RJ
X0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfY2FsbF9l
dmFsKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29w
X3Rocm93KENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9v
cF91cnNoaWZ0KENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0
aV9vcF9iaXR4b3IoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNPYmplY3QqIFNGWF9DQUxM
IGN0aV9vcF9uZXdfcmVnZXhwKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNG
WF9DQUxMIGN0aV9vcF9iaXRvcihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBT
RlhfQ0FMTCBjdGlfb3BfY2FsbF9ldmFsKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFs
dWUqIFNGWF9DQUxMIGN0aV9vcF90aHJvdyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKiBTRlhfQ0FMTCBjdGlfb3BfZ2V0X3BuYW1lcyhDVElfQVJHUyk7
Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9uZXh0X3BuYW1lKENU
SV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9uZXh0X3Bu
YW1lKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3B1c2hf
c2NvcGUoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3BfcG9w
X3Njb3BlKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3Rp
X29wX3R5cGVvZihDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxM
IGN0aV9vcF9pc191bmRlZmluZWQoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0
ciBTRlhfQ0FMTCBjdGlfb3BfaXNfYm9vbGVhbihDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBK
U1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9pc19udW1iZXIoQ1RJX0FSR1MpOwotICAgICAgICBz
dGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfaXNfc3RyaW5nKENUSV9BUkdTKTsKLSAg
ICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29wX2lzX29iamVjdChDVElfQVJH
Uyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9pc19mdW5jdGlv
bihDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0aV9vcF9z
dHJpY3RlcShDVElfQVJHUyk7Ci0gICAgICAgIHN0YXRpYyBKU1ZhbHVlUHRyIFNGWF9DQUxMIGN0
aV9vcF9uc3RyaWN0ZXEoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhf
Q0FMTCBjdGlfb3BfdG9fanNudW1iZXIoQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1
ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfaW4oQ1RJX0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1
ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfcHVzaF9uZXdfc2NvcGUoQ1RJX0FSR1MpOworICAgICAgICBz
dGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX3R5cGVvZihDVElfQVJHUyk7CisgICAgICAg
IHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfaXNfdW5kZWZpbmVkKENUSV9BUkdTKTsK
KyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9pc19ib29sZWFuKENUSV9B
UkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9pc19udW1iZXIo
Q1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2lzX3N0
cmluZyhDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3Bf
aXNfb2JqZWN0KENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0
aV9vcF9pc19mdW5jdGlvbihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhf
Q0FMTCBjdGlfb3Bfc3RyaWN0ZXEoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSog
U0ZYX0NBTEwgY3RpX29wX25zdHJpY3RlcShDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBKU1Zh
bHVlKiBTRlhfQ0FMTCBjdGlfb3BfdG9fanNudW1iZXIoQ1RJX0FSR1MpOworICAgICAgICBzdGF0
aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2luKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGlj
IEpTT2JqZWN0KiBTRlhfQ0FMTCBjdGlfb3BfcHVzaF9uZXdfc2NvcGUoQ1RJX0FSR1MpOwogICAg
ICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3Bfam1wX3Njb3BlcyhDVElfQVJHUyk7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9wdXRfYnlfaW5kZXgoQ1RJX0FSR1Mp
OwogICAgICAgICBzdGF0aWMgdm9pZCogU0ZYX0NBTEwgY3RpX29wX3N3aXRjaF9pbW0oQ1RJX0FS
R1MpOwogICAgICAgICBzdGF0aWMgdm9pZCogU0ZYX0NBTEwgY3RpX29wX3N3aXRjaF9jaGFyKENU
SV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxMIGN0aV9vcF9zd2l0Y2hfc3Ry
aW5nKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQdHIgU0ZYX0NBTEwgY3RpX29w
X2RlbF9ieV92YWwoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwg
Y3RpX29wX2RlbF9ieV92YWwoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FM
TCBjdGlfb3BfcHV0X2dldHRlcihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9D
QUxMIGN0aV9vcF9wdXRfc2V0dGVyKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWVQ
dHIgU0ZYX0NBTEwgY3RpX29wX25ld19lcnJvcihDVElfQVJHUyk7CisgICAgICAgIHN0YXRpYyBK
U09iamVjdCogU0ZYX0NBTEwgY3RpX29wX25ld19lcnJvcihDVElfQVJHUyk7CiAgICAgICAgIHN0
YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9kZWJ1ZyhDVElfQVJHUyk7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX2NhbGxfcHJvZmlsZXIoQ1RJX0FSR1MpOwogICAgICAg
ICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlfb3BfcmV0X3Byb2ZpbGVyKENUSV9BUkdTKTsKIAot
ICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfdm1fdGhyb3coQ1RJX0FSR1Mp
OworICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX3ZtX3Rocm93KENUSV9BUkdT
KTsKICAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxMIGN0aV92bV9jb21waWxlKENUSV9BUkdT
KTsKICAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxMIGN0aV92bV9sYXp5TGlua0NhbGwoQ1RJ
X0FSR1MpOwotICAgICAgICBzdGF0aWMgSlNWYWx1ZVB0ciBTRlhfQ0FMTCBjdGlfb3BfcHVzaF9h
Y3RpdmF0aW9uKENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIEpTT2JqZWN0KiBTRlhfQ0FMTCBj
dGlfb3BfcHVzaF9hY3RpdmF0aW9uKENUSV9BUkdTKTsKICAgICAgICAgCiAjZW5kaWYgLy8gRU5B
QkxFKENUSSkKIAo=
</data>
<flag name="review"
          id="11169"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>