<?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>49606</bug_id>
          
          <creation_ts>2010-11-16 11:14:09 -0800</creation_ts>
          <short_desc>instanceof should only get the prototype property if the RHS operand implements HasInstance</short_desc>
          <delta_ts>2010-11-16 13:12:02 -0800</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>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>309835</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-16 11:14:09 -0800</bug_when>
    <thetext>test case: javascript: ({} instanceof { get prototype(){ alert(&quot;Error!&quot;); } })

The bug here is that we read the prototype from the RHS argument using a regular op_get_by_id before op_instanceof has checked that this is an object implementing HasInstance.  This incorrect behaviour gives rise to further unnecessary complexity in the code base, since we have additional logic (implemented using the GetByIdExceptionInfo data structures on CodeBlock) to convert not an object errors from the get_by_id into invalid parameter errors.  Having fixed this bug this code is all redundant, since in these cases the get_by_id will never have been reached.  (op_construct had a similar error, but this is fixed since we moved this object creation to inside the constructor function.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309866</commentid>
    <comment_count>1</comment_count>
      <attachid>74020</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-16 12:18:17 -0800</bug_when>
    <thetext>Created attachment 74020
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309895</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-16 13:12:02 -0800</bug_when>
    <thetext>fixed in r72127</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74020</attachid>
            <date>2010-11-16 12:18:17 -0800</date>
            <delta_ts>2010-11-16 13:05:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>HasInstance.patch</filename>
            <type>text/plain</type>
            <size>48896</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODAgQEAKKzIwMTAtMTEtMTYgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00OTYwNgorCisgICAgICAgIFRoZSBidWcgaGVyZSBpcyB0aGF0IHdlIHJlYWQg
dGhlIHByb3RvdHlwZSBmcm9tIHRoZSBSSFMgYXJndW1lbnQgdXNpbmcgYSByZWd1bGFyCisgICAg
ICAgIG9wX2dldF9ieV9pZCBiZWZvcmUgb3BfaW5zdGFuY2VvZiBoYXMgY2hlY2tlZCB0aGF0IHRo
aXMgaXMgYW4gb2JqZWN0IGltcGxlbWVudGluZworICAgICAgICBIYXNJbnN0YW5jZS4gVGhpcyBp
bmNvcnJlY3QgYmVoYXZpb3VyIGdpdmVzIHJpc2UgdG8gZnVydGhlciB1bm5lY2Vzc2FyeSBjb21w
bGV4aXR5CisgICAgICAgIGluIHRoZSBjb2RlIGJhc2UsIHNpbmNlIHdlIGhhdmUgYWRkaXRpb25h
bCBsb2dpYyAoaW1wbGVtZW50ZWQgdXNpbmcgdGhlCisgICAgICAgIEdldEJ5SWRFeGNlcHRpb25J
bmZvIGRhdGEgc3RydWN0dXJlcyBvbiBDb2RlQmxvY2spIHRvIGNvbnZlcnQgbm90IGFuIG9iamVj
dCBlcnJvcnMKKyAgICAgICAgZnJvbSB0aGUgZ2V0X2J5X2lkIGludG8gaW52YWxpZCBwYXJhbWV0
ZXIgZXJyb3JzLiBIYXZpbmcgZml4ZWQgdGhpcyBidWcgdGhpcyBjb2RlCisgICAgICAgIGlzIGFs
bCByZWR1bmRhbnQsIHNpbmNlIGluIHRoZXNlIGNhc2VzIHRoZSBnZXRfYnlfaWQgd2lsbCBuZXZl
ciBoYXZlIGJlZW4gcmVhY2hlZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmFkZEV4cHJlc3Npb25JbmZvKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENoZWNrSGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFu
Y2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfY2hlY2tfaGFzX2luc3RhbmNl
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2No
ZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9m
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9jaGVja19oYXNfaW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YpOgorICAgICAgICAqIGpp
dC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bik6CisgICAgICAgIChKU0M6OmNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBbk9i
amVjdEVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTTm90QW5P
YmplY3Q6OnRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0UHJp
bWl0aXZlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6dG9Cb29sZWFuKToK
KyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6dG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpK
U05vdEFuT2JqZWN0Ojp0b1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTTm90QW5PYmplY3Q6OnRv
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KToKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNO
b3RBbk9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU05vdEFuT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50aW1lL0pTTm90QW5PYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNOb3RBbk9iamVjdDo6SlNOb3RBbk9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNBY3RpdmF0
aW9uT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3lu
dGhlc2l6ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5
cGUpOgorCiAyMDEwLTExLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA3MjEyMykKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI0NDYsNyArMjQ0Niw2IEBACiAJCQlpc2Eg
PSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyNzcxMDg5MDJB
RkUwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIkph
dmFTY3JpcHRDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7
Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApJbmRleDogSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA3MjEyMykKKysrIEphdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2Myw2ICs2
NjMsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgcHJpbnRVbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdG5vdCIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFu
Y2U6IHsKKyAgICAgICAgICAgIGludCBiYXNlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBwcmludGYoIlslNGRdIGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXNcbiIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgYmFzZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE2NTcsMzAgKzE2NjIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZXhwcmVzc2lv
blJhbmdlRm9yQnl0ZWNvCiAgICAgcmV0dXJuOwogfQogCi1ib29sIENvZGVCbG9jazo6Z2V0QnlJ
ZEV4Y2VwdGlvbkluZm9Gb3JCeXRlY29kZU9mZnNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEJiBvcGNvZGVJRCkKLXsKLSAgICBBU1NFUlQo
Ynl0ZWNvZGVPZmZzZXQgPCBtX2luc3RydWN0aW9uQ291bnQpOwotCi0gICAgaWYgKCFyZXBhcnNl
Rm9yRXhjZXB0aW9uSW5mb0lmTmVjZXNzYXJ5KGNhbGxGcmFtZSkgfHwgIW1fZXhjZXB0aW9uSW5m
by0+bV9nZXRCeUlkRXhjZXB0aW9uSW5mby5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGludCBsb3cgPSAwOwotICAgIGludCBoaWdoID0gbV9leGNlcHRpb25JbmZvLT5tX2dl
dEJ5SWRFeGNlcHRpb25JbmZvLnNpemUoKTsKLSAgICB3aGlsZSAobG93IDwgaGlnaCkgewotICAg
ICAgICBpbnQgbWlkID0gbG93ICsgKGhpZ2ggLSBsb3cpIC8gMjsKLSAgICAgICAgaWYgKG1fZXhj
ZXB0aW9uSW5mby0+bV9nZXRCeUlkRXhjZXB0aW9uSW5mb1ttaWRdLmJ5dGVjb2RlT2Zmc2V0IDw9
IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgaGlnaCA9IG1pZDsKLSAgICB9Ci0KLSAgICBpZiAoIWxvdyB8fCBtX2V4
Y2VwdGlvbkluZm8tPm1fZ2V0QnlJZEV4Y2VwdGlvbkluZm9bbG93IC0gMV0uYnl0ZWNvZGVPZmZz
ZXQgIT0gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG9wY29k
ZUlEID0gbV9leGNlcHRpb25JbmZvLT5tX2dldEJ5SWRFeGNlcHRpb25JbmZvW2xvdyAtIDFdLmlz
T3BDcmVhdGVUaGlzID8gb3BfY3JlYXRlX3RoaXMgOiBvcF9pbnN0YW5jZW9mOwotICAgIHJldHVy
biB0cnVlOwotfQotCiAjaWYgRU5BQkxFKEpJVCkKIGJvb2wgQ29kZUJsb2NrOjpmdW5jdGlvblJl
Z2lzdGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGludCYgZnVu
Y3Rpb25SZWdpc3RlckluZGV4KQogewpAQCAtMTc3Myw3ICsxNzU0LDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnNocmlua1RvRml0KCkKICAgICBpZiAobV9leGNlcHRpb25JbmZvKSB7CiAgICAgICAgIG1f
ZXhjZXB0aW9uSW5mby0+bV9leHByZXNzaW9uSW5mby5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBt
X2V4Y2VwdGlvbkluZm8tPm1fbGluZUluZm8uc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgbV9leGNl
cHRpb25JbmZvLT5tX2dldEJ5SWRFeGNlcHRpb25JbmZvLnNocmlua1RvRml0KCk7CiAgICAgfQog
CiAgICAgaWYgKG1fcmFyZURhdGEpIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCShyZXZpc2lvbiA3MjEyMykKKysrIEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC05MywxNCArOTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgaW50MzJfdCBsaW5lTnVtYmVyOwogICAgIH07CiAKLSAgICAvLyBCb3RoIG9wX2NvbnN0
cnVjdCBhbmQgb3BfaW5zdGFuY2VvZiByZXF1aXJlIGEgdXNlIG9mIG9wX2dldF9ieV9pZCB0byBn
ZXQKLSAgICAvLyB0aGUgcHJvdG90eXBlIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LiBUaGUgZXhj
ZXB0aW9uIG1lc3NhZ2VzIGZvciBleGNlcHRpb25zCi0gICAgLy8gdGhyb3duIGJ5IHRoZXNlIGlu
c3RhbmNlcyBvcF9nZXRfYnlfaWQgbmVlZCB0byByZWZsZWN0IHRoaXMuCi0gICAgc3RydWN0IEdl
dEJ5SWRFeGNlcHRpb25JbmZvIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiAz
MTsKLSAgICAgICAgYm9vbCBpc09wQ3JlYXRlVGhpcyA6IDE7Ci0gICAgfTsKLQogI2lmIEVOQUJM
RShKSVQpCiAgICAgc3RydWN0IENhbGxMaW5rSW5mbyB7CiAgICAgICAgIENhbGxMaW5rSW5mbygp
CkBAIC0yNjUsNyArMjU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEV4Y2VwdGlv
bkluZm8gOiBGYXN0QWxsb2NCYXNlIHsKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUlu
Zm8+IG1fZXhwcmVzc2lvbkluZm87CiAgICAgICAgIFZlY3RvcjxMaW5lSW5mbz4gbV9saW5lSW5m
bzsKLSAgICAgICAgVmVjdG9yPEdldEJ5SWRFeGNlcHRpb25JbmZvPiBtX2dldEJ5SWRFeGNlcHRp
b25JbmZvOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0PiBtX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKQEAgLTMxOCw3ICsz
MDksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIGludCBsaW5l
TnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoQ2FsbEZyYW1lKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpOwogICAgICAgICB2b2lkIGV4cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KENhbGxG
cmFtZSosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBpbnQmIGRpdm90LCBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCk7Ci0gICAgICAgIGJvb2wgZ2V0QnlJZEV4Y2VwdGlvbkluZm9G
b3JCeXRlY29kZU9mZnNldChDYWxsRnJhbWUqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgT3Bj
b2RlSUQmKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgYWRkQ2FsbGVyKENhbGxM
aW5rSW5mbyogY2FsbGVyKQpAQCAtNDY4LDcgKzQ1OCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBQYXNzT3duUHRyPEV4Y2VwdGlvbkluZm8+IGV4dHJhY3RFeGNlcHRpb25JbmZvKCk7CiAK
ICAgICAgICAgdm9pZCBhZGRFeHByZXNzaW9uSW5mbyhjb25zdCBFeHByZXNzaW9uUmFuZ2VJbmZv
JiBleHByZXNzaW9uSW5mbykgeyBBU1NFUlQobV9leGNlcHRpb25JbmZvKTsgbV9leGNlcHRpb25J
bmZvLT5tX2V4cHJlc3Npb25JbmZvLmFwcGVuZChleHByZXNzaW9uSW5mbyk7IH0KLSAgICAgICAg
dm9pZCBhZGRHZXRCeUlkRXhjZXB0aW9uSW5mbyhjb25zdCBHZXRCeUlkRXhjZXB0aW9uSW5mbyYg
aW5mbykgeyBBU1NFUlQobV9leGNlcHRpb25JbmZvKTsgbV9leGNlcHRpb25JbmZvLT5tX2dldEJ5
SWRFeGNlcHRpb25JbmZvLmFwcGVuZChpbmZvKTsgfQogCiAgICAgICAgIHNpemVfdCBudW1iZXJP
ZkxpbmVJbmZvcygpIGNvbnN0IHsgQVNTRVJUKG1fZXhjZXB0aW9uSW5mbyk7IHJldHVybiBtX2V4
Y2VwdGlvbkluZm8tPm1fbGluZUluZm8uc2l6ZSgpOyB9CiAgICAgICAgIHZvaWQgYWRkTGluZUlu
Zm8oY29uc3QgTGluZUluZm8mIGxpbmVJbmZvKSB7IEFTU0VSVChtX2V4Y2VwdGlvbkluZm8pOyBt
X2V4Y2VwdGlvbkluZm8tPm1fbGluZUluZm8uYXBwZW5kKGxpbmVJbmZvKTsgfQpJbmRleDogSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2JpdG9yLCA1KSBcCiAgICAgICAgIG1hY3JvKG9w
X2JpdG5vdCwgMykgXAogICAgICAgICBcCisgICAgICAgIG1hY3JvKG9wX2NoZWNrX2hhc19pbnN0
YW5jZSwgMikgXAogICAgICAgICBtYWNybyhvcF9pbnN0YW5jZW9mLCA1KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3R5cGVvZiwgMykgXAogICAgICAgICBtYWNybyhvcF9pc191bmRlZmluZWQsIDMpIFwK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDMsNyArNDQzLDYgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEZ1bgogICAgICAgICBlbWl0T3Bj
b2RlKG9wX2dldF9jYWxsZWUpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+
aW5kZXgoKSk7CiAgICAgICAgIC8vIExvYWQgcHJvdG90eXBlLgotICAgICAgICBlbWl0R2V0QnlJ
ZEV4Y2VwdGlvbkluZm8ob3BfY3JlYXRlX3RoaXMpOwogICAgICAgICBlbWl0R2V0QnlJZChmdW5j
UHJvdG8uZ2V0KCksIGZ1bmMuZ2V0KCksIGdsb2JhbERhdGEoKS0+cHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlKTsKIAogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV90aGlzKTsKQEAgLTExNTgs
NiArMTE1NywxMiBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpmaW5kU2NvcGVkUHJvcGVyCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja0hh
c0luc3RhbmNlKFJlZ2lzdGVySUQqIGJhc2UpCit7IAorICAgIGVtaXRPcGNvZGUob3BfY2hlY2tf
aGFzX2luc3RhbmNlKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFuY2VPZihSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBiYXNlUHJvdG90eXBlKQogeyAKICAgICBlbWl0T3Bjb2RlKG9wX2luc3RhbmNlb2YpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCwxNyArMjY4LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhwcmVzc2lvbkluZm8oaW5m
byk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGVtaXRHZXRCeUlkRXhjZXB0aW9uSW5mbyhP
cGNvZGVJRCBvcGNvZGVJRCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gT25seSBvcF9jb25z
dHJ1Y3QgYW5kIG9wX2luc3RhbmNlb2YgbmVlZCBleGNlcHRpb24gaW5mbyBmb3IKLSAgICAgICAg
ICAgIC8vIGEgcHJlY2VkaW5nIG9wX2dldF9ieV9pZC4KLSAgICAgICAgICAgIEFTU0VSVChvcGNv
ZGVJRCA9PSBvcF9jcmVhdGVfdGhpcyB8fCBvcGNvZGVJRCA9PSBvcF9pbnN0YW5jZW9mKTsKLSAg
ICAgICAgICAgIEdldEJ5SWRFeGNlcHRpb25JbmZvIGluZm87Ci0gICAgICAgICAgICBpbmZvLmJ5
dGVjb2RlT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgICAgICAgICAgaW5mby5p
c09wQ3JlYXRlVGhpcyA9IChvcGNvZGVJRCA9PSBvcF9jcmVhdGVfdGhpcyk7Ci0gICAgICAgICAg
ICBtX2NvZGVCbG9jay0+YWRkR2V0QnlJZEV4Y2VwdGlvbkluZm8oaW5mbyk7Ci0gICAgICAgIH0K
LSAgICAgICAgCiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9vbCBsZWZ0SGFuZFNpZGVOZWVkc0Nv
cHkoYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SXNQdXJlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gKG1fY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlIHx8IG1fY29k
ZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgfHwgcmlnaHRIYXNBc3NpZ25tZW50cykgJiYg
IXJpZ2h0SXNQdXJlOwpAQCAtMzIyLDYgKzMxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UG9zdEluYyhSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNy
Y0RzdCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQb3N0RGVjKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogc3JjRHN0KTsKIAorICAgICAgICB2b2lkIGVtaXRDaGVja0hhc0luc3RhbmNl
KFJlZ2lzdGVySUQqIGJhc2UpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SW5zdGFuY2VPZihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBiYXNlUHJvdG90eXBlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVPZihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Aob3Bf
dHlwZW9mLCBkc3QsIHNyYyk7IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpIHsgcmV0dXJu
IGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwgT3BlcmFuZFR5cGVzKCkp
OyB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxNiw3ICsxMDE2LDkgQEAgUmVnaXN0ZXJJ
RCogSW5zdGFuY2VPZk5vZGU6OmVtaXRCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
cmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcjIpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkaXZvdCgpLCBzdGFydE9mZnNldCgpLCBlbmRPZmZzZXQoKSk7Ci0gICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkRXhjZXB0aW9uSW5mbyhvcF9pbnN0YW5jZW9mKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdENoZWNrSGFzSW5zdGFuY2Uoc3JjMi5nZXQoKSk7CisKKyAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIHN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCgp
KTsKICAgICBSZWdpc3RlcklEKiBzcmMyUHJvdG90eXBlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc3JjMi5nZXQoKSwgZ2VuZXJhdG9yLmdsb2JhbERh
dGEoKS0+cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gNzIx
MjMpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2MiwxNSArNjYyLDEwIEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyog
SW50ZXJwcmV0ZXI6OnQKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CiAgICAgaWYgKGV4Y2VwdGlvblZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAg
SlNPYmplY3QqIGV4Y2VwdGlvbiA9IGFzT2JqZWN0KGV4Y2VwdGlvblZhbHVlKTsKLSAgICAgICAg
aWYgKGV4Y2VwdGlvbi0+aXNOb3RBbk9iamVjdEVycm9yU3R1YigpKSB7Ci0gICAgICAgICAgICBl
eGNlcHRpb24gPSBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8
SlNOb3RBbk9iamVjdEVycm9yU3R1Yio+KGV4Y2VwdGlvbiksIGJ5dGVjb2RlT2Zmc2V0LCBjb2Rl
QmxvY2spOwotICAgICAgICAgICAgZXhjZXB0aW9uVmFsdWUgPSBleGNlcHRpb247Ci0gICAgICAg
IH0KLQogICAgICAgICBpZiAoIWV4cGxpY2l0VGhyb3cgJiYgZXhjZXB0aW9uLT5pc0Vycm9ySW5z
dGFuY2UoKSAmJiBzdGF0aWNfY2FzdDxFcnJvckluc3RhbmNlKj4oZXhjZXB0aW9uKS0+YXBwZW5k
U291cmNlVG9NZXNzYWdlKCkpCiAgICAgICAgICAgICBhcHBlbmRTb3VyY2VUb0Vycm9yKGNhbGxG
cmFtZSwgc3RhdGljX2Nhc3Q8RXJyb3JJbnN0YW5jZSo+KGV4Y2VwdGlvbiksIGJ5dGVjb2RlT2Zm
c2V0KTsKIAotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0
aGVzZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBleGNlcHRpb25zLCAoIWV4cGxpY2l0VGhy
b3cpLAorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIG9ubHkgcmVhbGx5IGJlIGFkZGluZyB0aGVz
ZSBwcm9wZXJ0aWVzIHRvIFZNIGdlbmVyYXRlZCBleGNlcHRpb25zLAogICAgICAgICAvLyBidXQg
dGhlIGluc3BlY3RvciBjdXJyZW50bHkgcmVxdWlyZXMgdGhlc2UgZm9yIGFsbCB0aHJvd24gb2Jq
ZWN0cy4KICAgICAgICAgaWYgKCFoYXNFcnJvckluZm8oY2FsbEZyYW1lLCBleGNlcHRpb24pKQog
ICAgICAgICAgICAgYWRkRXJyb3JJbmZvKGNhbGxGcmFtZSwgZXhjZXB0aW9uLCBjb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGJ5dGVjb2RlT2Zmc2V0KSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlKCkpOwpAQCAtMjE0NSw2ICsyMTQw
LDIzIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAg
dlBDICs9IE9QQ09ERV9MRU5HVEgob3Bfbm90KTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigp
OwogICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9wX2NoZWNrX2hhc19pbnN0YW5jZSkgeworICAg
ICAgICAvKiBjaGVja19oYXNfaW5zdGFuY2UgY29uc3RydWN0b3IocikKKworICAgICAgICAgICBD
aGVjayAnY29uc3RydWN0b3InIGlzIGFuIG9iamVjdCB3aXRoIHRoZSBpbnRlcm5hbCBwcm9wZXJ0
eQorICAgICAgICAgICBbSGFzSW5zdGFuY2VdIChpLmUuIGlzIGEgZnVuY3Rpb24gLi4uICpzaGFr
ZXMgaGVhZCBzYWRseSBhdAorICAgICAgICAgICBKU0MgQVBJKikuIFJhaXNlcyBhbiBleGNlcHRp
b24gaWYgcmVnaXN0ZXIgY29uc3RydWN0b3IgaXMgbm90CisgICAgICAgICAgIGFuIHZhbGlkIHBh
cmFtZXRlciBmb3IgaW5zdGFuY2VvZi4KKyAgICAgICAgKi8KKyAgICAgICAgaW50IGJhc2UgPSB2
UENbMV0udS5vcGVyYW5kOworICAgICAgICBKU1ZhbHVlIGJhc2VWYWwgPSBjYWxsRnJhbWUtPnIo
YmFzZSkuanNWYWx1ZSgpOworCisgICAgICAgIGlmIChpc0ludmFsaWRQYXJhbUZvckluc3RhbmNl
T2YoY2FsbEZyYW1lLCBiYXNlVmFsLCBleGNlcHRpb25WYWx1ZSkpCisgICAgICAgICAgICBnb3Rv
IHZtX3Rocm93OworCisgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2NoZWNrX2hhc19p
bnN0YW5jZSk7CisgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKKyAgICB9CiAgICAgREVGSU5F
X09QQ09ERShvcF9pbnN0YW5jZW9mKSB7CiAgICAgICAgIC8qIGluc3RhbmNlb2YgZHN0KHIpIHZh
bHVlKHIpIGNvbnN0cnVjdG9yKHIpIGNvbnN0cnVjdG9yUHJvdG8ocikKIApAQCAtMjE2NSw4ICsy
MTc3LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogCiAgICAg
ICAgIEpTVmFsdWUgYmFzZVZhbCA9IGNhbGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCk7CiAKLSAg
ICAgICAgaWYgKGlzSW52YWxpZFBhcmFtRm9ySW5zdGFuY2VPZihjYWxsRnJhbWUsIGJhc2VWYWws
IGV4Y2VwdGlvblZhbHVlKSkKLSAgICAgICAgICAgIGdvdG8gdm1fdGhyb3c7CisgICAgICAgIEFT
U0VSVCghaXNJbnZhbGlkUGFyYW1Gb3JJbnN0YW5jZU9mKGNhbGxGcmFtZSwgYmFzZVZhbCwgZXhj
ZXB0aW9uVmFsdWUpKTsKIAogICAgICAgICBib29sIHJlc3VsdCA9IGFzT2JqZWN0KGJhc2VWYWwp
LT5oYXNJbnN0YW5jZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpLCBj
YWxsRnJhbWUtPnIoYmFzZVByb3RvKS5qc1ZhbHVlKCkpOwogICAgICAgICBDSEVDS19GT1JfRVhD
RVBUSU9OKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDYgKzI0MSw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9nbG9iYWxfdmFyKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3BuYW1lcykKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9zY29wZWRfdmFyKQorICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tf
aGFzX2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKICAgICAgICAg
REVGSU5FX09QKG9wX2plcV9udWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfamZhbHNlKQpAQCAt
NDAyLDYgKzQwMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX2dldF9ieV9wbmFtZSkKKyAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NoZWNr
X2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNlb2Yp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9qZmFsc2UpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9qbmxlc3MpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA3MjEyMykKKysr
IEphdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzU1LDYgKzc1NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2dsb2JhbF92YXIo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qKTsKQEAgLTg1NSw2ICs4NTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKiwg
VmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93
X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0
YW5jZW9mKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2pmYWxzZShJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbmxlc3Mo
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBK
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEyLDYgKzUxMiwyMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9u
CiAgICAgSklUU3R1YkNhbGwodGhpcywgY3RpX29wX25ld19vYmplY3QpLmNhbGwoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hh
c19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIHVuc2ln
bmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworCisgICAgZW1p
dExvYWRQYXlsb2FkKGJhc2VWYWwsIHJlZ1QwKTsKKworICAgIC8vIENoZWNrIHRoYXQgYmFzZVZh
bCBpcyBhIGNlbGwuCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VWYWwpOwor
ICAgIAorICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNlJy4K
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3Ry
dWN0dXJlKSksIHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRy
ZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fZmxhZ3Mp
KSwgSW1tMzIoSW1wbGVtZW50c0hhc0luc3RhbmNlKSkpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5z
aWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTUyNSwxNSAr
NTM5LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBl
bWl0TG9hZFBheWxvYWQoYmFzZVZhbCwgcmVnVDApOwogICAgIGVtaXRMb2FkUGF5bG9hZChwcm90
bywgcmVnVDEpOwogCi0gICAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSwgYmFzZVZhbCwgYW5kIHByb3Rv
IGFyZSBjZWxscy4KKyAgICAvLyBDaGVjayB0aGF0IHByb3RvIGFyZSBjZWxscy4gIGJhc2VWYWwg
bXVzdCBiZSBhIGNlbGwgLSB0aGlzIGlzIGNoZWNrZWQgYnkgb3BfY2hlY2tfaGFzX2luc3RhbmNl
LgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbCh2YWx1ZSk7Ci0gICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2VWYWwpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChwcm90byk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2Jq
ZWN0CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X3N0cnVjdHVyZSkpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mby5tX3R5
cGUpKSwgSW1tMzIoT2JqZWN0VHlwZSkpKTsKLSAgICAKKworICAgIC8vIEZpeG1lOiB0aGlzIGNo
ZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2UgdGhlIEpTQyBBUEkgYWxsb3dzIEhhc0luc3RhbmNl
IHRvIGJlIG92ZXJyaWRkZW47IHdlIHNob3VsZCBkZXByZWNhdGUgdGhpcy4KICAgICAvLyBDaGVj
ayB0aGF0IGJhc2VWYWwgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpKSwg
cmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAs
IE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8ubV9mbGFncykpLCBJbW0zMihJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwpAQCAtNTU5LDYgKzU3MywxOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdFN0b3JlQm9vbChk
c3QsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX2hhc19pbnN0YW5j
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworCisgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwg
YmFzZVZhbCk7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworCisgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX2NoZWNrX2hhc19pbnN0YW5jZSk7CisgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoYmFzZVZhbCk7CisgICAgc3R1YkNhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIHVuc2lnbmVkIGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkBAIC01NjcsNyArNTkzLDYgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1YwogICAgIHVuc2lnbmVkIHBy
b3RvID0gY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZDsKIAogICAgIGxpbmtTbG93Q2Fz
ZUlmTm90SlNDZWxsKGl0ZXIsIHZhbHVlKTsKLSAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChp
dGVyLCBiYXNlVmFsKTsKICAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBwcm90byk7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNiArMzc4LDIw
IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24KICAgICBKSVRTdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfbmV3X29iamVjdCkuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWduZWQgYmFzZVZhbCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGJhc2VWYWwsIHJlZ1QwKTsKKworICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCBpcyBh
IGNlbGwuCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVmFsKTsK
KworICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNlJy4KKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0
dXJlKSksIHJlZ1QwKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNz
KHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1fZmxhZ3MpKSwg
SW1tMzIoSW1wbGVtZW50c0hhc0luc3RhbmNlKSkpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgdW5zaWdu
ZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTM5MSwxNSArNDA1
LDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2VWYWwsIHJlZ1QwKTsKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHByb3RvLCByZWdUMSk7CiAKLSAgICAvLyBDaGVjayB0aGF0IGJhc2VWYWwgJiBwcm90
byBhcmUgY2VsbHMuCisgICAgLy8gQ2hlY2sgdGhhdCBwcm90byBhcmUgY2VsbHMuICBiYXNlVmFs
IG11c3QgYmUgYSBjZWxsIC0gdGhpcyBpcyBjaGVja2VkIGJ5IG9wX2NoZWNrX2hhc19pbnN0YW5j
ZS4KICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDIsIHZhbHVlKTsKLSAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBw
cm90b3R5cGUgaXMgYW4gb2JqZWN0CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSkpLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMywgT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZSwgbV90eXBlSW5mby5tX3R5cGUpKSwgSW1tMzIoT2JqZWN0VHlwZSkpKTsKICAgICAKKyAgICAv
LyBGaXhtZTogdGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHRoZSBKU0MgQVBJIGFs
bG93cyBIYXNJbnN0YW5jZSB0byBiZSBvdmVycmlkZGVuOyB3ZSBzaG91bGQgZGVwcmVjYXRlIHRo
aXMuCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlJy4KICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIE9CSkVDVF9PRkZTRVRPRihKU0NlbGws
IG1fc3RydWN0dXJlKSksIHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvLm1f
ZmxhZ3MpKSwgSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKQEAgLTE0ODAs
NiArMTQ5NCwxNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbnN0cmljdGVxKEluc3RydWN0CiAg
ICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQor
eworICAgIHVuc2lnbmVkIGJhc2VWYWwgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworCisgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZhbCk7CisgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOworICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9j
aGVja19oYXNfaW5zdGFuY2UpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGJhc2VWYWwsIHJl
Z1QyKTsKKyAgICBzdHViQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9p
bnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTE0ODgsNyArMTUxMyw2IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbnN0YW5jZW9mKEluc3RydWMKICAgICB1bnNpZ25lZCBwcm90byA9IGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7CiAKICAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChpdGVyLCB2YWx1ZSk7Ci0gICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZVZh
bCk7CiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgcHJvdG8pOwogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0MSw2ICsxODQxLDIzIEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KIAogI2VuZGlmIC8vIEVOQUJMRShKSVRfT1BU
SU1JWkVfUFJPUEVSVFlfQUNDRVNTKQogCitERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9j
aGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJh
bWUpOworCisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOworCisg
ICAgLy8gRUNNQS0yNjIgMTUuMy41LjM6CisgICAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGVpdGhl
ciBpZiBiYXNlVmFsIGlzIG5vdCBhbiBvYmplY3QsIG9yIGlmIGl0IGRvZXMgbm90IGltcGxlbWVu
dCAnSGFzSW5zdGFuY2UnIChpLmUuIGlzIGEgZnVuY3Rpb24pLgorI2lmbmRlZiBOREVCVUcKKyAg
ICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZh
bC5pc09iamVjdCgpIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIHN0
YWNrRnJhbWUuZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlSW52YWxpZFBhcmFtRXJyb3Io
Y2FsbEZyYW1lLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpOworICAgIFZNX1RIUk9XX0VYQ0VQVElP
Tl9BVF9FTkQoKTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9w
X2luc3RhbmNlb2YpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBpbnQgSklUX1NUVUIgY3RpX29wX2xvb3BfaWZfbGVzc2VxKFNUVUJfQVJH
U19ERUNMQVJBVElPTik7CiAgICAgaW50IEpJVF9TVFVCIGN0aV90aW1lb3V0X2NoZWNrKFNUVUJf
QVJHU19ERUNMQVJBVElPTik7CiAgICAgaW50IEpJVF9TVFVCIGN0aV9oYXNfcHJvcGVydHkoU1RV
Ql9BUkdTX0RFQ0xBUkFUSU9OKTsKKyAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF9jaGVja19oYXNf
aW5zdGFuY2UoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9v
cF9kZWJ1ZyhTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29w
X2VuZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX2pt
cF9zY29wZXMoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJpbmcoRXhlY1N0
YXRlKikgY29uc3QgeyByZXR1cm4gIkphdmFTY3JpcHQgZXhlY3V0aW9uIGV4Y2VlZGVkIHRpbWVv
dXQuIjsgfQogfTsKIAotSlNWYWx1ZSBjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCitKU09iamVjdCogY3JlYXRlSW50ZXJydXB0ZWRF
eGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogICAgIHJldHVy
biBuZXcgKGdsb2JhbERhdGEpIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7
CiB9CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVTdHJpbmcgdG9TdHJp
bmcoRXhlY1N0YXRlKikgY29uc3QgeyByZXR1cm4gIkphdmFTY3JpcHQgZXhlY3V0aW9uIHRlcm1p
bmF0ZWQuIjsgfQogfTsKIAotSlNWYWx1ZSBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK0pTT2JqZWN0KiBjcmVhdGVUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICByZXR1
cm4gbmV3IChnbG9iYWxEYXRhKSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7
CiB9CkBAIC04NSw3ICs4NSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
SlNHbG8KICAgICByZXR1cm4gY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJNYXhpbXVt
IGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC4iKTsKIH0KIAotSlNWYWx1ZSBjcmVhdGVVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CitKU09iamVjdCogY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVTdHJpbmcgbWVzc2FnZShtYWtlVVN0
cmluZygiQ2FuJ3QgZmluZCB2YXJpYWJsZTogIiwgaWRlbnQudXN0cmluZygpKSk7CiAgICAgcmV0
dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIG1lc3NhZ2UpOwpAQCAtMTA5LDcgKzEwOSw3
IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihFeGUKICAgICByZXR1cm4g
ZXhjZXB0aW9uOwogfQogCi1KU1ZhbHVlIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK0pTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVVN0cmluZyBlcnJvck1l
c3NhZ2UgPSBtYWtlVVN0cmluZygiJyIsIHZhbHVlLnRvU3RyaW5nKGV4ZWMpLCAiJyBpcyBub3Qg
YSBmdW5jdGlvbiIpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgZXJyb3JNZXNzYWdlKTsKQEAgLTExOCwyNSArMTE4LDggQEAgSlNWYWx1ZSBjcmVhdGVO
b3RBRnVuY3Rpb25FcnJvcihFeGVjU3RhdAogICAgIHJldHVybiBleGNlcHRpb247CiB9CiAKLUpT
Tm90QW5PYmplY3RFcnJvclN0dWIqIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKEV4ZWNTdGF0
ZSogZXhlYywgYm9vbCBpc051bGwpCitKU09iamVjdCogY3JlYXRlTm90QW5PYmplY3RFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNOb3RBbk9iamVjdEVycm9yU3R1YihleGVjLCBpc051bGwpOwotfQotCi1KU09iamVjdCogY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTTm90QW5PYmplY3RFcnJvclN0
dWIqIGVycm9yLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
Ci17Ci0gICAgLy8gQm90aCBvcF9jcmVhdGVfdGhpcyBhbmQgb3BfaW5zdGFuY2VvZiByZXF1aXJl
IGEgdXNlIG9mIG9wX2dldF9ieV9pZCB0byBnZXQKLSAgICAvLyB0aGUgcHJvdG90eXBlIHByb3Bl
cnR5IGZyb20gYW4gb2JqZWN0LiBUaGUgZXhjZXB0aW9uIG1lc3NhZ2VzIGZvciBleGNlcHRpb25z
Ci0gICAgLy8gdGhyb3duIGJ5IHRoZXNlIGluc3RhbmNlcyBvcF9nZXRfYnlfaWQgbmVlZCB0byBy
ZWZsZWN0IHRoaXMuCi0gICAgT3Bjb2RlSUQgZm9sbG93aW5nT3Bjb2RlSUQ7Ci0gICAgaWYgKGNv
ZGVCbG9jay0+Z2V0QnlJZEV4Y2VwdGlvbkluZm9Gb3JCeXRlY29kZU9mZnNldChleGVjLCBieXRl
Y29kZU9mZnNldCwgZm9sbG93aW5nT3Bjb2RlSUQpKSB7Ci0gICAgICAgIEFTU0VSVChmb2xsb3dp
bmdPcGNvZGVJRCA9PSBvcF9jcmVhdGVfdGhpcyB8fCBmb2xsb3dpbmdPcGNvZGVJRCA9PSBvcF9p
bnN0YW5jZW9mKTsKLSAgICAgICAgaWYgKGZvbGxvd2luZ09wY29kZUlEID09IG9wX2NyZWF0ZV90
aGlzKQotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMs
IGVycm9yLT5pc051bGwoKSA/IGpzTnVsbCgpIDoganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJl
dHVybiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGVycm9yLT5p
c051bGwoKSA/IGpzTnVsbCgpIDoganNVbmRlZmluZWQoKSk7Ci0gICAgfQotCi0gICAgSlNWYWx1
ZSB2YWx1ZSA9IGVycm9yLT5pc051bGwoKSA/IGpzTnVsbCgpIDoganNVbmRlZmluZWQoKTsKICAg
ICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VVU3RyaW5nKCInIiwgdmFsdWUudG9TdHJpbmco
ZXhlYyksICInIGlzIG5vdCBhbiBvYmplY3QiKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0g
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlv
bi0+aXNFcnJvckluc3RhbmNlKCkpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE5ICs0MywxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBOb2RlOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsK
ICAgICAKLSAgICBKU1ZhbHVlIGNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEpT
R2xvYmFsRGF0YSopOwotICAgIEpTVmFsdWUgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbihKU0dsb2JhbERhdGEqKTsKKyAgICBKU09iamVjdCogY3JlYXRlSW50ZXJydXB0ZWRFeGVj
dXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CisgICAgSlNPYmplY3QqIGNyZWF0ZVRlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oSlNHbG9iYWxEYXRhKik7CiAgICAgSlNPYmplY3QqIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKICAgICBKU09iamVjdCogY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKEpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgSlNWYWx1ZSBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAg
ICBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiBjcmVhdGVOb3RBbk9iamVjdEVycm9yU3R1YihFeGVj
U3RhdGUqLCBib29sIGlzTnVsbCk7CisgICAgSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgIEpTT2JqZWN0KiBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgIEpTT2JqZWN0
KiBjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBvcCwgSlNW
YWx1ZSk7CiAgICAgSlNPYmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwotICAgIEpTVmFsdWUgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoRXhlY1N0
YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4
ZWNTdGF0ZSosIEpTVmFsdWUpOwogICAgIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJpbmcmKTsKIAotICAgIEpTT2Jq
ZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEV4ZWNTdGF0ZSosIEpTTm90QW5PYmplY3RFcnJv
clN0dWIqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgQ29kZUJsb2NrKik7Ci0KICAgICBKU09i
amVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSopOwogICAgIEpTT2JqZWN0KiB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKIApJbmRleDogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsx
MjcsNiBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBz
dGF0aWNTY29wZVN0cnVjdHVyZShKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
anNOdWxsKCkpKQogICAgICwgc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoU3RyaWN0RXZh
bEFjdGl2YXRpb246OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCiAgICAgLCBzdHJpbmdTdHJ1
Y3R1cmUoSlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwoKSkpCi0gICAgLCBub3RBbk9i
amVjdEVycm9yU3R1YlN0cnVjdHVyZShKU05vdEFuT2JqZWN0RXJyb3JTdHViOjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpKQogICAgICwgbm90QW5PYmplY3RTdHJ1Y3R1cmUoSlNOb3RBbk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSkKICAgICAsIHByb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZShqc051bGwo
KSkpCiAgICAgLCBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1
Y3R1cmUoanNOdWxsKCkpKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CShyZXZpc2lvbiA3MjEyMykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RhdGljU2NvcGVTdHJ1Y3R1cmU7CiAgICAgICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlOwogICAgICAgICBS
ZWZQdHI8U3RydWN0dXJlPiBzdHJpbmdTdHJ1Y3R1cmU7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IG5vdEFuT2JqZWN0RXJyb3JTdHViU3RydWN0dXJlOwogICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IGdl
dHRlclNldHRlclN0cnVjdHVyZTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RB
bk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFu
T2JqZWN0LmNwcAkocmV2aXNpb24gNzIxMjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Tm90QW5PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5MSArMzksODQgQEAgQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChKU05vdEFuT2JqZWN0KQogLy8gSlNWYWx1ZSBtZXRob2RzCiBK
U1ZhbHVlIEpTTm90QW5PYmplY3Q6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSkgY29uc3QKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMt
PmhhZEV4Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0aW9uKTsKLSAg
ICByZXR1cm4gbV9leGNlcHRpb247CisgICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRF
eGNlcHRpb24oKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKDApOwogfQogCiBib29sIEpTTm90QW5P
YmplY3Q6OmdldFByaW1pdGl2ZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSYsIEpTVmFs
dWUmKQogewotICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYg
ZXhlYy0+ZXhjZXB0aW9uKCkgPT0gbV9leGNlcHRpb24pOworICAgIEFTU0VSVF9VTlVTRUQoZXhl
YywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBK
U05vdEFuT2JqZWN0Ojp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIEFT
U0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgZXhlYy0+ZXhjZXB0aW9u
KCkgPT0gbV9leGNlcHRpb24pOworICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogZG91YmxlIEpTTm90QW5PYmplY3Q6
OnRvTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV4
ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0
aW9uKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAg
ICByZXR1cm4gTmFOOwogfQogCiBVU3RyaW5nIEpTTm90QW5PYmplY3Q6OnRvU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4
Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0aW9uKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICByZXR1cm4gIiI7CiB9
CiAKIEpTT2JqZWN0KiBKU05vdEFuT2JqZWN0Ojp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7Ci0gICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSAmJiBl
eGVjLT5leGNlcHRpb24oKSA9PSBtX2V4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIG1fZXhjZXB0aW9u
OwotfQotCi0vLyBNYXJraW5nCi12b2lkIEpTTm90QW5PYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJr
U3RhY2smIG1hcmtTdGFjaykKLXsKLSAgICBKU09iamVjdDo6bWFya0NoaWxkcmVuKG1hcmtTdGFj
ayk7Ci0gICAgbWFya1N0YWNrLmFwcGVuZChtX2V4Y2VwdGlvbik7CisgICAgQVNTRVJUX1VOVVNF
RChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNO
b3RBbk9iamVjdCo+KHRoaXMpOwogfQogCiAvLyBKU09iamVjdCBtZXRob2RzCiBib29sIEpTTm90
QW5PYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eVNsb3QmKQogewotICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+
aGFkRXhjZXB0aW9uKCkgJiYgZXhlYy0+ZXhjZXB0aW9uKCkgPT0gbV9leGNlcHRpb24pOworICAg
IEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogYm9vbCBKU05vdEFuT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCwgUHJvcGVydHlTbG90JikKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhj
ZXB0aW9uKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNOb3RBbk9iamVjdDo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5
RGVzY3JpcHRvciYpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRp
b24oKSAmJiBleGVjLT5leGNlcHRpb24oKSA9PSBtX2V4Y2VwdGlvbik7CisgICAgQVNTRVJUX1VO
VVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIEpTTm90QW5PYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImICwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV4
ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYmIGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0
aW9uKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0K
IAogdm9pZCBKU05vdEFuT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNW
YWx1ZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV4ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpICYm
IGV4ZWMtPmV4Y2VwdGlvbigpID09IG1fZXhjZXB0aW9uKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4
ZWMsIGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIH0KIAogYm9vbCBKU05vdEFuT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImKQogewotICAgIEFT
U0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgZXhlYy0+ZXhjZXB0aW9u
KCkgPT0gbV9leGNlcHRpb24pOworICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU05vdEFuT2JqZWN0Ojpk
ZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkKQogewotICAgIEFTU0VSVF9V
TlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9uKCkgJiYgZXhlYy0+ZXhjZXB0aW9uKCkgPT0g
bV9leGNlcHRpb24pOworICAgIEFTU0VSVF9VTlVTRUQoZXhlYywgZXhlYy0+aGFkRXhjZXB0aW9u
KCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBKU05vdEFuT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24o
KSAmJiBleGVjLT5leGNlcHRpb24oKSA9PSBtX2V4Y2VwdGlvbik7CisgICAgQVNTRVJUX1VOVVNF
RChleGVjLCBleGVjLT5oYWRFeGNlcHRpb24oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHJldmlzaW9uIDcyMTIz
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDMwICszMywxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEpT
Tm90QW5PYmplY3RFcnJvclN0dWIgOiBwdWJsaWMgSlNPYmplY3QgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgSlNOb3RBbk9iamVjdEVycm9yU3R1YihFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgaXNOdWxs
KQotICAgICAgICAgICAgOiBKU09iamVjdChleGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RF
cnJvclN0dWJTdHJ1Y3R1cmUpCi0gICAgICAgICAgICAsIG1faXNOdWxsKGlzTnVsbCkKLSAgICAg
ICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X2lzTnVsbDsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzTm90QW5P
YmplY3RFcnJvclN0dWIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgYm9vbCBt
X2lzTnVsbDsKLSAgICB9OwotICAgIAogICAgIC8vIFRoaXMgdW5ob2x5IGNsYXNzIGlzIHVzZWQg
dG8gYWxsb3cgdXMgdG8gYXZvaWQgbXVsdGlwbGUgZXhjZXB0aW9uIGNoZWNrcwogICAgIC8vIGlu
IGNlcnRhaW4gU3F1aXJyZWxGaXNoIGJ5dGVjb2RlcyAtLSBlZmZlY3RpdmVseSBpdCBqdXN0IHNp
bGVudGx5IGNvbnN1bWVzCiAgICAgLy8gYW55IG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uIHRoZSBy
ZXN1bHQgb2YgYSBmYWlsZWQgdG9PYmplY3QgY2FsbC4KICAgICBjbGFzcyBKU05vdEFuT2JqZWN0
IDogcHVibGljIEpTT2JqZWN0IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTm90QW5PYmplY3Qo
RXhlY1N0YXRlKiBleGVjLCBKU05vdEFuT2JqZWN0RXJyb3JTdHViKiBleGNlcHRpb24pCisgICAg
ICAgIEpTTm90QW5PYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgOiBKU09iamVj
dChleGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RTdHJ1Y3R1cmUpCi0gICAgICAgICAgICAs
IG1fZXhjZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTY3LDcg
KzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgcHJpdmF0ZToKICAgICAgICAgCi0gICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3Bl
cnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAK
ICAgICAgICAgLy8gSlNWYWx1ZSBtZXRob2RzCiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSB0b1By
aW1pdGl2ZShFeGVjU3RhdGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdDsKQEAgLTc3
LDkgKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0
cmluZyhFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogdG9PYmpl
Y3QoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICAgICAgLy8gTWFya2luZwotICAgICAgICB2aXJ0
dWFsIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYpOwotCiAgICAgICAgIC8vIEpTT2JqZWN0
IG1ldGhvZHMKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CkBAIC05Miw4ICs3Miw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwg
dW5zaWduZWQgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlID0gRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Ci0KLSAgICAgICAgSlNOb3RBbk9i
amVjdEVycm9yU3R1YiogbV9leGNlcHRpb247CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiA3MjEyMykKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcg
KzIwOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHbG9iYWxP
YmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNW
YXJpYWJsZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNOb3RBbk9iamVjdEVycm9yU3R1YigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmljdE1vZGVGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2Uo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5jcHAJKHJldmlzaW9uIDcyMTIzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVl
Ojp0b09iamVjdFNsb3dDYXNlKEV4ZWMKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihl
eGVjLCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc1RydWUoKSB8fCBpc0ZhbHNlKCkpCiAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgYXNWYWx1
ZSgpKTsKKwogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICBKU05vdEFuT2Jq
ZWN0RXJyb3JTdHViKiBleGNlcHRpb24gPSBjcmVhdGVOb3RBbk9iamVjdEVycm9yU3R1YihleGVj
LCBpc051bGwoKSk7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBleGNlcHRpb24pOwotICAgIHJldHVy
biBuZXcgKGV4ZWMpIEpTTm90QW5PYmplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICByZXR1
cm4gbmV3IChleGVjKSBKU05vdEFuT2JqZWN0KGV4ZWMpOwogfQogCiBKU09iamVjdCogSlNWYWx1
ZTo6dG9UaGlzT2JqZWN0U2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtODcsMTAg
Kzg3LDEwIEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplT2JqZWN0KEV4ZWMKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdE51bWJlcihleGVjLCBhc1ZhbHVlKCkpOwogICAgIGlmIChpc0Jv
b2xlYW4oKSkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRlQm9v
bGVhbihleGVjLCBhc1ZhbHVlKCkpOwotICAgIAotICAgIEpTTm90QW5PYmplY3RFcnJvclN0dWIq
IGV4Y2VwdGlvbiA9IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3JTdHViKGV4ZWMsIGlzTnVsbCgpKTsK
LSAgICB0aHJvd0Vycm9yKGV4ZWMsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNOb3RBbk9iamVjdChleGVjLCBleGNlcHRpb24pOworCisgICAgQVNTRVJUKGlzVW5kZWZpbmVk
T3JOdWxsKCkpOworICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90QW5PYmplY3RFcnJvcihl
eGVjLCAqdGhpcykpOworICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTTm90QW5PYmplY3QoZXhlYyk7
CiB9CiAKIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSog
ZXhlYykgY29uc3QKQEAgLTEwMSw5ICsxMDEsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhl
c2l6ZVByb3RvdHlwZShFCiAgICAgaWYgKGlzQm9vbGVhbigpKQogICAgICAgICByZXR1cm4gZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5ib29sZWFuUHJvdG90eXBlKCk7CiAKLSAgICBKU05v
dEFuT2JqZWN0RXJyb3JTdHViKiBleGNlcHRpb24gPSBjcmVhdGVOb3RBbk9iamVjdEVycm9yU3R1
YihleGVjLCBpc051bGwoKSk7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBleGNlcHRpb24pOwotICAg
IHJldHVybiBuZXcgKGV4ZWMpIEpTTm90QW5PYmplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICBB
U1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7CisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNO
b3RBbk9iamVjdChleGVjKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDcyMTI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMTEtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJ1ZyA0OTYwNiAtIGluc3RhbmNlb2Ygc2hvdWxkIG9ubHkgZ2V0IHRoZSBwcm90b3R5cGUgcHJv
cGVydHkgaWYgdGhlIFJIUyBvcGVyYW5kIGltcGxlbWVudHMgSGFzSW5zdGFuY2UKKworICAgICAg
ICAqIGZhc3QvanMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC1leHBlY3RlZC50eHQ6IENvcGll
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1vcGVyYXRvci1leHBlY3RlZC50
eHQuCisgICAgICAgICogZmFzdC9qcy9pbnN0YW5jZW9mLVhNTEh0dHBSZXF1ZXN0Lmh0bWw6IENv
cGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1vcGVyYXRvci5odG1sLgor
ICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2luc3RhbmNlb2YtWE1MSHR0cFJlcXVlc3Qu
anM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2luc3RhbmNl
b2Ytb3BlcmF0b3IuanMuCisgICAgICAgICAgICAtIHJlbmFtZWQgZXhpc3RpbmcgdGVzdGNhc2U7
IHRoZXNlIHJlYWxseSB0ZXN0IFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMsIHJhdGhlciB0aGFuIHRo
ZSBpbnN0YW5jZW9mIG9wZXJhdG9yLgorCisgICAgICAgICogZmFzdC9qcy9pbnN0YW5jZW9mLW9w
ZXJhdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9pbnN0
YW5jZW9mLW9wZXJhdG9yLmpzOgorICAgICAgICAgICAgLSBhZGRlZCB0ZXN0IGNhc2UgZm9yOiBq
YXZhc2NyaXB0OiAoe30gaW5zdGFuY2VvZiB7IGdldCBwcm90b3R5cGUoKXsgYWxlcnQoIkVycm9y
ISIpOyB9IH0pCisKIDIwMTAtMTEtMTYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgUXQgc3BlY2lmaWMgZXhwZWN0ZWQg
cmVzdWx0cyBhZnRlciByNzIxMTYuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2luc3RhbmNl
b2YtWE1MSHR0cFJlcXVlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDcyMTIzKQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2pzL2luc3RhbmNlb2Ytb3BlcmF0b3ItZXhw
ZWN0ZWQudHh0OjcyMTIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9pbnN0YW5jZW9mLVhNTEh0
dHBSZXF1ZXN0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitp
bnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IHRlc3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgKG5ldyBBdWRpbygpKSBpbnN0YW5jZW9mIEF1ZGlvIGlzIHRydWUKK1BBU1Mg
KG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIEF1ZGlvIGlzIGZhbHNlCitQQVNTIChuZXcgSW1hZ2Uo
KSkgaW5zdGFuY2VvZiBJbWFnZSBpcyB0cnVlCitQQVNTIChuZXcgQXJyYXkoKSkgaW5zdGFuY2Vv
ZiBJbWFnZSBpcyBmYWxzZQorUEFTUyAobmV3IE9wdGlvbigpKSBpbnN0YW5jZW9mIE9wdGlvbiBp
cyB0cnVlCitQQVNTIChuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBPcHRpb24gaXMgZmFsc2UKK1BB
U1MgKG5ldyBXZWJLaXRDU1NNYXRyaXgoKSkgaW5zdGFuY2VvZiBXZWJLaXRDU1NNYXRyaXggaXMg
dHJ1ZQorUEFTUyAobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgV2ViS2l0Q1NTTWF0cml4IGlzIGZh
bHNlCitQQVNTIChuZXcgV2ViS2l0UG9pbnQoKSkgaW5zdGFuY2VvZiBXZWJLaXRQb2ludCBpcyB0
cnVlCitQQVNTIChuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBXZWJLaXRQb2ludCBpcyBmYWxzZQor
UEFTUyAobmV3IFdvcmtlcignaW5zdGFuY2VvZi1vcGVyYXRvci1kdW1teS13b3JrZXIuanMnKSkg
aW5zdGFuY2VvZiBXb3JrZXIgaXMgdHJ1ZQorUEFTUyAobmV3IEFycmF5KCkpIGluc3RhbmNlb2Yg
V29ya2VyIGlzIGZhbHNlCitQQVNTIChuZXcgWE1MSHR0cFJlcXVlc3QoKSkgaW5zdGFuY2VvZiBY
TUxIdHRwUmVxdWVzdCBpcyB0cnVlCitQQVNTIChuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBYTUxI
dHRwUmVxdWVzdCBpcyBmYWxzZQorUEFTUyAobmV3IFhTTFRQcm9jZXNzb3IoKSkgaW5zdGFuY2Vv
ZiBYU0xUUHJvY2Vzc29yIGlzIHRydWUKK1BBU1MgKG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIFhT
TFRQcm9jZXNzb3IgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2luc3RhbmNlb2YtWE1M
SHR0cFJlcXVlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2luc3Rh
bmNlb2YtWE1MSHR0cFJlcXVlc3QuaHRtbAkocmV2aXNpb24gNzIxMjMpCShmcm9tIExheW91dFRl
c3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1vcGVyYXRvci5odG1sOjcyMTIzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9pbnN0YW5jZW9mLVhNTEh0dHBSZXF1ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9pbnN0YW5jZW9mLW9wZXJhdG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC5odG1s
CShyZXZpc2lvbiA3MjEyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMvaW5zdGFuY2VvZi1YTUxI
dHRwUmVxdWVzdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogPGJvZHk+CiA8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9pbnN0YW5jZW9mLW9wZXJhdG9yLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2luc3RhbmNlb2Yt
b3BlcmF0b3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
aW5zdGFuY2VvZi1vcGVyYXRvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMTIzKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9pbnN0YW5jZW9mLW9wZXJhdG9yLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyNCArMSw5IEBACi1pbnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IHRlc3QK
K2luc3RhbmNlb2YgdGVzdAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyAo
bmV3IEF1ZGlvKCkpIGluc3RhbmNlb2YgQXVkaW8gaXMgdHJ1ZQotUEFTUyAobmV3IEFycmF5KCkp
IGluc3RhbmNlb2YgQXVkaW8gaXMgZmFsc2UKLVBBU1MgKG5ldyBJbWFnZSgpKSBpbnN0YW5jZW9m
IEltYWdlIGlzIHRydWUKLVBBU1MgKG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIEltYWdlIGlzIGZh
bHNlCi1QQVNTIChuZXcgT3B0aW9uKCkpIGluc3RhbmNlb2YgT3B0aW9uIGlzIHRydWUKLVBBU1Mg
KG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIE9wdGlvbiBpcyBmYWxzZQotUEFTUyAobmV3IFdlYktp
dENTU01hdHJpeCgpKSBpbnN0YW5jZW9mIFdlYktpdENTU01hdHJpeCBpcyB0cnVlCi1QQVNTIChu
ZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBXZWJLaXRDU1NNYXRyaXggaXMgZmFsc2UKLVBBU1MgKG5l
dyBXZWJLaXRQb2ludCgpKSBpbnN0YW5jZW9mIFdlYktpdFBvaW50IGlzIHRydWUKLVBBU1MgKG5l
dyBBcnJheSgpKSBpbnN0YW5jZW9mIFdlYktpdFBvaW50IGlzIGZhbHNlCi1QQVNTIChuZXcgV29y
a2VyKCdpbnN0YW5jZW9mLW9wZXJhdG9yLWR1bW15LXdvcmtlci5qcycpKSBpbnN0YW5jZW9mIFdv
cmtlciBpcyB0cnVlCi1QQVNTIChuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBXb3JrZXIgaXMgZmFs
c2UKLVBBU1MgKG5ldyBYTUxIdHRwUmVxdWVzdCgpKSBpbnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0
IGlzIHRydWUKLVBBU1MgKG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IGlz
IGZhbHNlCi1QQVNTIChuZXcgWFNMVFByb2Nlc3NvcigpKSBpbnN0YW5jZW9mIFhTTFRQcm9jZXNz
b3IgaXMgdHJ1ZQotUEFTUyAobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgWFNMVFByb2Nlc3NvciBp
cyBmYWxzZQorUEFTUyBnZXR0ZXJDYWxsZWQgaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvaW5zdGFuY2VvZi1YTUxIdHRwUmVxdWVzdC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9pbnN0YW5jZW9mLVhNTEh0dHBSZXF1ZXN0
LmpzCShyZXZpc2lvbiA3MjEyMykJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVz
dHMvaW5zdGFuY2VvZi1vcGVyYXRvci5qczo3MjEyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL2luc3RhbmNlb2YtWE1MSHR0cFJlcXVlc3QuanMJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMyBAQAorZGVzY3JpcHRpb24oCisiaW5zdGFuY2VvZiBYTUxIdHRwUmVxdWVz
dCB0ZXN0IgorKTsKKworc2hvdWxkQmVUcnVlKCIobmV3IEF1ZGlvKCkpIGluc3RhbmNlb2YgQXVk
aW8iKTsKK3Nob3VsZEJlRmFsc2UoIihuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBBdWRpbyIpOwor
CitzaG91bGRCZVRydWUoIihuZXcgSW1hZ2UoKSkgaW5zdGFuY2VvZiBJbWFnZSIpOworc2hvdWxk
QmVGYWxzZSgiKG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIEltYWdlIik7CisKKy8vIE1lc3NhZ2VD
aGFubmVsIGlzIG5vdCBhdmFpbGFibGUgeWV0LgorLy9zaG91bGRCZVRydWUoIihuZXcgTWVzc2Fn
ZUNoYW5uZWwoKSkgaW5zdGFuY2VvZiBNZXNzYWdlQ2hhbm5lbCIpOworLy9zaG91bGRCZUZhbHNl
KCIobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgTWVzc2FnZUNoYW5uZWwiKTsKKworc2hvdWxkQmVU
cnVlKCIobmV3IE9wdGlvbigpKSBpbnN0YW5jZW9mIE9wdGlvbiIpOworc2hvdWxkQmVGYWxzZSgi
KG5ldyBBcnJheSgpKSBpbnN0YW5jZW9mIE9wdGlvbiIpOworCitzaG91bGRCZVRydWUoIihuZXcg
V2ViS2l0Q1NTTWF0cml4KCkpIGluc3RhbmNlb2YgV2ViS2l0Q1NTTWF0cml4Iik7CitzaG91bGRC
ZUZhbHNlKCIobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgV2ViS2l0Q1NTTWF0cml4Iik7CisKK3No
b3VsZEJlVHJ1ZSgiKG5ldyBXZWJLaXRQb2ludCgpKSBpbnN0YW5jZW9mIFdlYktpdFBvaW50Iik7
CitzaG91bGRCZUZhbHNlKCIobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgV2ViS2l0UG9pbnQiKTsK
Kworc2hvdWxkQmVUcnVlKCIobmV3IFdvcmtlcignaW5zdGFuY2VvZi1vcGVyYXRvci1kdW1teS13
b3JrZXIuanMnKSkgaW5zdGFuY2VvZiBXb3JrZXIiKTsKK3Nob3VsZEJlRmFsc2UoIihuZXcgQXJy
YXkoKSkgaW5zdGFuY2VvZiBXb3JrZXIiKTsKKworc2hvdWxkQmVUcnVlKCIobmV3IFhNTEh0dHBS
ZXF1ZXN0KCkpIGluc3RhbmNlb2YgWE1MSHR0cFJlcXVlc3QiKQorc2hvdWxkQmVGYWxzZSgiKG5l
dyBBcnJheSgpKSBpbnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IikKKworc2hvdWxkQmVUcnVlKCIo
bmV3IFhTTFRQcm9jZXNzb3IoKSkgaW5zdGFuY2VvZiBYU0xUUHJvY2Vzc29yIik7CitzaG91bGRC
ZUZhbHNlKCIobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgWFNMVFByb2Nlc3NvciIpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2Ny
aXB0LXRlc3RzL2luc3RhbmNlb2Ytb3BlcmF0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvaW5zdGFuY2VvZi1vcGVyYXRvci5qcwkocmV2aXNpb24g
NzIxMjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9pbnN0YW5jZW9mLW9w
ZXJhdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzICsxLDEyIEBACiBkZXNjcmlwdGlvbigK
LSJpbnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IHRlc3QiCisiaW5zdGFuY2VvZiB0ZXN0IgogKTsK
IAotc2hvdWxkQmVUcnVlKCIobmV3IEF1ZGlvKCkpIGluc3RhbmNlb2YgQXVkaW8iKTsKLXNob3Vs
ZEJlRmFsc2UoIihuZXcgQXJyYXkoKSkgaW5zdGFuY2VvZiBBdWRpbyIpOwotCi1zaG91bGRCZVRy
dWUoIihuZXcgSW1hZ2UoKSkgaW5zdGFuY2VvZiBJbWFnZSIpOwotc2hvdWxkQmVGYWxzZSgiKG5l
dyBBcnJheSgpKSBpbnN0YW5jZW9mIEltYWdlIik7Ci0KLS8vIE1lc3NhZ2VDaGFubmVsIGlzIG5v
dCBhdmFpbGFibGUgeWV0LgotLy9zaG91bGRCZVRydWUoIihuZXcgTWVzc2FnZUNoYW5uZWwoKSkg
aW5zdGFuY2VvZiBNZXNzYWdlQ2hhbm5lbCIpOwotLy9zaG91bGRCZUZhbHNlKCIobmV3IEFycmF5
KCkpIGluc3RhbmNlb2YgTWVzc2FnZUNoYW5uZWwiKTsKLQotc2hvdWxkQmVUcnVlKCIobmV3IE9w
dGlvbigpKSBpbnN0YW5jZW9mIE9wdGlvbiIpOwotc2hvdWxkQmVGYWxzZSgiKG5ldyBBcnJheSgp
KSBpbnN0YW5jZW9mIE9wdGlvbiIpOwotCi1zaG91bGRCZVRydWUoIihuZXcgV2ViS2l0Q1NTTWF0
cml4KCkpIGluc3RhbmNlb2YgV2ViS2l0Q1NTTWF0cml4Iik7Ci1zaG91bGRCZUZhbHNlKCIobmV3
IEFycmF5KCkpIGluc3RhbmNlb2YgV2ViS2l0Q1NTTWF0cml4Iik7Ci0KLXNob3VsZEJlVHJ1ZSgi
KG5ldyBXZWJLaXRQb2ludCgpKSBpbnN0YW5jZW9mIFdlYktpdFBvaW50Iik7Ci1zaG91bGRCZUZh
bHNlKCIobmV3IEFycmF5KCkpIGluc3RhbmNlb2YgV2ViS2l0UG9pbnQiKTsKLQotc2hvdWxkQmVU
cnVlKCIobmV3IFdvcmtlcignaW5zdGFuY2VvZi1vcGVyYXRvci1kdW1teS13b3JrZXIuanMnKSkg
aW5zdGFuY2VvZiBXb3JrZXIiKTsKLXNob3VsZEJlRmFsc2UoIihuZXcgQXJyYXkoKSkgaW5zdGFu
Y2VvZiBXb3JrZXIiKTsKLQotc2hvdWxkQmVUcnVlKCIobmV3IFhNTEh0dHBSZXF1ZXN0KCkpIGlu
c3RhbmNlb2YgWE1MSHR0cFJlcXVlc3QiKQotc2hvdWxkQmVGYWxzZSgiKG5ldyBBcnJheSgpKSBp
bnN0YW5jZW9mIFhNTEh0dHBSZXF1ZXN0IikKLQotc2hvdWxkQmVUcnVlKCIobmV3IFhTTFRQcm9j
ZXNzb3IoKSkgaW5zdGFuY2VvZiBYU0xUUHJvY2Vzc29yIik7Ci1zaG91bGRCZUZhbHNlKCIobmV3
IEFycmF5KCkpIGluc3RhbmNlb2YgWFNMVFByb2Nlc3NvciIpOworZ2V0dGVyQ2FsbGVkID0gZmFs
c2U7Cit0cnkgeworICAgICh7fSBpbnN0YW5jZW9mIHsgZ2V0IHByb3RvdHlwZSgpeyBnZXR0ZXJD
YWxsZWQgPSB0cnVlOyB9IH0pOworfSBjYXRjaCAoZSkgeworfQorc2hvdWxkQmVGYWxzZSgiZ2V0
dGVyQ2FsbGVkIik7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="64558"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>