<?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>68656</bug_id>
          
          <creation_ts>2011-09-22 13:59:14 -0700</creation_ts>
          <short_desc>[ES5] instanceof should not get the prototype for non-default HasInstance</short_desc>
          <delta_ts>2012-09-21 17:44:41 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>cmarcelo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471849</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-22 13:59:14 -0700</bug_when>
    <thetext>See failing test case (to be added in bug#26382) in LayoutTests/fast/js/function-bind.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725986</commentid>
    <comment_count>1</comment_count>
      <attachid>165230</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-21 17:04:27 -0700</bug_when>
    <thetext>Created attachment 165230
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726001</commentid>
    <comment_count>2</comment_count>
      <attachid>165230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 17:32:52 -0700</bug_when>
    <thetext>Comment on attachment 165230
fix

Attachment 165230 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13952809</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726006</commentid>
    <comment_count>3</comment_count>
      <attachid>165230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 17:37:50 -0700</bug_when>
    <thetext>Comment on attachment 165230
fix

Attachment 165230 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13975558</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726008</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-21 17:44:41 -0700</bug_when>
    <thetext>Fixed in r129281</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165230</attachid>
            <date>2012-09-21 17:04:27 -0700</date>
            <delta_ts>2012-09-21 17:37:50 -0700</delta_ts>
            <desc>fix</desc>
            <filename>68656.patch</filename>
            <type>text/plain</type>
            <size>42256</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Mjc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBA
QAorMjAxMi0wOS0yMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CisKKyAgICAgICAgaW5zdGFuY2VvZiBzaG91bGQgbm90IGdldCB0aGUgcHJvdG90eXBlIGZvciBu
b24tZGVmYXVsdCBIYXNJbnN0YW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njg2NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnN0YW5jZW9mIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBhIHNl
cXVhbmNlIG9mIHRocmVlIG9wY29kZXM6CisgICAgICAgICAgICBjaGVja19oYXNfaW5zdGFuY2UK
KyAgICAgICAgICAgIGdldF9ieV9pZChwcm90b3R5cGUpCisgICAgICAgICAgICBvcF9pbnN0YW5j
ZW9mCisgICAgICAgIFRoZXJlIGFyZSB0aHJlZSBpbnRlcmVzdGluZyB0eXBlcyBvZiBiYXNlIHZh
bHVlIHRoYXQgaW5zdGFuY2VvZiBjYW4gYmUgYXBwbGllZCB0bzoKKyAgICAgICAgICAgIChBKSBP
YmplY3RzIHN1cHBvcnRpbmcgZGVmYXVsdCBpbnN0YW5jZW9mIGJlaGF2aW91ciAoZnVuY3Rpb25z
LCBvdGhlciB0aGFuIHRob3NlIGNyZWF0ZWQgd2l0aCBiaW5kKQorICAgICAgICAgICAgKEIpIE9i
amVjdHMgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBpbnN0YW5jZWNvZiBiZWhhdmlvdXIgd2l0aCBh
IGN1c3RvbSBvbmUgKEFQSSBvYmplY3RzLCBib3VuZCBmdW5jdGlvbnMpCisgICAgICAgICAgICAo
QykgVmFsdWVzIHRoYXQgZG8gbm90IHJlc3BvbmQgdG8gdGhlIFtbSGFzSW5zdGFuY2VdXSB0cmFw
LgorICAgICAgICBDdXJyZW50bHkgY2hlY2tfaGFzX2luc3RhbmNlIGhhbmRsZXMgY2FzZSAoQyks
IGxlYXZpbmcgdGhlIG9wX2luc3RhbmNlb2Ygb3Bjb2RlIHRvIGhhbmRsZSAoQSkgJiAoQikuIFRo
ZXJlIGFyZQorICAgICAgICB0d28gcHJvYmxlbXMgd2l0aCB0aGlzIGFwcG9yYWNoLiBGaXJzdGx5
LCB0aGlzIGlzIHN1Ym9wdGltYWwgZm9yIGNhc2UgKEEpLCBzaW5jZSB3ZSBoYXZlIHRvIGNoZWNr
IGZvcgorICAgICAgICBoYXNJbnN0YW5jZSBzdXBwb3J0IHR3aWNlIChvbmNlIGluIGNoZWNrX2hh
c19pbnN0YW5jZSwgdGhlbiBmb3IgZGVmYXVsdCBiZWhhdmlvdXIgaW4gb3BfaW5zdGFuY2VvZiku
IFNlY29uZGx5LAorICAgICAgICB0aGlzIG1lYW5zIHRoYXQgaW4gY2FzZXMgKEIpIHdlIGFsc28g
cGVyZm9ybSB0aGUgZ2V0X2J5X2lkLCB3aGljaCBpcyBib3RoIHN1Ym9wdGltYWwgYW5kIGFuIG9i
c2VydmFibGUgc3BlYworICAgICAgICB2aW9sYXRpb24uCisKKyAgICAgICAgVGhlIGZpeCBoZXJl
IGlzIHRvIG1vdmUgaGFuZGluZyBvZiBub24tZGVmYXVsdCBpbnN0YW5jZW9mIChjYXNlcyAoQikp
IHRvIHRoZSBjaGVja19oYXNfaW5zdGFuY2Ugb3AsIGxlYXZpbmcKKyAgICAgICAgb3BfaW5zdGFu
Y2VvZiB0byBoYW5kbGUgb25seSBjYXNlcyAoQSkuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a09iamVjdC5oOgorICAgICAgICAoSlNDYWxsYmFja09iamVjdCk6CisgICAgICAgICogQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6OjpjdXN0b21IYXNJbnN0
YW5jZSk6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUlz
SW5zdGFuY2VPZkNvbnN0cnVjdG9yKToKKyAgICAgICAgICAgIC0gcmVuYW1lZCBoYXNJbnN0YW5j
ZSB0byBjdXN0b21IYXNJbnN0YW5jZQorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICAgICAtIGFkZGVkIGFk
ZGl0aW9uYWwgcGFyYW1ldGVycyB0byBjaGVja19oYXNfaW5zdGFuY2Ugb3Bjb2RlCisgICAgICAg
ICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRP
cGNvZGVOYW1lKToKKyAgICAgICAgICAgIC0gYWRkZWQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRv
IGNoZWNrX2hhc19pbnN0YW5jZSBvcGNvZGUKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENo
ZWNrSGFzSW5zdGFuY2UpOgorICAgICAgICAgICAgLSBhZGRlZCBhZGRpdGlvbmFsIHBhcmFtZXRl
cnMgdG8gY2hlY2tfaGFzX2luc3RhbmNlIG9wY29kZQorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAg
ICAgICAgLSBhZGRlZCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gY2hlY2tfaGFzX2luc3RhbmNl
IG9wY29kZQorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAg
ICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgICAgIC0gYWRk
ZWQgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIGNoZWNrX2hhc19pbnN0YW5jZSBvcGNvZGUKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgICAgIC0gYWRkZWQgYWRkaXRpb25h
bCBwYXJhbWV0ZXJzIHRvIGNoZWNrX2hhc19pbnN0YW5jZSBvcGNvZGUKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmlzSW52YWxpZFBhcmFtRm9y
SW4pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAg
ICAgICAgLSBBZGQgaGFuZGxpbmcgZm9yIG5vbi1kZWZhdWx0IGluc3RhbmNlb2YgdG8gb3BfY2hl
Y2tfaGFzX2luc3RhbmNlCisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleCk6Cisg
ICAgICAgICAgICAtIEZpeGVkIG5vLUxMSW50IG5vX0RGRyBidWlsZAorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2luc3RhbmNl
KToKKyAgICAgICAgICAgIC0gY2hlY2sgZm9yIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Us
IGhhbmRsZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBvcF9jaGVja19oYXNfaW5zdGFuY2UuCisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgICAgIC0gbm8gbmVlZCB0byBjaGVj
ayBmb3IgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZS4KKyAgICAgICAgKiBqaXQvSklUT3Bj
b2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2luc3RhbmNl
KToKKyAgICAgICAgICAgIC0gY2hlY2sgZm9yIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Us
IGhhbmRsZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBvcF9jaGVja19oYXNfaW5zdGFuY2UuCisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAgICAgIC0gbm8gbmVlZCB0byBjaGVj
ayBmb3IgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZS4KKyAgICAgICAgKiBqaXQvSklUU3R1
YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICog
aml0L0pJVFN0dWJzLmg6CisgICAgICAgICAgICAtIEFkZCBoYW5kbGluZyBmb3Igbm9uLWRlZmF1
bHQgaW5zdGFuY2VvZiB0byBvcF9jaGVja19oYXNfaW5zdGFuY2UKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAgICAgLSBt
b3ZlIGNoZWNrIGZvciBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCBoYW5kbGUgYWRkaXRp
b25hbCBhcmd1bWVudHMgdG8gb3BfY2hlY2tfaGFzX2luc3RhbmNlLgorICAgICAgICAqIHJ1bnRp
bWUvQ2xhc3NJbmZvLmg6CisgICAgICAgIChNZXRob2RUYWJsZSk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAgICAgLSByZW5hbWVkIGhhc0luc3RhbmNlIHRvIGN1c3RvbUhhc0luc3RhbmNlCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKENvbW1vblNsb3dQ
YXRocyk6CisgICAgICAgICAgICAtIHJlbW92ZWQgb3BJbnN0YW5jZU9mU2xvdyAodGhpcyB3YXMg
d2hpdHRsZWQgZG93biB0byBvbmUgZnVuY3Rpb24gY2FsbCEpCisgICAgICAgICogcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0JvdW5kRnVuY3Rpb246OmN1c3Rv
bUhhc0luc3RhbmNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oOgorICAg
ICAgICAoSlNCb3VuZEZ1bmN0aW9uKToKKyAgICAgICAgICAgIC0gcmVuYW1lZCBoYXNJbnN0YW5j
ZSB0byBjdXN0b21IYXNJbnN0YW5jZSwgcmVpbXBsZW1lbnRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y3VzdG9tSGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFu
Y2UpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRIYXNJ
bnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNPYmpl
Y3QpOgorCiAyMDEyLTA5LTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IEFSTSBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTg2LDcgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgZGVsZXRlUHJvcGVy
dHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQpOwogCi0g
ICAgc3RhdGljIGJvb2wgaGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBKU1ZhbHVlIHByb3RvKTsKKyAgICBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9u
SW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMTI5MTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw3ICszODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci1ib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlKQorYm9vbCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29udGV4
dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBA
QCBib29sIEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAgSlNPYmplY3Qq
IGpzQ29uc3RydWN0b3IgPSB0b0pTKGNvbnN0cnVjdG9yKTsKICAgICBpZiAoIWpzQ29uc3RydWN0
b3ItPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5tZXRo
b2RUYWJsZSgpLT5oYXNJbnN0YW5jZShqc0NvbnN0cnVjdG9yLCBleGVjLCBqc1ZhbHVlLCBqc0Nv
bnN0cnVjdG9yLT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOyAv
LyBmYWxzZSBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duCisgICAgYm9vbCByZXN1bHQgPSBqc0Nv
bnN0cnVjdG9yLT5oYXNJbnN0YW5jZShleGVjLCBqc1ZhbHVlKTsgLy8gZmFsc2UgaWYgYW4gZXhj
ZXB0aW9uIGlzIHRocm93bgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAg
ICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4
ZWMtPmV4Y2VwdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODczLDggKzg3Mywx
MSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZTog
ewotICAgICAgICAgICAgaW50IGJhc2UgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGRhdGFMb2coIlslNGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXMiLCBsb2NhdGlvbiwgcmVn
aXN0ZXJOYW1lKGV4ZWMsIGJhc2UpLmRhdGEoKSk7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBj
aGVja19oYXNfaW5zdGFuY2VcdFx0ICVzLCAlcywgJXMsICVkKC0+JWQpIiwgbG9jYXRpb24sIHJl
Z2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfYml0eG9yLCA1KSBcCiAgICAgICAg
IG1hY3JvKG9wX2JpdG9yLCA1KSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8ob3BfY2hlY2tf
aGFzX2luc3RhbmNlLCAyKSBcCisgICAgICAgIG1hY3JvKG9wX2NoZWNrX2hhc19pbnN0YW5jZSwg
NSkgXAogICAgICAgICBtYWNybyhvcF9pbnN0YW5jZW9mLCA1KSBcCiAgICAgICAgIG1hY3JvKG9w
X3R5cGVvZiwgMykgXAogICAgICAgICBtYWNybyhvcF9pc191bmRlZmluZWQsIDMpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ1NywxMCArMTQ1NywxNCBAQCBSZXNvbHZlUmVzdWx0IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNv
bHZlCiAgICAgcmV0dXJuIFJlc29sdmVSZXN1bHQ6OmR5bmFtaWNSZXNvbHZlKHNjb3BlRGVwdGgo
KSk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja0hhc0luc3RhbmNlKFJl
Z2lzdGVySUQqIGJhc2UpCi17IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrSGFz
SW5zdGFuY2UoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCog
YmFzZSwgTGFiZWwqIHRhcmdldCkKK3sKKyAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMo
KS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9jaGVja19oYXNfaW5zdGFuY2UpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh2YWx1ZS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGlu
c3RydWN0aW9ucygpLnNpemUoKSkpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdEluc3RhbmNlT2YoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYmFzZVByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDcgKzQ1NSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UG9zdEluYyhSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyY0RzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
b3N0RGVjKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogc3JjRHN0KTsKIAotICAgICAgICB2
b2lkIGVtaXRDaGVja0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICB2b2lk
IGVtaXRDaGVja0hhc0luc3RhbmNlKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUs
IFJlZ2lzdGVySUQqIGJhc2UsIExhYmVsKiB0YXJnZXQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0SW5zdGFuY2VPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFR5cGVPZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4g
ZW1pdFVuYXJ5T3Aob3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEluKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IGJhc2UpIHsgcmV0dXJuIGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwg
T3BlcmFuZFR5cGVzKCkpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwODgsMTUgKzEwODgsMjAgQEAgUmVnaXN0ZXJJRCogSW5zdGFuY2VPZk5vZGU6
OmVtaXRCeXRlY29kZQogewogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMxID0gZ2VuZXJhdG9y
LmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9leHByMi0+aXNQdXJlKGdlbmVyYXRvcikpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMy
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm90b3R5cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGRzdFJlZyA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMS5nZXQoKSk7
CisgICAgUmVmUHRyPExhYmVsPiB0YXJnZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5k
T2Zmc2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tIYXNJbnN0YW5jZShzcmMyLmdldCgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdENoZWNrSGFzSW5zdGFuY2UoZHN0UmVnLmdldCgpLCBzcmMx
LmdldCgpLCBzcmMyLmdldCgpLCB0YXJnZXQuZ2V0KCkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7Ci0gICAg
UmVnaXN0ZXJJRCogc3JjMlByb3RvdHlwZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNyYzIuZ2V0KCksIGdlbmVyYXRvci5nbG9iYWxEYXRhKCktPnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CisgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3Rv
dHlwZS5nZXQoKSwgc3JjMi5nZXQoKSwgZ2VuZXJhdG9yLmdsb2JhbERhdGEoKS0+cHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwotICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEluc3RhbmNlT2YoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBzcmMxLmdldCgp
KSwgc3JjMS5nZXQoKSwgc3JjMi5nZXQoKSwgc3JjMlByb3RvdHlwZSk7CisgICAgUmVnaXN0ZXJJ
RCogcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRJbnN0YW5jZU9mKGRzdFJlZy5nZXQoKSwgc3JjMS5n
ZXQoKSwgc3JjMi5nZXQoKSwgcHJvdG90eXBlLmdldCgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKHRhcmdldC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2ljYWxPcE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQ5LDcgKzIwNDks
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZToKLSAgICAgICAgICAgIGFkZFRv
R3JhcGgoQ2hlY2tIYXNJbnN0YW5jZSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tIYXNJbnN0YW5jZSwgZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NoZWNrX2hhc19pbnN0YW5jZSk7CiAKICAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxNCArMTMxLDYgQEAg
c3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzSW52YWxpZFBhcmFtRgogICAgIGV4Y2VwdGlvbkRh
dGEgPSBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihjYWxsRnJhbWUsICJpbiIgLCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9Ci0KLXN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc0ludmFsaWRQ
YXJhbUZvckluc3RhbmNlT2YoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUsIEpT
VmFsdWUmIGV4Y2VwdGlvbkRhdGEpCi17Ci0gICAgaWYgKHZhbHVlLmlzT2JqZWN0KCkgJiYgYXNP
YmplY3QodmFsdWUpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGV4Y2VwdGlvbkRhdGEgPSBjcmVhdGVJ
bnZhbGlkUGFyYW1FcnJvcihjYWxsRnJhbWUsICJpbnN0YW5jZW9mIiAsIHZhbHVlKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KICNlbmRpZgogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCkBAIC0yNDAxLDE0ICsyMzkzLDMyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVF
eGVjdXRlKEV4ZWMKICAgICAgICAgICAgSlNDIEFQSSopLiBSYWlzZXMgYW4gZXhjZXB0aW9uIGlm
IHJlZ2lzdGVyIGNvbnN0cnVjdG9yIGlzIG5vdAogICAgICAgICAgICBhbiB2YWxpZCBwYXJhbWV0
ZXIgZm9yIGluc3RhbmNlb2YuCiAgICAgICAgICovCi0gICAgICAgIGludCBiYXNlID0gdlBDWzFd
LnUub3BlcmFuZDsKKyAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CisgICAgICAg
IGludCB2YWx1ZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gdlBDWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgaW50IHRhcmdldCA9IHZQQ1s0XS51Lm9wZXJhbmQ7CisKICAg
ICAgICAgSlNWYWx1ZSBiYXNlVmFsID0gY2FsbEZyYW1lLT5yKGJhc2UpLmpzVmFsdWUoKTsKIAot
ICAgICAgICBpZiAoaXNJbnZhbGlkUGFyYW1Gb3JJbnN0YW5jZU9mKGNhbGxGcmFtZSwgYmFzZVZh
bCwgZXhjZXB0aW9uVmFsdWUpKQotICAgICAgICAgICAgZ290byB2bV90aHJvdzsKKyAgICAgICAg
aWYgKGJhc2VWYWwuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgVHlwZUluZm8gaW5mbyA9IGFz
T2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKTsKKyAgICAgICAgICAgIGlm
IChpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSkgeworICAgICAgICAgICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NoZWNrX2hhc19pbnN0YW5jZSk7CisgICAgICAgICAg
ICAgICAgTkVYVF9JTlNUUlVDVElPTigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVl
IGJhc2VWYWwgPSBjYWxsRnJhbWUtPnIoYmFzZSkuanNWYWx1ZSgpOworICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gYXNPYmplY3QoYmFzZVZhbCktPm1ldGhvZFRhYmxlKCktPmN1c3RvbUhh
c0luc3RhbmNlKGFzT2JqZWN0KGJhc2VWYWwpLCBjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cih2YWx1
ZSkuanNWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Cisg
ICAgICAgICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc0Jvb2xlYW4ocmVz
dWx0KTsKIAotICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9jaGVja19oYXNfaW5zdGFu
Y2UpOwotICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgICAgICAgICAgdlBDICs9
IHRhcmdldDsKKyAgICAgICAgICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGNyZWF0ZUludmFsaWRQ
YXJhbUVycm9yKGNhbGxGcmFtZSwgImluc3RhbmNlb2YiICwgYmFzZVZhbCk7CisgICAgICAgIGdv
dG8gdm1fdGhyb3c7CiAgICAgfQogICAgIERFRklORV9PUENPREUob3BfaW5zdGFuY2VvZikgewog
ICAgICAgICAvKiBpbnN0YW5jZW9mIGRzdChyKSB2YWx1ZShyKSBjb25zdHJ1Y3RvcihyKSBjb25z
dHJ1Y3RvclByb3RvKHIpCkBAIC0yNDI5LDEwICsyNDM5LDkgQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICBpbnQgYmFzZVByb3RvID0gdlBDWzRdLnUu
b3BlcmFuZDsKIAogICAgICAgICBKU1ZhbHVlIGJhc2VWYWwgPSBjYWxsRnJhbWUtPnIoYmFzZSku
anNWYWx1ZSgpOworICAgICAgICBBU1NFUlQoYmFzZVZhbC5pc09iamVjdCgpICYmIGFzT2JqZWN0
KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKCkpOwogCi0gICAgICAgIEFTU0VSVCghaXNJbnZhbGlkUGFyYW1Gb3JJbnN0YW5jZU9m
KGNhbGxGcmFtZSwgYmFzZVZhbCwgZXhjZXB0aW9uVmFsdWUpKTsKLQotICAgICAgICBib29sIHJl
c3VsdCA9IGFzT2JqZWN0KGJhc2VWYWwpLT5tZXRob2RUYWJsZSgpLT5oYXNJbnN0YW5jZShhc09i
amVjdChiYXNlVmFsKSwgY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSwg
Y2FsbEZyYW1lLT5yKGJhc2VQcm90bykuanNWYWx1ZSgpKTsKKyAgICAgICAgYm9vbCByZXN1bHQg
PSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yKHZh
bHVlKS5qc1ZhbHVlKCksIGNhbGxGcmFtZS0+cihiYXNlUHJvdG8pLmpzVmFsdWUoKSk7CiAgICAg
ICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGRzdCkgPSBqc0Jvb2xlYW4ocmVzdWx0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NTIsNiArNTUyLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRgog
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHN0
cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgc2NyYXRjaCwgbV9jb2RlQmxvY2stPmdldE9yQWRkQXJy
YXlQcm9maWxlKGJ5dGVjb2RlSW5kZXgpKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoc3RydWN0dXJlQW5kSW5kZXhp
bmdUeXBlLCBzY3JhdGNoLCAwKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25ld19vYmplY3QoSW5z
dHJ1YwogCiB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICB1bnNpZ25lZCBiYXNlVmFsID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBiYXNlVmFsID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlVmFsLCBy
ZWdUMCk7CiAKQEAgLTU1MiwyMCArNTUyLDE4IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hh
c19pbnN0YW5jZShJbnMKICAgICAKICAgICAvLyBDaGVjayB0aGF0IGJhc2VWYWwgJ0ltcGxlbWVu
dHNIYXNJbnN0YW5jZScuCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKEltcGxlbWVudHNIYXNJbnN0YW5jZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hU
ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogfQogCiB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKICAgICB1bnNpZ25lZCB2YWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
Ci0gICAgdW5zaWduZWQgYmFzZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CiAgICAgdW5zaWduZWQgcHJvdG8gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwog
CiAgICAgLy8gTG9hZCB0aGUgb3BlcmFuZHMgaW50byByZWdpc3RlcnMuCiAgICAgLy8gV2UgdXNl
IHJlZ1QwIGZvciBiYXNlVmFsIHNpbmNlIHdlIHdpbGwgYmUgZG9uZSB3aXRoIHRoaXMgZmlyc3Qs
IGFuZCB3ZSBjYW4gdGhlbiB1c2UgaXQgZm9yIHRoZSByZXN1bHQuCiAgICAgZW1pdExvYWRQYXls
b2FkKHZhbHVlLCByZWdUMik7Ci0gICAgZW1pdExvYWRQYXlsb2FkKGJhc2VWYWwsIHJlZ1QwKTsK
ICAgICBlbWl0TG9hZFBheWxvYWQocHJvdG8sIHJlZ1QxKTsKIAogICAgIC8vIENoZWNrIHRoYXQg
cHJvdG8gYXJlIGNlbGxzLiAgYmFzZVZhbCBtdXN0IGJlIGEgY2VsbCAtIHRoaXMgaXMgY2hlY2tl
ZCBieSBvcF9jaGVja19oYXNfaW5zdGFuY2UuCkBAIC01NzYsMTEgKzU3NCw2IEBAIHZvaWQgSklU
OjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2Uo
ZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOwogCi0gICAgLy8gRml4bWU6IHRoaXMgY2hlY2sg
aXMgb25seSBuZWVkZWQgYmVjYXVzZSB0aGUgSlNDIEFQSSBhbGxvd3MgSGFzSW5zdGFuY2UgdG8g
YmUgb3ZlcnJpZGRlbjsgd2Ugc2hvdWxkIGRlcHJlY2F0ZSB0aGlzLgotICAgIC8vIENoZWNrIHRo
YXQgYmFzZVZhbCAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCi0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7Ci0KICAgICAvLyBPcHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwg
YW5kIHN0YXJ0IGxvb3BpbmcuCiAgICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlu
cyBwcm90byBhbmQgcmVnVDIgc3RpbGwgY29udGFpbnMgdmFsdWUuCiAgICAgLy8gQXMgd2UgbG9v
cCByZWdUMiB3aWxsIGJlIHVwZGF0ZWQgd2l0aCBpdHMgcHJvdG90eXBlLCByZWN1cnNpdmVseSB3
YWxraW5nIHRoZSBwcm90b3R5cGUgY2hhaW4uCkBAIC02MDQsMTQgKzU5NywxOSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAKIHZvaWQgSklUOjplbWl0U2xvd19v
cF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBiYXNl
VmFsID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBkc3Qg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBiYXNlVmFsID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZUlmTm90
SlNDZWxsKGl0ZXIsIGJhc2VWYWwpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJ
VFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9jaGVja19oYXNfaW5zdGFuY2UpOworICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHZhbHVlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChi
YXNlVmFsKTsKLSAgICBzdHViQ2FsbC5jYWxsKCk7CisgICAgc3R1YkNhbGwuY2FsbChkc3QpOwor
CisgICAgZW1pdEp1bXBTbG93VG9Ib3QoanVtcCgpLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKQEAgLTYyNCw3ICs2MjIsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgdmFsdWUpOwogICAg
IGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIHByb3RvKTsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAgSklUU3R1YkNhbGwgc3R1YkNh
bGwodGhpcywgY3RpX29wX2luc3RhbmNlb2YpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHZh
bHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2
aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXdfb2JqZWN0KEluc3RydWMKIAogdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3Rh
bmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgdW5zaWduZWQgYmFz
ZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgYmFz
ZVZhbCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGJhc2VWYWwsIHJlZ1QwKTsKIApAQCAtNDE2LDIwICs0MTYsMTggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKElucwogCiAgICAgLy8gQ2hlY2sgdGhh
dCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzSGFzSW5zdGFuY2UpKSk7CisgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSkpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVuc2lnbmVkIGRzdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgdW5zaWduZWQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHByb3RvID0gY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZDsKIAogICAgIC8vIExvYWQgdGhlIG9wZXJhbmRzIChiYXNlVmFsLCBw
cm90bywgYW5kIHZhbHVlIHJlc3BlY3RpdmVseSkgaW50byByZWdpc3RlcnMuCiAgICAgLy8gV2Ug
dXNlIHJlZ1QwIGZvciBiYXNlVmFsIHNpbmNlIHdlIHdpbGwgYmUgZG9uZSB3aXRoIHRoaXMgZmly
c3QsIGFuZCB3ZSBjYW4gdGhlbiB1c2UgaXQgZm9yIHRoZSByZXN1bHQuCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDIpOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZVZhbCwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvdG8sIHJlZ1Qx
KTsKIAogICAgIC8vIENoZWNrIHRoYXQgcHJvdG8gYXJlIGNlbGxzLiAgYmFzZVZhbCBtdXN0IGJl
IGEgY2VsbCAtIHRoaXMgaXMgY2hlY2tlZCBieSBvcF9jaGVja19oYXNfaW5zdGFuY2UuCkBAIC00
NDAsMTEgKzQzOCw2IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24K
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOwogICAg
IAotICAgIC8vIEZpeG1lOiB0aGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2UgdGhlIEpT
QyBBUEkgYWxsb3dzIEhhc0luc3RhbmNlIHRvIGJlIG92ZXJyaWRkZW47IHdlIHNob3VsZCBkZXBy
ZWNhdGUgdGhpcy4KLSAgICAvLyBDaGVjayB0aGF0IGJhc2VWYWwgJ0ltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBB
ZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwotCiAgICAgLy8gT3B0aW1pc3Rp
Y2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIElu
aXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRh
aW5zIHZhbHVlLgogICAgIC8vIEFzIHdlIGxvb3AgcmVnVDIgd2lsbCBiZSB1cGRhdGVkIHdpdGgg
aXRzIHByb3RvdHlwZSwgcmVjdXJzaXZlbHkgd2Fsa2luZyB0aGUgcHJvdG90eXBlIGNoYWluLgpA
QCAtMTQ1MiwxMyArMTQ0NSwxOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKElu
c3RydWN0CiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKLSAgICB1bnNpZ25lZCBiYXNlVmFsID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOworICAgIHVuc2lnbmVkIHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKKyAgICB1bnNpZ25lZCBiYXNlVmFsID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKIAogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2VWYWwpOwogICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3BfY2hlY2tfaGFzX2luc3RhbmNlKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudCh2YWx1ZSwg
cmVnVDIpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGJhc2VWYWwsIHJlZ1QyKTsKLSAgICBz
dHViQ2FsbC5jYWxsKCk7CisgICAgc3R1YkNhbGwuY2FsbChkc3QpOworCisgICAgZW1pdEp1bXBT
bG93VG9Ib3QoanVtcCgpLCBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIH0KIAog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKQEAgLTE0NzEs
NyArMTQ2OSw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3RydWMKICAg
ICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCB2YWx1ZSk7CiAgICAgbGlua1Nsb3dDYXNl
SWZOb3RKU0NlbGwoaXRlciwgcHJvdG8pOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X2luc3RhbmNlb2YpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHZhbHVlLCByZWdUMik7CiAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoYmFzZVZhbCwgcmVnVDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTM3LDIx
ICsxOTM3LDI3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQsIG9wX2NoZWNrX2hhc19pbnN0YW5jZSkKK0RFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAgICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFj
a0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIGJhc2VWYWwgPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVl
KCk7CisKKyAgICBpZiAoYmFzZVZhbC5pc09iamVjdCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbCk7CisgICAgICAgIEFTU0VSVCghYmFzZU9iamVj
dC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgp
KTsKKyAgICAgICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxl
bWVudHNIYXNJbnN0YW5jZSgpKSB7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VPYmplY3QsIGNhbGxGcmFt
ZSwgdmFsdWUpOworICAgICAgICAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOworICAg
ICAgICB9CisgICAgfQogCi0gICAgLy8gRUNNQS0yNjIgMTUuMy41LjM6Ci0gICAgLy8gVGhyb3cg
YW4gZXhjZXB0aW9uIGVpdGhlciBpZiBiYXNlVmFsIGlzIG5vdCBhbiBvYmplY3QsIG9yIGlmIGl0
IGRvZXMgbm90IGltcGxlbWVudCAnSGFzSW5zdGFuY2UnIChpLmUuIGlzIGEgZnVuY3Rpb24pLgot
I2lmbmRlZiBOREVCVUcKLSAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOwot
ICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChi
YXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgp
KTsKLSNlbmRpZgogICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRl
SW52YWxpZFBhcmFtRXJyb3IoY2FsbEZyYW1lLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpOwogICAg
IFZNX1RIUk9XX0VYQ0VQVElPTl9BVF9FTkQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwODUsNyArMjA5MSwx
MCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiAgICAgSlNWYWx1
ZSBiYXNlVmFsID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHBy
b3RvID0gc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKTsKICAgICAKLSAgICBib29sIHJlc3Vs
dCA9IENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhjYWxsRnJhbWUsIHZhbHVlLCBi
YXNlVmFsLCBwcm90byk7CisgICAgQVNTRVJUKGJhc2VWYWwuaXNPYmplY3QoKSAmJiBhc09iamVj
dChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSgpKTsKKyAgICBBU1NFUlQoIXZhbHVlLmlzT2JqZWN0KCkgfHwgIXByb3RvLmlzT2Jq
ZWN0KCkpOworCisgICAgYm9vbCByZXN1bHQgPSBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNl
KGNhbGxGcmFtZSwgdmFsdWUsIHByb3RvKTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VO
RCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24gMTI5MTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTAsNiArMzUwLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NU
VUIgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9J
TlRFUk5BTDsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY2FsbF9ldmFsKFNU
VUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIEVuY29kZWRKU1ZhbHVlIEpJ
VF9TVFVCIGN0aV9vcF9jb25zdHJ1Y3RfTm90SlNDb25zdHJ1Y3QoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKSBXVEZfSU5URVJOQUw7CisgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2No
ZWNrX2hhc19pbnN0YW5jZShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX3RoaXMoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3Rp
X29wX2NvbnZlcnRfdGhpcyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cyhTVFVCX0FS
R1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKQEAgLTQzMSw3ICs0MzIsNiBAQCBleHRlcm4g
IkMiIHsKICAgICB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfbG9hZF92YXJhcmdzKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIGludCBKSVRfU1RVQiBjdGlfdGltZW91dF9j
aGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICBpbnQgSklUX1NU
VUIgY3RpX2hhc19wcm9wZXJ0eShTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsK
LSAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9jaGVja19oYXNfaW5zdGFuY2UoU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBjdGlfb3BfZGVidWco
U1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAgICAgdm9pZCBKSVRfU1RVQiBj
dGlfb3BfZW5kKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwogICAgIHZvaWQg
SklUX1NUVUIgY3RpX29wX2ptcF9zY29wZXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxOCwxOSArNzE4LDI5IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQogewogICAgIExMSU5UX0JFR0lOKCk7
Ci0gICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7Ci0jaWZuZGVm
IE5ERUJVRwotICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7Ci0gICAgQVNT
RVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKLSAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2Jq
ZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3Rh
bmNlKCkpOwotI2VuZGlmCisgICAgCisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
OworICAgIGlmIChiYXNlVmFsLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBhc09iamVjdChiYXNlVmFsKTsKKyAgICAgICAgQVNTRVJUKCFiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwor
ICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkpIHsKKyAgICAgICAgICAgIHBjICs9IHBjWzRdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oYmFzZU9iamVjdC0+bWV0aG9kVGFibGUo
KS0+Y3VzdG9tSGFzSW5zdGFuY2UoYmFzZU9iamVjdCwgZXhlYywgdmFsdWUpKSk7CisgICAgICAg
IH0KKyAgICB9CiAgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywg
Imluc3RhbmNlb2YiLCBiYXNlVmFsKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9pbnN0YW5jZW9mKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQp
LmpzVmFsdWUoKSkpKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBwcm90byA9IExMSU5UX09QX0MoNCkuanNWYWx1ZSgpOworICAgIEFTU0VSVChiYXNl
VmFsLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAgQVNTRVJUKCF2YWx1ZS5p
c09iamVjdCgpIHx8ICFwcm90by5pc09iamVjdCgpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIHByb3RvKSkpOwog
fQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdHlwZW9mKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC04MzMsMjYg
KzgzMywxOSBAQCBfbGxpbnRfb3BfYml0b3I6CiAKIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFu
Y2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRp
IDEyW1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRh
ZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VT
bG93Ci0gICAgZGlzcGF0Y2goMikKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVja0hhc0luc3RhbmNl
U2xvdzoKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFu
Y2UpCi0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgwKQogCiAKIF9sbGludF9vcF9pbnN0
YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBp
bXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgotICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCi0gICAgbG9hZGkgMTJbUENdLCB0MQotICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwg
Lm9wSW5zdGFuY2VvZlNsb3cKLSAgICAKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgogICAg
IGxvYWRpIDE2W1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwgdDMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAxMjkxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNjkxLDI2ICs2OTEsMTkgQEAgX2xs
aW50X29wX2JpdG9yOgogCiBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBsb2FkaXMgOFtQQiwgUEMsIDhdLCB0MQorICAgIGxvYWRpcyAyNFtQ
QiwgUEMsIDhdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cpCiAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCi0gICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKLSAgICBk
aXNwYXRjaCgyKQorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdworICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgogICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSkKLSAgICBk
aXNwYXRjaCgyKQorICAgIGRpc3BhdGNoKDApCiAKIAogX2xsaW50X29wX2luc3RhbmNlb2Y6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMg
dGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCi0gICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgZGVwcmVjYXRlZC4KLSAgICBsb2FkaXMgMjRbUEIsIFBDLCA4XSwgdDEKLSAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cK
LSAgICAKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgogICAgIGxvYWRpcyAzMltQQiwgUEMs
IDhdLCB0MAogICAgIGxvYWRpcyA4W1BCLCBQQywgOF0sIHQzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDggKzgxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgU3RyaW5nICgqQ2xh
c3NOYW1lRnVuY3Rpb25QdHIpKGNvbnN0IEpTT2JqZWN0Kik7CiAgICAgICAgIENsYXNzTmFtZUZ1
bmN0aW9uUHRyIGNsYXNzTmFtZTsKIAotICAgICAgICB0eXBlZGVmIGJvb2wgKCpIYXNJbnN0YW5j
ZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOwot
ICAgICAgICBIYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIGhhc0luc3RhbmNlOworICAgICAgICB0eXBl
ZGVmIGJvb2wgKCpDdXN0b21IYXNJbnN0YW5jZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUpOworICAgICAgICBDdXN0b21IYXNJbnN0YW5jZUZ1bmN0aW9uUHRyIGN1
c3RvbUhhc0luc3RhbmNlOwogCiAgICAgICAgIHR5cGVkZWYgdm9pZCAoKlB1dFdpdGhBdHRyaWJ1
dGVzRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgICAgIFB1dFdpdGhB
dHRyaWJ1dGVzRnVuY3Rpb25QdHIgcHV0RGlyZWN0VmlydHVhbDsKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdHJ1Y3QgTWVtYmVyQ2hlY2sjI21lbWJlciB7IFwKICAgICAgICAgJkNsYXNzTmFtZTo6Z2V0
T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzLCBcCiAgICAgICAgICZDbGFzc05hbWU6OmdldFByb3Bl
cnR5TmFtZXMsIFwKICAgICAgICAgJkNsYXNzTmFtZTo6Y2xhc3NOYW1lLCBcCi0gICAgICAgICZD
bGFzc05hbWU6Omhhc0luc3RhbmNlLCBcCisgICAgICAgICZDbGFzc05hbWU6OmN1c3RvbUhhc0lu
c3RhbmNlLCBcCiAgICAgICAgICZDbGFzc05hbWU6OnB1dERpcmVjdFZpcnR1YWwsIFwKICAgICAg
ICAgJkNsYXNzTmFtZTo6ZGVmaW5lT3duUHJvcGVydHksIFwKICAgICAgICAgJkNsYXNzTmFtZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTI5MTkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDI4ICs3NSw2IEBAIEFMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNr
Rm9yKEUKICAgICByZXR1cm4gbmV3RXhlYzsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIG9wSW5z
dGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VW
YWwsIEpTVmFsdWUgcHJvdG8pCi17Ci0gICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFz
ZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKLSAgICAgICAgICAgfHwgIXZhbHVlLmlz
T2JqZWN0KCkgfHwgIWJhc2VWYWwuaXNPYmplY3QoKSB8fCAhcHJvdG8uaXNPYmplY3QoKSAKLSAg
ICAgICAgICAgfHwgIWFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5p
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKCkpOwotCi0KLSAgICAvLyBFQ01BLTI2MiAxNS4z
LjUuMzoKLSAgICAvLyBUaHJvdyBhbiBleGNlcHRpb24gZWl0aGVyIGlmIGJhc2VWYWwgaXMgbm90
IGFuIG9iamVjdCwgb3IgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50ICdIYXNJbnN0YW5jZScgKGku
ZS4gaXMgYSBmdW5jdGlvbikuCi0gICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBl
KTsKLSAgICBpZiAoIWJhc2VWYWwuaXNPYmplY3QoKSB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3Qo
YmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2Uo
KSkgewotICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlSW52YWxp
ZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICBBU1NFUlQodHlwZUluZm8udHlwZSgpICE9IFVuc3BlY2lmaWVk
VHlwZSk7Ci0KLSAgICBpZiAoIXR5cGVJbmZvLm92ZXJyaWRlc0hhc0luc3RhbmNlKCkgJiYgIXZh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBhc09i
amVjdChiYXNlVmFsKS0+bWV0aG9kVGFibGUoKS0+aGFzSW5zdGFuY2UoYXNPYmplY3QoYmFzZVZh
bCksIGV4ZWMsIHZhbHVlLCBwcm90byk7Ci19Ci0KIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCiB7CiAgICAgaWYgKCFi
YXNlVmFsLmlzT2JqZWN0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksMTQgKzg5LDkgQEAgSlNCb3VuZEZ1bmN0aW9uKiBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZQogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAotYm9vbCBKU0JvdW5kRnVuY3Rpb246Omhh
c0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSwgSlNWYWx1ZSkKK2Jvb2wgSlNCb3VuZEZ1bmN0aW9uOjpjdXN0b21IYXNJbnN0YW5jZShKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNC
b3VuZEZ1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVj
dCk7Ci0gICAgLy8gRklYTUU6IG91ciBpbnN0YW5jZW9mIGltcGxlbWVudGF0aW9uIHdpbGwgaGF2
ZSBhbHJlYWR5IChpbmNvcnJlY3RseSkgcGVyZm9ybWVkCi0gICAgLy8gYSBbW0dldF1dIG9mIC5w
cm90b3R5cGUgZnJvbSB0aGUgYm91bmQgZnVuY3Rpb24gb2JqZWN0LCB3aGljaCBpcyBpbmNvcnJl
Y3QhCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjU2
Ci0gICAgSlNWYWx1ZSBwcm90byA9IHRoaXNPYmplY3QtPm1fdGFyZ2V0RnVuY3Rpb24tPmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+bV90YXJnZXRGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+aGFzSW5zdGFuY2UodGhpc09i
amVjdC0+bV90YXJnZXRGdW5jdGlvbi5nZXQoKSwgZXhlYywgdmFsdWUsIHByb3RvKTsKKyAgICBy
ZXR1cm4ganNDYXN0PEpTQm91bmRGdW5jdGlvbio+KG9iamVjdCktPm1fdGFyZ2V0RnVuY3Rpb24t
Pmhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlKTsKIH0KIAogSlNCb3VuZEZ1bmN0aW9uOjpKU0JvdW5k
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIHRhcmdldEZ1bmN0aW9uLCBKU1ZhbHVlIGJv
dW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAkocmV2aXNpb24gMTI5MTkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQm91bmRGdW5jdGlv
biogY3JlYXRlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRhcmdldEZ1
bmN0aW9uLCBKU1ZhbHVlIGJvdW5kVGhpcywgSlNWYWx1ZSBib3VuZEFyZ3MsIGludCwgY29uc3Qg
U3RyaW5nJik7CiAKLSAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG8pOworICAgIHN0YXRpYyBib29sIGN1c3RvbUhh
c0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAKICAgICBKU09iamVj
dCogdGFyZ2V0RnVuY3Rpb24oKSB7IHJldHVybiBtX3RhcmdldEZ1bmN0aW9uLmdldCgpOyB9CiAg
ICAgSlNWYWx1ZSBib3VuZFRoaXMoKSB7IHJldHVybiBtX2JvdW5kVGhpcy5nZXQoKTsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxMjkx
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBKU0NlbGw6OmdldFByb3BlcnR5TmFtZXMo
SlNPYmplY3QqLAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1ib29sIEpTQ2VsbDo6
aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKQorYm9v
bCBKU0NlbGw6OmN1c3RvbUhhc0luc3RhbmNlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1
ZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTI5MTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2MCw3ICsxNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwog
ICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlv
bk1vZGUpOwogICAgICAgICBzdGF0aWMgU3RyaW5nIGNsYXNzTmFtZShjb25zdCBKU09iamVjdCop
OwotICAgICAgICBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwogICAgICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9p
ZCBwdXREaXJlY3RWaXJ0dWFsKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAgICAgc3RhdGljIGJvb2wgZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpOwogICAgICAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUs
IFByb3BlcnR5RGVzY3JpcHRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODMsNyArNzgzLDE4
IEBAIGNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUgKICAgICByZXR1cm4g
MDsKIH0KIAotYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCitib29sIEpTT2JqZWN0OjpoYXNJ
bnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVHlwZUluZm8g
aW5mbyA9IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpOworICAgIGlmIChpbmZvLmltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UoKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShl
eGVjLCB2YWx1ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpKTsK
KyAgICBpZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKKyAgICAgICAgcmV0dXJuIG1l
dGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKTsKKyAgICB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9m
IiAsIHRoaXMpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJv
dG8pCiB7CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNWYWx1ZSBkZWZhdWx0VmFsdWUoY29uc3QgSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKTsKIAotICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBoYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlUHJvcGVydHkpOworICAgICAgICBib29s
IGhhc0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgICAgICBzdGF0aWMgYm9vbCBk
ZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSBwcm90b3R5cGVQ
cm9wZXJ0eSk7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5Jiwg
RW51bWVyYXRpb25Nb2RlKTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5Mjc0
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMDktMjEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgorCisgICAgICAgIGluc3RhbmNlb2Ygc2hvdWxkIG5vdCBnZXQgdGhlIHByb3RvdHlwZSBmb3Ig
bm9uLWRlZmF1bHQgSGFzSW5zdGFuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4NjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2pzL2Z1bmN0aW9uLWJpbmQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAgICAgLSBjaGVjayBpbiBwYXNzaW5nIHJlc3VsdC4KKwogMjAxMi0wOS0yMSAgS2VuaWNo
aSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
c2UgT3BlblR5cGVWZXJ0aWNhbERhdGEgb24gTGludXgKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMvZnVuY3Rpb24tYmluZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9mdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTI5MTkxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1iaW5kLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQCBQQVNTIGFiY0F0KDEpIGlzICJiIgogUEFTUyBuZXcgYWJj
QXQoMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ2Z1bmN0aW9uIGNoYXJBdCgpIHsKICAg
ICBbbmF0aXZlIGNvZGVdCiB9JyBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3
IGFiY0F0KDEpJykuCi1GQUlMIGJvdW5kRnVuY3Rpb25Qcm90b3R5cGVBY2Nlc3NlZCBzaG91bGQg
YmUgZmFsc2UuIFdhcyB0cnVlLgorUEFTUyBib3VuZEZ1bmN0aW9uUHJvdG90eXBlQWNjZXNzZWQg
aXMgZmFsc2UKIFBBU1MgRnVuY3Rpb24uYmluZC5sZW5ndGggaXMgMQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCg==
</data>
<flag name="review"
          id="177218"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="177222"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>