<?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>107766</bug_id>
          
          <creation_ts>2013-01-23 17:31:51 -0800</creation_ts>
          <short_desc>Harden JSC a bit with RELEASE_ASSERT</short_desc>
          <delta_ts>2013-01-23 17:41:59 -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>New Bugs</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814877</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-23 17:31:51 -0800</bug_when>
    <thetext>Harden JSC a bit with RELEASE_ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814880</commentid>
    <comment_count>1</comment_count>
      <attachid>184364</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-23 17:33:44 -0800</bug_when>
    <thetext>Created attachment 184364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814885</commentid>
    <comment_count>2</comment_count>
      <attachid>184364</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-01-23 17:39:44 -0800</bug_when>
    <thetext>Comment on attachment 184364
Patch

r=me with no perf change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814887</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-01-23 17:41:59 -0800</bug_when>
    <thetext>Committed r140619: &lt;http://trac.webkit.org/changeset/140619&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184364</attachid>
            <date>2013-01-23 17:33:44 -0800</date>
            <delta_ts>2013-01-23 17:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107766-20130123173037.patch</filename>
            <type>text/plain</type>
            <size>67043</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NGE4YjdjYWVkNmU2NGEyYjFmZjI4MjNmOGI5YjZiMDgyZjNjZDYyLi4zYTdjYTUyMDVmNzYyMjE5
ODhjNDU3MzMwNWYzNjgzOGMzMGY4ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMTMtMDEtMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBIYXJkZW4gSlNDIGEgYml0IHdpdGggUkVMRUFTRV9BU1NFUlQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc2NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlbnQgdGhyb3VnaCBhbmQg
cmVwbGFjZWQgYSBwaWxlIG9mIEFTU0VSVHMgdGhhdCB3ZXJlIGNvdmVyaW5nCisgICAgICAgIHNp
Z25pZmljYW50bHkgaW1wb3J0YW50IGRldGFpbHMgKGJvdW5kcyBjaGVja3MsIGV0Yykgd2hlcmUK
KyAgICAgICAgaGF2aW5nIHRoZSBjaGVja3MgZGlkIG5vdCBpbXBhY3QgcmVsZWFzZSBwZXJmb3Jt
YW5jZSBpbiBhbnkKKyAgICAgICAgbWVhc3VyYWJsZSB3YXkuCisKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dENyZWF0ZUJhY2t0cmFjZSk6CisgICAg
ICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpicmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpicmFu
Y2hNdWwzMik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGluZU51
bWJlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29k
ZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmV4
Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvZGVPcmlnaW4pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzdHJpbmdTd2l0Y2hKdW1wVGFibGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnNldElkZW50aWZpZXJzKToKKyAgICAgICAgKEpTQzo6YmFzZWxpbmVDb2RlQmxv
Y2tGb3JJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnVuY2hlY2tl
ZFIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpD
b2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5o
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjpDb2RlT3JpZ2luKToKKyAgICAgICAgKiBkZmcv
REZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpwcmVzZXJ2ZVVzZWRSZWdpc3RlcnNUb1NjcmF0Y2hC
dWZmZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6cmVz
dG9yZVVzZWRSZWdpc3RlcnNGcm9tU2NyYXRjaEJ1ZmZlcik6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFsbG9j
YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BpbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppbnRlZ2VyUmVzdWx0KToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmZpbGxJbnRlZ2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbERvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVD
b21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludElu
dGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludFN0cmljdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1ZhbHVlU291cmNlLmg6CisgICAgICAgIChKU0M6OkRGRzo6
ZGF0YUZvcm1hdFRvVmFsdWVTb3VyY2VLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpWYWx1ZVNv
dXJjZTo6VmFsdWVTb3VyY2UpOgorICAgICAgICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxv
Y2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxvY2F0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpCbG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxvY2F0b3IpOgorICAgICAgICAoSlND
OjpCbG9ja0FsbG9jYXRvcjo6cmVsZWFzZUZyZWVSZWdpb25zKToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tBbGxvY2F0b3I6OmJsb2NrRnJlZWluZ1RocmVhZE1haW4pOgorICAgICAgICAqIGhlYXAvSGVh
cC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24pOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgICogaml0L0dDQXdhcmVK
SVRTdHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OkdDQXdhcmVKSVRTdHViUm91dGluZTo6
b2JzZXJ2ZVplcm9SZWZDb3VudCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2VuZXJpY1Rocm93KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbmQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfcmVzb2x2ZV9vcGVyYXRpb25zKToKKyAgICAgICAgKiBqaXQvSklUU3R1YlJvdXRp
bmUuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdHViUm91dGluZTo6b2JzZXJ2ZVplcm9SZWZDb3Vu
dCk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6cmV0dXJuVG9U
aHJvd1RyYW1wb2xpbmUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpB
cmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkFyZ3Vt
ZW50czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmRlZmluZU93
blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkaWRUZWFyT2ZmQWN0aXZhdGlv
bik6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6dW5zaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5UHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6Omdyb3dQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db2Rl
Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVNYXA6OmFkZCk6CisgICAgICAgICogcnVudGlt
ZS9Db21wbGV0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAo
SlNDOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpQcm9n
cmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZCk6CisgICAgICAgIChKU0M6OlByb2dyYW1F
eGVjdXRhYmxlOjp1bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxl
Ojppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhl
Y3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6ZWRGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnVubGlua0NhbGxzKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcik6CisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0luZGV4
aW5nSGVhZGVyLmg6CisgICAgICAgIChKU0M6OkluZGV4aW5nSGVhZGVyOjpzZXRWZWN0b3JMZW5n
dGgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnBvcCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9y
YWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5
cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAg
ICAgKEpTQzo6anNTdHJEZWNpbWFsTGl0ZXJhbCk6CisgICAgICAgICogcnVudGltZS9KU09iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb3B5QnV0dGVyZmx5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmRlZmluZU93bkluZGV4ZWRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1JvcGVT
dHJpbmc6OmdldEluZGV4U2xvd0Nhc2UpOgorICAgICAgICAqIHlhcnIvWWFyckludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJwcmV0ZXI6OnBvcFBhcmVudGhlc2VzRGlz
anVuY3Rpb25Db250ZXh0KToKKwogMjAxMy0wMS0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIENvbnN0YW50IGZvbGRpbmcgYW4gYWNjZXNzIHRvIGFuIHVuY2Fw
dHVyZWQgdmFyaWFibGUgdGhhdCBpcyBjYXB0dXJlZCBsYXRlciBpbiB0aGUgc2FtZSBiYXNpYyBi
bG9jayBzaG91bGRuJ3QgbGVhZCB0byBhc3NlcnRpb24gZmFpbHVyZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAzY2U2ZGE5MGQxNjAyMjBlODYyYWJm
OWY4MDMyYjBmNzU4ZjIyYzk3Li5kOTA4MmJjNTQxYjI3NmE5ZjFjMjRiZjZkNjRhZWNhODVjYmFj
MjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC0x
ODEsNyArMTgxLDcgQEAgSlNTdHJpbmdSZWYgSlNDb250ZXh0Q3JlYXRlQmFja3RyYWNlKEpTQ29u
dGV4dFJlZiBjdHgsIHVuc2lnbmVkIG1heFN0YWNrU2l6ZSkKICAgICAgICAgfQogICAgIH0KICAg
ICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBBU1NFUlQoY2FsbEZyYW1lKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoY2FsbEZyYW1lKTsKICAgICAgICAgaW50IHNpZ25lZExpbmVOdW1iZXI7CiAg
ICAgICAgIGludHB0cl90IHNvdXJjZUlEOwogICAgICAgICBTdHJpbmcgdXJsU3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4
IGIxOWU5OTEwNTk2MWI5ZjQ5OWI2ZmUwNzI4MzA0MWM3OWI1MjQ4MzkuLjdjNWU1ZTgwNzkwY2M3
YTAwNjk1M2Q0N2FkNWVlZGQ4NWYxMDZhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHB1Ymxp
YzoKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IHNyYywgSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc3Jj
ID09IGRlc3QpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JhdGNoUmVnaXN0ZXJGb3JC
bGluZGluZygpKTsKKyAgICAgICAgICAgIEFTU0VSVChzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGlu
ZygpKTsKIAogICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewogICAgICAgICAgICAgaWYg
KHNyYyA9PSBkZXN0KSB7CkBAIC0xMzY5LDcgKzEzNjksNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBi
cmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKHNyYyA9PSBkZXN0KQotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSk7CiAKICAgICAg
ICAgaWYgKHNob3VsZEJsaW5kKGltbSkpIHsKICAgICAgICAgICAgIGlmIChzcmMgPT0gZGVzdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBj
ZmU2MmE4ZDQ0ZTM2YzE2MTQxYjQ3YzZhNWM4M2JhYzk2NzFiNjM3Li5hM2JjMmJiZjAzNmZjYzJl
NmRhNmE0MDM5NzcwMDJjNGZiMGVmZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElu
c3RydWN0aW8KICAgICAgICAgfQogI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlQoZmFsc2UpOyAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0
IGhlcmUuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlm
CiAgICAgfQogCkBAIC0yNDkyLDcgKzI0OTIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlQ29tbWVudHMoKQogCiBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgQVNTRVJUKGJ5dGVjb2Rl
T2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChieXRl
Y29kZU9mZnNldCA8IGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKICAgICBpZiAoIW1fcmFyZURh
dGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjUxMCw3ICsyNTEwLDcgQEAgSGFuZGxlckluZm8q
IENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQogCiBpbnQgQ29kZUJsb2NrOjpsaW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZU9mZnNldCA8IGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLT5saW5l
Tm8oKSArIG1fdW5saW5rZWRDb2RlLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwogfQogCkBAIC0yNzMwLDExICsyNzMwLDExIEBAIHVuc2lnbmVkIENvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlCiAgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBMTEludDo6Z2V0Q29k
ZVB0cihsbGludF9lbmQpKQogI2VuZGlmCiAgICAgewotICAgICAgICBBU1NFUlQoZXhlYy0+Y29k
ZUJsb2NrKCkpOwotICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7Ci0g
ICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKLSAgICAgICAgQVNTRVJU
KGluc3RydWN0aW9uKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5zdHJ1Y3Rpb24pOwogCiAg
ICAgICAgIGluc3RydWN0aW9uID0gYWRqdXN0UENJZkF0Q2FsbFNpdGUoaW5zdHJ1Y3Rpb24pOwog
ICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwpAQCAtMjc1Myw3ICsy
NzUzLDcgQEAgdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4
ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmUKICAgICAgICAgQ2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQqIHJlc3VsdCA9CiAgICAgICAgICAgICBiaW5hcnlTZWFyY2g8Q2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkPigKICAgICAgICAgICAgICAg
ICBjYWxsSW5kaWNlcywgY2FsbEluZGljZXMuc2l6ZSgpLCBjYWxsUmV0dXJuT2Zmc2V0LCBnZXRD
YWxsUmV0dXJuT2Zmc2V0KTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC0+Y2FsbFJldHVybk9mZnNl
dCA9PSBjYWxsUmV0dXJuT2Zmc2V0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LT5j
YWxsUmV0dXJuT2Zmc2V0ID09IGNhbGxSZXR1cm5PZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVz
dWx0LT5ieXRlY29kZU9mZnNldDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCBhNmZhNmQ1NDFkMjI5YWM5ZDIzNWVmZDRjODEzOWZjNzFm
MWRjMjFlLi5hZDRmMzM4NjA4MWFiNzY3NDRjYjM5NTkyOTYxMDQyZGI3NzYwODBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0yNzgsNyArMjc4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yOwogICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBtX3JhcmVEYXRh
LT5tX2NhbGxSZXR1cm5JbmRleFZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaW5kZXggPCBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3Rvci5zaXplKCkp
OwogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9y
W2luZGV4XS5ieXRlY29kZU9mZnNldDsKICAgICAgICAgfQogCkBAIC00NTcsNyArNDU3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1
Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXR1
cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGlu
c3RydWN0aW9ucygpLmVuZCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJldHVybkFk
ZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1
Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0
aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9
CiAKQEAgLTgxNCw3ICs4MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICB9Ci0gICAgICAgIEhhbmRsZXJJbmZvJiBleGNlcHRpb25IYW5kbGVyKGludCBpbmRl
eCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhh
bmRsZXJzW2luZGV4XTsgfQorICAgICAgICBIYW5kbGVySW5mbyYgZXhjZXB0aW9uSGFuZGxlcihp
bnQgaW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2luZGV4XTsgfQogCiAgICAgICAgIGJvb2wgaGFzRXhwcmVz
c2lvbkluZm8oKSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzRXhwcmVzc2lvbkluZm8oKTsg
fQogCkBAIC04NDksNyArODQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4odW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChtX3JhcmVEYXRhKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
cmFyZURhdGEpOwogICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29kZU9yaWdpbnNb
aW5kZXhdLmNvZGVPcmlnaW47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC05NDAsMTUgKzk0MCwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzaXplX3QgbnVtYmVyT2ZJbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEt
Pm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9CiAgICAgICAgIFNpbXBs
ZUp1bXBUYWJsZSYgYWRkSW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0
YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5h
cHBlbmQoU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIGltbWVk
aWF0ZVN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7
IHJldHVybiBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07IH0KKyAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBpbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUo
aW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3Jh
cmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogICAg
ICAgICBzaXplX3QgbnVtYmVyT2ZDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkgOiAwOyB9CiAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgYWRkQ2hhcmFjdGVyU3dp
dGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEt
Pm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU2ltcGxlSnVtcFRhYmxlKCkpOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQot
ICAgICAgICBTaW1wbGVKdW1wVGFibGUmIGNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2NoYXJh
Y3RlclN3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KKyAgICAgICAgU2ltcGxlSnVtcFRh
YmxlJiBjaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9B
U1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1
bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogICAgICAgICBzaXplX3QgbnVtYmVyT2ZTdHJpbmdT
d2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9CiAgICAgICAgIFN0cmluZ0p1
bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3Ry
aW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmxhc3QoKTsgfQotICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCkgeyBBU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVE
YXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KKyAgICAgICAgU3Ry
aW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVM
RUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAogCiAgICAgICAgIFNoYXJlZFN5bWJvbFRhYmxl
KiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5zeW1ib2xUYWJs
ZSgpOyB9CkBAIC0xMTU4LDcgKzExNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIHNldElkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxJZGVudGlmaWVyPiYgaWRlbnRpZmllcnMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2lkZW50aWZpZXJzLmlzRW1wdHkoKSk7
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2lkZW50aWZpZXJzLmlzRW1wdHkoKSk7CiAg
ICAgICAgICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZFZlY3RvcihpZGVudGlmaWVycyk7CiAgICAg
ICAgIH0KIApAQCAtMTQ1OSw5ICsxNDU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxp
bmUgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZShJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmxpbmVD
YWxsRnJhbWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmxpbmVDYWxsRnJhbWUpOwogICAg
ICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGlubGluZUNhbGxGcmFtZS0+ZXhlY3V0
YWJsZS5nZXQoKTsKLSAgICAgICAgQVNTRVJUKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKSA9PSAmRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8pOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJkZ1bmN0aW9u
RXhlY3V0YWJsZTo6c19pbmZvKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxs
RnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxpbmUg
UmVnaXN0ZXImIEV4ZWNTdGF0ZTo6dW5jaGVja2VkUihpbnQgaW5kZXgpCiAgICAgewotICAgICAg
ICBBU1NFUlQoaW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGluZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwogICAgICAg
ICByZXR1cm4gdGhpc1tpbmRleF07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKaW5kZXggNmU4YWNkMjY3ZDQwZjEzNmJkYzRkMDg5ZWE1
ZDE2MjNmYTgxYjZhZC4uNTJiYzJiZjdmOTM5NjIzOGE2MzlhZTFiOGZhMzg4NmE2NjQxNTRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBWZWN0b3I8Q29kZU9yaWdpbj4gQ29kZU9yaWdpbjo6aW5saW5lU3RhY2so
KSBjb25zdAogICAgIHVuc2lnbmVkIGluZGV4ID0gcmVzdWx0LnNpemUoKSAtIDI7CiAgICAgZm9y
IChJbmxpbmVDYWxsRnJhbWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1
cnJlbnQgPSBjdXJyZW50LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICByZXN1bHRb
aW5kZXgtLV0gPSBjdXJyZW50LT5jYWxsZXI7Ci0gICAgQVNTRVJUKCFyZXN1bHRbMF0uaW5saW5l
Q2FsbEZyYW1lKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0WzBdLmlubGluZUNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgKaW5kZXggNGE3NzA1MDJjOWRiNDFiYmU3ODViYWVjMDBmYjk4YTY0
NmQ1MmRhYy4uNWQ5ZWFhMDQxZTRkNGI4YTNkOTJjZDBlNjFkNGQyZTEwOGRmNjg0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCkBAIC02NSw4ICs2NSw4
IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAgICAgLCB2YWx1ZVByb2ZpbGVPZmZzZXQodmFs
dWVQcm9maWxlT2Zmc2V0KQogICAgICAgICAsIGlubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUpCiAgICAgewotICAgICAgICBBU1NFUlQoYnl0ZWNvZGVJbmRleCA8PSBtYXhpbXVtQnl0ZWNv
ZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVCh2YWx1ZVByb2ZpbGVPZmZzZXQgPCAoMXUgPDwgMykp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZUluZGV4IDw9IG1heGltdW1CeXRlY29k
ZUluZGV4KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVQcm9maWxlT2Zmc2V0IDwgKDF1
IDw8IDMpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIGJ5
dGVjb2RlSW5kZXggIT0gbWF4aW11bUJ5dGVjb2RlSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKaW5kZXggODNhMWYyZTBmNmFmZjJmOTg5YWMxZjVkMDRi
ZTIxOGE4MjlhOGJlMC4uOWYxZTJiODlhY2RlZjdlYjcxM2U2MTVjYTMwZmMzZGIyZGUzYzcyMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNp
bmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKaW5kZXggNDE1ODk1NDVjMjY0MGU1YjRjMDQwNDVhNGQ5MzNlYjE0
M2M3ZGNmOC4uMWYxOWM2NjkwYzMxNWM3MzUxMzQ1Y2I3ZTU5ZDc2YTJiN2JmNzZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAK
ICNpbmNsdWRlICJERkdBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJERkdTcGVjdWxhdGl2
ZUpJVC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaAppbmRleCA3MDZiY2Q2MWQ0NzE1OGUxMDI2Nzhj
Y2MyODI3YWIzMzk2ZTNlYzBlLi5hN2UyNmRhOWIwODc2MDlkOWFiYjg2YjlmMGYwZTdmMjIwODk0
MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NjcmF0Y2hSZWdp
c3RlckFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmgKQEAgLTEzNywxNCArMTM3LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGlmIChzY3JhdGNoR1BSID09IEludmFsaWRHUFJSZWcgJiYgIW1fbG9ja2VkUmVnaXN0
ZXJzLmdldEdQUkJ5SW5kZXgoaSkgJiYgIW1fc2NyYXRjaFJlZ2lzdGVycy5nZXRHUFJCeUluZGV4
KGkpKQogICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
OwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChzY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChzY3JhdGNoR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0t
OykgewogICAgICAgICAgICAgaWYgKG1fdXNlZFJlZ2lzdGVycy5nZXRGUFJCeUluZGV4KGkpKSB7
CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkp
ICsgKGNvdW50KyspKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgaml0LnN0b3JlRG91
YmxlKEZQUkluZm86OnRvUmVnaXN0ZXIoaSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChjb3VudCAqIHNpemVvZihKU1ZhbHVlKSA9PSBkZXNp
cmVkU2NyYXRjaEJ1ZmZlclNpemUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ICog
c2l6ZW9mKEpTVmFsdWUpID09IGRlc2lyZWRTY3JhdGNoQnVmZmVyU2l6ZSgpKTsKICAgICAgICAg
CiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZzY3JhdGNo
QnVmZmVyLT5tX2FjdGl2ZUxlbmd0aCksIHNjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuc3RvcmVQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb3Vu
dCAqIHNpemVvZihKU1ZhbHVlKSkpLCBzY3JhdGNoR1BSKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNjcmF0Y2hHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIAogICAg
ICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmc2NyYXRjaEJ1ZmZl
ci0+bV9hY3RpdmVMZW5ndGgpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgaml0LnN0b3JlUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA4MjVkY2U1ZTRlYzc2
ODBiYTViNmQzZDRlOGQ2MTRhOTM4YzkxZTBkLi5hNTZiMzQwMGNkYzRlMGM5YzRlYWIxZTRhNjYx
NDEyY2FjM2MyMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xODksNyArMTg5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoc3BpbGxN
ZSAhPSBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKSB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1tzcGlsbE1l
XTsKLSAgICAgICAgICAgIEFTU0VSVChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1h
dEpTRG91YmxlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8ucmVnaXN0ZXJGb3Jt
YXQoKSAhPSBEYXRhRm9ybWF0SlNEb3VibGUpOwogICAgICAgICAgICAgaWYgKChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpKQogICAgICAgICAgICAgICAgIG1fZ3Bycy5yZWxl
YXNlKGluZm8udGFnR1BSKCkgPT0gZ3ByID8gaW5mby5wYXlsb2FkR1BSKCkgOiBpbmZvLnRhZ0dQ
UigpKTsKICNlbmRpZgpAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNw
aWxsTWUgIT0gSW52YWxpZFZpcnR1YWxSZWdpc3RlcikgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9bc3Bp
bGxNZV07Ci0gICAgICAgICAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFG
b3JtYXRKU0RvdWJsZSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZvLnJlZ2lzdGVy
Rm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTRG91YmxlKTsKICAgICAgICAgICAgIGlmICgoaW5mby5y
ZWdpc3RlckZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKSkKICAgICAgICAgICAgICAgICBtX2dwcnMu
cmVsZWFzZShpbmZvLnRhZ0dQUigpID09IHNwZWNpZmljID8gaW5mby5wYXlsb2FkR1BSKCkgOiBp
bmZvLnRhZ0dQUigpKTsKICNlbmRpZgpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBj
b2RlIGhhbmRsZXMgSlNWYWx1ZXMsIGludDMycywgYW5kIGNlbGxzLgotICAgICAgICAgICAgQVNT
RVJUKHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRDZWxsIHx8IHNwaWxsRm9ybWF0ICYgRGF0YUZv
cm1hdEpTKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9ybWF0ID09IERhdGFG
b3JtYXRDZWxsIHx8IHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgR1BSUmVnIHJlZyA9IGluZm8uZ3ByKCk7CiAgICAgICAgICAgICAvLyBXZSBu
ZWVkIHRvIGJveCBpbnQzMiBhbmQgY2VsbCB2YWx1ZXMgLi4uCkBAIC01MjcsNyArNTI3LDcgQEAg
cHVibGljOgogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5n
IGNvZGUgaGFuZGxlcyBKU1ZhbHVlcy4KLSAgICAgICAgICAgIEFTU0VSVChzcGlsbEZvcm1hdCAm
IERhdGFGb3JtYXRKUyk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzcGlsbEZvcm1hdCAm
IERhdGFGb3JtYXRKUyk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKGluZm8udGFnR1BSKCks
IEpJVENvbXBpbGVyOjp0YWdGb3Ioc3BpbGxNZSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihpbmZvLnBheWxvYWRHUFIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Ioc3BpbGxNZSkpOwog
ICAgICAgICAgICAgaW5mby5zcGlsbCgqbV9zdHJlYW0sIHNwaWxsTWUsIHNwaWxsRm9ybWF0KTsK
QEAgLTc5OSw3ICs3OTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbmZvLmluaXRJbnRlZ2Vy
KG5vZGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCByZWcpOwogICAgICAgICB9IGVsc2UgewogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERhdGFGb3JtYXRK
U0ludGVnZXIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZm9ybWF0ID09IERhdGFGb3Jt
YXRKU0ludGVnZXIpOwogICAgICAgICAgICAgbV9qaXQuaml0QXNzZXJ0SXNKU0ludDMyKHJlZyk7
CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlZywgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9y
ZGVySlMpOwogICAgICAgICAgICAgaW5mby5pbml0SlNWYWx1ZShub2RlSW5kZXgsIG5vZGUucmVm
Q291bnQoKSwgcmVnLCBmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggMjFjNzBkZTY1YjI4ZGQyMjE0NzY3ZjIwNjJk
NDIyYjViMGNjZjcyYS4uNzlmZWRkYTViZWFhMDdkOWNkNGE5MTNiYzBiNjJkZDU2MDA5MzQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEludGVnZXIo
Tm9kZUluZGV4IG5vZGVJbmRleCwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0CiAgICAgICAgICAg
ICAvLyBUYWcgaXQsIHNpbmNlIGZpbGxJbnRlZ2VyKCkgaXMgdXNlZCB3aGVuIHdlIHdhbnQgYSBi
b3hlZCBpbnRlZ2VyLgogICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQo
aW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXRKUyB8fCBpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdEpTSW50ZWdlcik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmZv
LnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdEpTIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0SlNJbnRlZ2VyKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAg
ICB9CkBAIC0xNzYsNyArMTc2LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsRG91Ymxl
KE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogICAgICAgICAKLSAgICAgICAgICAgICAgICBB
U1NFUlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOworICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgICAgICBt
X2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9z
dHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIp
OwogICAgICAgICAgICAgICAgICAgICBzcGlsbEZvcm1hdCA9IERhdGFGb3JtYXRKU0RvdWJsZTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNwaWxs
Rm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwogICAgICAg
ICB9CkBAIC02OTIsNyArNjkyLDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVDb21wYXJlTnVsbChOb2RlJiBub2RlLCBFZGdlIG9wZXJhbmQsIGJvb2wgaW4KICAgICBpZiAo
YnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CiAgICAgICAgIE5vZGVJbmRleCBicmFu
Y2hOb2RlSW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdChicmFuY2hJ
bmRleEluQmxvY2spOwogCi0gICAgICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVmQ291bnQoKSA9
PSAxKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS5hZGp1c3RlZFJlZkNvdW50KCkgPT0g
MSk7CiAgICAgICAgIAogICAgICAgICBub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbChv
cGVyYW5kLCBicmFuY2hOb2RlSW5kZXgsIGludmVydCk7CiAgICAgCkBAIC05OTIsNyArOTkyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVx
KE5vZGUmIG5vZGUsIGJvb2wgaW52ZXJ0KQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSYgbm9kZSkKIHsKICAgICBpZiAobm9kZS5vcCgpICE9IENhbGwpCi0gICAgICAgIEFTU0VS
VChub2RlLm9wKCkgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZS5v
cCgpID09IENvbnN0cnVjdCk7CiAKICAgICAvLyBGb3IgY29uc3RydWN0b3JzLCB0aGUgdGhpcyBh
cmd1bWVudCBpcyBub3QgcGFzc2VkIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3BhY2UKICAgICAvLyBm
b3IgaXQuCkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXggbm9kZUluZGV4LCBEYXRhRm9ybWF0JgogICAg
ICAgICAKICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1hdCA9IGluZm8uc3BpbGxGb3JtYXQo
KTsKICAgICAgICAgCi0gICAgICAgIEFTU0VSVCgoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMp
IHx8IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnRlZ2VyKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKSB8fCBzcGlsbEZvcm1hdCA9PSBEYXRh
Rm9ybWF0SW50ZWdlcik7CiAgICAgICAgIAogICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxlZCk7CiAgICAgICAgIApAQCAtMTIwNyw3ICsx
MjA3LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50U3RyaWN0KE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7CiAgICAgRGF0YUZvcm1hdCBtdXN0QmVEYXRhRm9ybWF0SW50
ZWdlcjsKICAgICBHUFJSZWcgcmVzdWx0ID0gZmlsbFNwZWN1bGF0ZUludEludGVybmFsPHRydWU+
KG5vZGVJbmRleCwgbXVzdEJlRGF0YUZvcm1hdEludGVnZXIsIEJhY2t3YXJkU3BlY3VsYXRpb24p
OwotICAgIEFTU0VSVChtdXN0QmVEYXRhRm9ybWF0SW50ZWdlciA9PSBEYXRhRm9ybWF0SW50ZWdl
cik7CisgICAgUkVMRUFTRV9BU1NFUlQobXVzdEJlRGF0YUZvcm1hdEludGVnZXIgPT0gRGF0YUZv
cm1hdEludGVnZXIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyNzIsNyArMTI3Miw3
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXgg
bm9kZUluZGV4LCBTcGVjdWxhdGlvbkRpcmVjCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBHUFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKIAotICAgICAgICAgICAgQVNTRVJUKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNwaWxsRm9y
bWF0ICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgICAgIG1faml0LmxvYWQ2
NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAg
ICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgc3BpbGxGb3JtYXQpOwpAQCAt
MTM5NSw3ICsxMzk1LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bChOb2RlSW5kZXggbm9kZUluZGV4LCBTcGVjdWxhdGlvbkRpcmVjdGkKICAgICAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIGRpcmVjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9Ci0g
ICAgICAgIEFTU0VSVChpbmZvLnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpbmZvLnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOwogICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyU3BpbGxl
ZCk7CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCBncHIpOwogCkBAIC0xNDcxLDcgKzE0NzEsNyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgsIFNwZWN1bGF0
aW9uRGlyZQogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgZGlyZWN0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQoKSAm
IERhdGFGb3JtYXRKUyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8uc3BpbGxGb3JtYXQo
KSAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAKQEAgLTI4MDUsNyArMjgw
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
ICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFycmF5OjpHZW5lcmljOiB7Ci0gICAgICAgICAgICBBU1NFUlQobm9kZS5vcCgpID09IFB1
dEJ5VmFsKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUub3AoKSA9PSBQdXRCeVZh
bCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywg
Y2hpbGQxKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhpcywgY2hpbGQyKTsK
QEAgLTM0NjMsNyArMzQ2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50
KCktPmFkZChzcGVjdWxhdGlvbldhdGNocG9pbnQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS5pbmRleGluZ1R5cGUoKSk7Ci0gICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBub2RlLmluZGV4aW5n
VHlwZSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgPT0gbm9kZS5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoCiAgICAg
ICAgICAgICAgICAgaGFzVW5kZWNpZGVkKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpCiAgICAg
ICAgICAgICAgICAgfHwgaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM3
NjksNyArMzc2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
IAogICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCByZXN1
bHRHUFIsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgQVNTRVJUKGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaW5kZXhpbmdUeXBlICYgSXNBcnJheSk7CiAgICAgICAgICAgICBKU1ZhbHVlKiBkYXRh
ID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgp
KTsKICAgICAgICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbm9kZS5udW1D
b25zdGFudHMoKTsgKytpbmRleCkgewpAQCAtNDY1NSw3ICs0NjU1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOiB7Ci0gICAgICAgIEFTU0VSVCghbm9kZS5jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIHZh
bHVlKTsKQEAgLTQ3MDAsNyArNDcwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOiB7Ci0gICAg
ICAgIEFTU0VSVCghbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKIAogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBhY3RpdmF0aW9uVmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtNDc2Nyw3ICs0NzY3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW5vZGUuY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0
LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKICAgICAgICAgaW50ZWdlclJlc3Vs
dChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsdWVTb3VyY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsdWVTb3VyY2UuaAppbmRleCBlZDkzYjdiNGEyOWNjZDY4YjllMjFkYWQyMWZlZGIzMjNj
NzA4ZjI5Li5lNzY3ZTQxY2ZlMTY4Nzg5YzcxOGE3YTRlZTA5M2Q3ZmNmNGJmMWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWx1ZVNvdXJjZS5oCkBAIC02NSw3ICs2NSw3IEBA
IHN0YXRpYyBpbmxpbmUgVmFsdWVTb3VyY2VLaW5kIGRhdGFGb3JtYXRUb1ZhbHVlU291cmNlS2lu
ZChEYXRhRm9ybWF0IGRhdGFGb3JtYXQpCiAgICAgY2FzZSBEYXRhRm9ybWF0QXJndW1lbnRzOgog
ICAgICAgICByZXR1cm4gQXJndW1lbnRzU291cmNlOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVChkYXRhRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGF0YUZvcm1hdCAmIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIHJldHVybiBWYWx1ZUluSlNTdGFj
azsKICAgICB9CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFZh
bHVlU291cmNlKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIDogbV9ub2RlSW5kZXgobm9k
ZUluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG5vZGVJbmRleCAhPSBOb05vZGUpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChub2RlSW5kZXggIT0gTm9Ob2RlKTsKICAgICAgICAgQVNTRVJU
KGtpbmQoKSA9PSBIYXZlTm9kZSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhh
c2UuY3BwCmluZGV4IGViMzIzMmU2OTY5NjUzNTIyMjk5NGJiMTYyNWYxYTllNDhhMGIwZTkuLmQ0
YjY1YTA0ZDNjOGNiZDBhYzE2MDA1OGUyOGExMGRhZGQ5MGFmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9j
YXRpb25QaGFzZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRGR0dyYXBoLmgi
CiAjaW5jbHVkZSAiREZHU2NvcmVCb2FyZC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAKaW5kZXggZjk0MDI1YzFhZWY1YzE1YTNiYWQy
YTNmMjA2ZmVmMTYzZjdjOGZlMi4uYmYyOTc2YjI0NDVhZWY1ZTAxNTgwOWZkMTg4N2UyM2M0ZmI0
MmI2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBCbG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxvY2F0b3IoKQogICAg
ICwgbV9ibG9ja0ZyZWVpbmdUaHJlYWRTaG91bGRRdWl0KGZhbHNlKQogICAgICwgbV9ibG9ja0Zy
ZWVpbmdUaHJlYWQoY3JlYXRlVGhyZWFkKGJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0RnVuYywgdGhp
cywgIkphdmFTY3JpcHRDb3JlOjpCbG9ja0ZyZWUiKSkKIHsKLSAgICBBU1NFUlQobV9ibG9ja0Zy
ZWVpbmdUaHJlYWQpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fYmxvY2tGcmVlaW5nVGhyZWFkKTsK
ICAgICBtX3JlZ2lvbkxvY2suSW5pdCgpOwogfQogCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQmxv
Y2tBbGxvY2F0b3I6OnJlbGVhc2VGcmVlUmVnaW9ucygpCiAgICAgICAgICAgICAgICAgcmVnaW9u
ID0gMDsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHJlZ2lvbiA9IG1fZW1w
dHlSZWdpb25zLnJlbW92ZUhlYWQoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWdpb24pOwogICAgICAgICAgICAgICAg
IG1fbnVtYmVyT2ZFbXB0eVJlZ2lvbnMtLTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgQmxvY2tBbGxvY2F0b3I6OmJsb2NrRnJlZWluZ1RocmVhZE1h
aW4oKQogICAgICAgICAgICAgICAgICAgICByZWdpb24gPSAwOwogICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICByZWdpb24gPSBtX2VtcHR5UmVnaW9ucy5yZW1vdmVI
ZWFkKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24pOworICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWdpb24pOwogICAgICAgICAgICAgICAgICAgICBtX251
bWJlck9mRW1wdHlSZWdpb25zLS07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBlNzA2YTYzZDM1M2E3NjQ0ZjY3MWZk
NWMzN2UzYjgxMTBjNjQ3OTExLi5hNjQzNGFlMGFiN2I2MTI3M2U5YTg5MmRiYTdkNDg0OTBiY2Q3
M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjgwLDggKzI4MCw4IEBA
IGJvb2wgSGVhcDo6aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpCiAvLyBSdW4gYWxsIHBlbmRp
bmcgZmluYWxpemVycyBub3cgYmVjYXVzZSB3ZSB3b24ndCBnZXQgYW5vdGhlciBjaGFuY2UuCiB2
b2lkIEhlYXA6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIHsKLSAgICBBU1NFUlQoIW1fZ2xvYmFs
RGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBOb09wZXJhdGlvbik7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZ2xvYmFsRGF0YS0+
ZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIG1fb2JqZWN0U3BhY2UubGFzdENoYW5jZVRv
RmluYWxpemUoKTsKIApAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2Vl
cFRvZ2dsZSBzd2VlcFRvZ2dsZSkKICAgICAKICAgICBHQ1BIQVNFKENvbGxlY3QpOwogICAgIEFT
U0VSVChnbG9iYWxEYXRhKCktPmFwaUxvY2soKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nTG9jaygp
KTsKLSAgICBBU1NFUlQoZ2xvYmFsRGF0YSgpLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFk
RGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ2xv
YmFsRGF0YSgpLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVu
dGlmaWVyVGFibGUoKSk7CiAgICAgQVNTRVJUKG1faXNTYWZlVG9Db2xsZWN0KTsKICAgICBKQVZB
U0NSSVBUQ09SRV9HQ19CRUdJTigpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBjYjAxZGE0NTZkOGYxZjIzMTI2ZDc3NGQy
YjExODNhOWNhNTM1ODFkLi5iZTZlNjNmNGEwZTZhY2U1Yjc5NmE3ZWE0ZjE0N2QwOGJkNmYwNzY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTc5MCw3ICs3OTAsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVy
cHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgICAg
ICBpbnQgY3VycmVudERlcHRoID0gZGVwdGgoY29kZUJsb2NrLCBzY29wZSk7CiAgICAgICAgIGlu
dCB0YXJnZXREZXB0aCA9IGhhbmRsZXItPnNjb3BlRGVwdGg7CiAgICAgICAgIHNjb3BlRGVsdGEg
PSBjdXJyZW50RGVwdGggLSB0YXJnZXREZXB0aDsKLSAgICAgICAgQVNTRVJUKHNjb3BlRGVsdGEg
Pj0gMCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlRGVsdGEgPj0gMCk7CiAgICAgfQog
ICAgIHdoaWxlIChzY29wZURlbHRhLS0pCiAgICAgICAgIHNjb3BlID0gc2NvcGUtPm5leHQoKTsK
QEAgLTgzNSw3ICs4MzUsOSBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKFByb2dyYW1F
eGVjdXRhYmxlKiBwcm9ncmFtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSgogCiAgICAgQVNTRVJU
KGlzVmFsaWRUaGlzT2JqZWN0KHRoaXNPYmosIGNhbGxGcmFtZSkpOwogICAgIEFTU0VSVCghZ2xv
YmFsRGF0YS5leGNlcHRpb24pOwotICAgIFJFTEVBU0VfQVNTRVJUKCFnbG9iYWxEYXRhLmlzQ29s
bGVjdG9yQnVzeSgpKTsKKyAgICBBU1NFUlQoIWdsb2JhbERhdGEuaXNDb2xsZWN0b3JCdXN5KCkp
OworICAgIGlmIChnbG9iYWxEYXRhLmlzQ29sbGVjdG9yQnVzeSgpKQorICAgICAgICByZXR1cm4g
anNOdWxsKCk7CiAKICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsK
ICAgICBjb25zdCBTdGFja0JvdW5kcyYgbmF0aXZlU3RhY2sgPSB3dGZUaHJlYWREYXRhKCkuc3Rh
Y2soKTsKQEAgLTEyNjQsNyArMTI2Niw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAKICAg
ICBKU09iamVjdCogdmFyaWFibGVPYmplY3Q7CiAgICAgZm9yIChKU1Njb3BlKiBub2RlID0gc2Nv
cGU7IDsgbm9kZSA9IG5vZGUtPm5leHQoKSkgewotICAgICAgICBBU1NFUlQobm9kZSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwogICAgICAgICBpZiAobm9kZS0+aXNWYXJpYWJsZU9i
amVjdCgpICYmICFub2RlLT5pc05hbWVTY29wZU9iamVjdCgpKSB7CiAgICAgICAgICAgICB2YXJp
YWJsZU9iamVjdCA9IG5vZGU7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcAppbmRleCBjZTIxYTJm
ZGY4ODg0YjU0YTA1MjRhODY0YWNjNDdhNmRlZTUyZjdmLi4wNWU2ZDNhOTg4MzZjZWFmNmUxYTQy
MmQzNzcwZDhkM2IwNDljNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dDQXdhcmVKSVRTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lOjpvYnNlcnZlWmVyb1JlZkNvdW50KCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICBBU1NFUlQoIW1fcmVmQ291bnQpOworICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3JlZkNvdW50KTsKIAogICAgIG1faXNKZXR0aXNvbmVkID0gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCA0YmYxODAzNWZmN2IzZDdmNjQ1NTRhYWQwMzUyNjBhOTEz
MGMxZGQ1Li5iYTc4YmM4ZWYxOWIyZmQ5OWEwZDVlOGZjY2I5MWQ3MjMyN2NjMmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgQVNTRVJUKG1fY2Fs
bExpbmtJbmZvSW5kZXggPT0gbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mby5zaXpl
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsU3Ry
dWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mby5zaXplKCkpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IC8vIFJlc2V0IHRoaXMsIGluIG9yZGVyIHRvIGd1YXJkIGl0cyB1c2Ugd2l0aCBBU1NFUlRzLgpA
QCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgbV9nbG9iYWxSZXNvbHZlSW5mb0luZGV4ID0gMDsKICAgICBtX2NhbGxMaW5rSW5mb0luZGV4
ID0gMDsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVEICYmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgLy8gVXNlIHRoaXMgdG8gYXNzZXJ0
IHRoYXQgc2xvdy1wYXRoIGNvZGUgYXNzb2NpYXRlcyBuZXcgcHJvZmlsaW5nIHNpdGVzIHdpdGgg
ZXhpc3RpbmcKICAgICAvLyBWYWx1ZVByb2ZpbGVzIHJhdGhlciB0aGFuIGNyZWF0aW5nIG5ldyBv
bmVzLiBUaGlzIGVuc3VyZXMgdGhhdCBmb3IgYSBnaXZlbiBpbnN0cnVjdGlvbgogICAgIC8vIChz
YXksIGdldF9ieV9pZCkgd2UgZ2V0IGNvbWJpbmVkIHN0YXRpc3RpY3MgZm9yIGJvdGggdGhlIGZh
c3QtcGF0aCBleGVjdXRpb25zIG9mIHRoYXQKQEAgLTQ0OSw5ICs0NDksOSBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogI2VuZGlmCiAKICAgICAgICAgbV9ieXRlY29kZU9m
ZnNldCA9IGl0ZXItPnRvOwotI2lmbmRlZiBOREVCVUcKKwogICAgICAgICB1bnNpZ25lZCBmaXJz
dFRvID0gbV9ieXRlY29kZU9mZnNldDsKLSNlbmRpZgorCiAgICAgICAgIEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbiArIG1fYnl0ZWNvZGVPZmZzZXQ7
CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTU1NCw4ICs1NTQsOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRvICE9IGl0ZXItPnRv
LCJOb3QgZW5vdWdoIGp1bXBzIGxpbmtlZCBpbiBzbG93IGNhc2UgY29kZWdlbi4iKTsKLSAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChpdGVyIC0gMSktPnRvLCAiVG9vIG1h
bnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2VuLiIpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoaXRlciA9PSBtX3Nsb3dDYXNlcy5lbmQoKSB8fCBmaXJzdFRv
ICE9IGl0ZXItPnRvLCAiTm90IGVub3VnaCBqdW1wcyBsaW5rZWQgaW4gc2xvdyBjYXNlIGNvZGVn
ZW4uIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmaXJzdFRvID09IChp
dGVyIC0gMSktPnRvLCAiVG9vIG1hbnkganVtcHMgbGlua2VkIGluIHNsb3cgY2FzZSBjb2RlZ2Vu
LiIpOwogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgICAgIGlmIChz
aG91bGRFbWl0UHJvZmlsaW5nKCkpCkBAIC01NjUsMTAgKzU2NSwxMCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChqdW1wKCks
IDApOwogICAgIH0KIAotICAgIEFTU0VSVChtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25JbmRl
eCA9PSBtX3Byb3BlcnR5QWNjZXNzQ29tcGlsYXRpb25JbmZvLnNpemUoKSk7Ci0gICAgQVNTRVJU
KG1fY2FsbExpbmtJbmZvSW5kZXggPT0gbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5m
by5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bkluZGV4ID09IG1fcHJvcGVydHlBY2Nlc3NDb21waWxhdGlvbkluZm8uc2l6ZSgpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChtX2NhbGxMaW5rSW5mb0luZGV4ID09IG1fY2FsbFN0cnVjdHVyZVN0dWJD
b21waWxhdGlvbkluZm8uc2l6ZSgpKTsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAg
QVNTRVJUKG51bWJlck9mVmFsdWVQcm9maWxlcyA9PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1
ZVByb2ZpbGVzKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG51bWJlck9mVmFsdWVQcm9maWxlcyA9
PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkpOwogI2VuZGlmCiAKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcApp
bmRleCBjNDhlMDlhYjgxNjM2NjI2ZTAzYzNiZDY3N2NlYWJjYzQzYzA4Mjk3Li5jMjllMTUwY2E2
ZWEwODU0ZjdiNTZmZmU3YTRlYjAwOWE3ODk3NTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIHVuc2lnbmVk
IHZQQ0luZGV4KQogewotICAgIEFTU0VSVChleGNlcHRpb25WYWx1ZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhjZXB0aW9uVmFsdWUpOwogICAgIAogICAgIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiA9
IEpTVmFsdWUoKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGdsb2JhbERhdGEtPmludGVy
cHJldGVyLT50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCB2UENJbmRl
eCk7IC8vIFRoaXMgbWF5IHVwZGF0ZSBjYWxsRnJhbWUgJiBleGNlcHRpb25WYWx1ZSEKQEAgLTU3
LDcgKzU3LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlMKICAgICBnbG9iYWxEYXRhLT50YXJn
ZXRNYWNoaW5lUENGb3JUaHJvdyA9IGNhdGNoUm91dGluZTsKICAgICBnbG9iYWxEYXRhLT50YXJn
ZXRJbnRlcnByZXRlclBDRm9yVGhyb3cgPSBjYXRjaFBDRm9ySW50ZXJwcmV0ZXI7CiAgICAgCi0g
ICAgQVNTRVJUKGNhdGNoUm91dGluZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoY2F0Y2hSb3V0aW5l
KTsKICAgICBFeGNlcHRpb25IYW5kbGVyIGV4Y2VwdGlvbkhhbmRsZXIgPSB7IGNhdGNoUm91dGlu
ZSwgY2FsbEZyYW1lIH07CiAgICAgcmV0dXJuIGV4Y2VwdGlvbkhhbmRsZXI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDgwZWE1YzczZWVlNzI5ZGE0YjVjNTYy
ZjFjMDc0ZWYwYWQ3YzQxYzcuLjZlYTAzMjFhMDllOTA0OWNlNzExODVlNWZkNzAxNDdmODY2YWIz
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC01MDksMTAgKzUw
OSwxMCBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkKGNvbnN0IEpTVmFsdWUmIHYsIFJlZ2lz
dGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExv
YWQoaW50IGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXlsb2FkLCBSZWdpc3Rl
cklEIGJhc2UpCiB7Ci0gICAgQVNTRVJUKHRhZyAhPSBwYXlsb2FkKTsKKyAgICBSRUxFQVNFX0FT
U0VSVCh0YWcgIT0gcGF5bG9hZCk7CiAKICAgICBpZiAoYmFzZSA9PSBjYWxsRnJhbWVSZWdpc3Rl
cikgewotICAgICAgICBBU1NFUlQocGF5bG9hZCAhPSBiYXNlKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQocGF5bG9hZCAhPSBiYXNlKTsKICAgICAgICAgZW1pdExvYWRQYXlsb2FkKGluZGV4LCBw
YXlsb2FkKTsKICAgICAgICAgZW1pdExvYWRUYWcoaW5kZXgsIHRhZyk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDY2ZTFiYzUw
MDI1OThmZDllY2ZlNzdlODhmOGM1YWZhNTEwNzFhNjYuLjQwNGQ1MzdhY2M2YmU2M2E3YjBmYTI5
ODY1NjAyZWY0NWVkOThhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb3YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW5kKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0ZXIg
IT0gY2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKHJldHVyblZhbHVlUmVn
aXN0ZXIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAg
ICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyhjYWxsRnJhbWVSZWdp
c3RlciwgSlNTdGFjazo6UmV0dXJuUEMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpKSk7CiAgICAgcmV0KCk7CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9y
ZXNvbHZlX29wZXJhdGlvbnMoUmVzb2x2ZU9wZXJhdGlvbnMqIHJlc29sdmVPcGVyYXRpb25zLCBj
b25zdCBpbgogICAgICAgICAgICAgZW1pdFN0b3JlQ2VsbCgqYmFzZVZSLCB2YWx1ZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6U2V0QmFzZVRv
R2xvYmFsOgotICAgICAgICAgICAgQVNTRVJUKGJhc2VWUik7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChiYXNlVlIpOwogICAgICAgICAgICAgc2V0QmFzZSA9IHRydWU7CiAgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaCk7CiAgICAgICAgICAg
ICBlbWl0U3RvcmVDZWxsKCpiYXNlVlIsIHNjcmF0Y2gpOwpAQCAtMTMxNCw3ICsxMzE0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfcmVzb2x2ZV9vcGVyYXRpb25zKFJlc29sdmVPcGVyYXRpb25zKiByZXNv
bHZlT3BlcmF0aW9ucywgY29uc3QgaW4KICAgICAgICAgICAgICsrcGM7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpTZXRCYXNlVG9VbmRlZmluZWQ6
IHsKLSAgICAgICAgICAgIEFTU0VSVChiYXNlVlIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYmFzZVZSKTsKICAgICAgICAgICAgIHNldEJhc2UgPSB0cnVlOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpLCBzY3JhdGNoKTsKQEAgLTEzMjcsNyArMTMyNyw3IEBAIHZvaWQgSklUOjplbWl0
X3Jlc29sdmVfb3BlcmF0aW9ucyhSZXNvbHZlT3BlcmF0aW9ucyogcmVzb2x2ZU9wZXJhdGlvbnMs
IGNvbnN0IGluCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJl
c29sdmVPcGVyYXRpb246OlNldEJhc2VUb1Njb3BlOgotICAgICAgICAgICAgQVNTRVJUKGJhc2VW
Uik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVlIpOwogICAgICAgICAgICAgc2V0
QmFzZSA9IHRydWU7CiAgICAgICAgICAgICBlbWl0U3RvcmVDZWxsKCpiYXNlVlIsIHNjb3BlKTsK
ICAgICAgICAgICAgIHJlc29sdmluZ0Jhc2UgPSBmYWxzZTsKQEAgLTEzMzUsNyArMTMzNSw3IEBA
IHZvaWQgSklUOjplbWl0X3Jlc29sdmVfb3BlcmF0aW9ucyhSZXNvbHZlT3BlcmF0aW9ucyogcmVz
b2x2ZU9wZXJhdGlvbnMsIGNvbnN0IGluCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBSZXNvbHZlT3BlcmF0aW9uOjpSZXR1cm5TY29wZUFzQmFzZToKICAgICAgICAgICAgIGVtaXRT
dG9yZUNlbGwoKmJhc2VWUiwgc2NvcGUpOwotICAgICAgICAgICAgQVNTRVJUKHZhbHVlID09IHJl
Z1QwKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlID09IHJlZ1QwKTsKICAgICAg
ICAgICAgIG1vdmUoc2NvcGUsIHZhbHVlKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHZhbHVlVGFnKTsKQEAg
LTEzODUsNyArMTM4NSw3IEBAIHZvaWQgSklUOjplbWl0X3Jlc29sdmVfb3BlcmF0aW9ucyhSZXNv
bHZlT3BlcmF0aW9ucyogcmVzb2x2ZU9wZXJhdGlvbnMsIGNvbnN0IGluCiAgICAgaWYgKGJhc2VW
UiAmJiAhc2V0QmFzZSkKICAgICAgICAgZW1pdFN0b3JlQ2VsbCgqYmFzZVZSLCBzY29wZSk7CiAK
LSAgICBBU1NFUlQodmFsdWVWUik7CisgICAgUkVMRUFTRV9BU1NFUlQodmFsdWVWUik7CiAgICAg
UmVzb2x2ZU9wZXJhdGlvbiogcmVzb2x2ZVZhbHVlT3BlcmF0aW9uID0gcGM7CiAgICAgc3dpdGNo
IChyZXNvbHZlVmFsdWVPcGVyYXRpb24tPm1fb3BlcmF0aW9uKSB7CiAgICAgY2FzZSBSZXNvbHZl
T3BlcmF0aW9uOjpHZXRBbmRSZXR1cm5HbG9iYWxQcm9wZXJ0eTogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcAppbmRleCAxMjE4MzZjZTkyNDZhZTQzZGIz
ZjVlNGQ5MmE1M2RlODgzNWE5ZTBmLi4yODU0M2E4Yjg0ODM2NTBhMGJhNWNjYzUxYWQ0OWY5Mzgw
NmZkOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0
aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBKSVRTdHViUm91dGluZTo6fkpJVFN0dWJSb3V0aW5lKCkgeyB9
CiAKIHZvaWQgSklUU3R1YlJvdXRpbmU6Om9ic2VydmVaZXJvUmVmQ291bnQoKQogewotICAgIEFT
U0VSVCghbV9yZWZDb3VudCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fcmVmQ291bnQpOwogICAg
IGRlbGV0ZSB0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmlu
ZGV4IDFkNjIzNWZjOTYzYTU5MTM0YzcxNjg3ZmY2NzM4NmZiZTJmOWQyNjEuLjNiMDg1YmY4MjE3
NWVkM2MxN2U4MjU2NDA4MzQ2NmRjYWIwYjM0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBzdHJ1Y3QgU3RhY2tIYWNrIHsKIC8v
IGhhbmRsaW5nIGNvZGUgb3V0IG9mIGxpbmUgYXMgcG9zc2libGUuCiBzdGF0aWMgTkVWRVJfSU5M
SU5FIHZvaWQgcmV0dXJuVG9UaHJvd1RyYW1wb2xpbmUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uLCBSZXR1cm5BZGRyZXNzUHRyJiBy
ZXR1cm5BZGRyZXNzU2xvdCkKIHsKLSAgICBBU1NFUlQoZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChnbG9iYWxEYXRhLT5leGNlcHRpb24pOwogICAgIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbkxvY2F0aW9uID0gZXhjZXB0aW9uTG9jYXRpb247CiAgICAgcmV0dXJuQWRk
cmVzc1Nsb3QgPSBSZXR1cm5BZGRyZXNzUHRyKEZ1bmN0aW9uUHRyKGN0aVZNVGhyb3dUcmFtcG9s
aW5lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApp
bmRleCAwMjBmMzMyNmJlODdiN2M4MjJhMjQxMzUwZDBmMWZlODRlNDllMzQzLi5lNjFjYTgzNGI5
Yjk5YjM3NTJkNGVkNTZiZDA1NzU0YTU3MjIzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIEFyZ3VtZW50
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcAogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMq
PihjZWxsKTsKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKICAgICBp
ZiAoSlNWYWx1ZSB2YWx1ZSA9IHRoaXNPYmplY3QtPnRyeUdldEFyZ3VtZW50KGkpKSB7Ci0gICAg
ICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIHNsb3Quc2V0
VmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNTYsNyArMTU2
LDcgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3AKICAgICBBcmd1bWVudHMqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8QXJndW1lbnRzKj4ob2JqZWN0KTsKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlO
YW1lLmFzSW5kZXgoKTsKICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IHRoaXNPYmplY3QtPnRyeUdl
dEFyZ3VtZW50KGkpKSB7Ci0gICAgICAgIEFTU0VSVChpIDwgUHJvcGVydHlOYW1lOjpOb3RBbklu
ZGV4KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRl
eCk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcih2YWx1ZSwgTm9uZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIEFyZ3VtZW50
czo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxBcmd1bWVudHMq
PihjZWxsKTsKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKICAgICBp
ZiAoaSA8IHRoaXNPYmplY3QtPm1fbnVtQXJndW1lbnRzKSB7Ci0gICAgICAgIEFTU0VSVChpIDwg
UHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAgICAgICAgIGlmICghQmFzZTo6ZGVsZXRlUHJvcGVy
dHkoY2VsbCwgZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKHRoaXNPYmplY3QtPnRyeURlbGV0ZUFyZ3VtZW50KGkpKQpAQCAtMjg0LDcg
KzI4NCw3IEBAIGJvb2wgQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtCiAgICAgQXJndW1lbnRzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEFyZ3VtZW50cyo+KG9iamVjdCk7CiAgICAgdW5zaWduZWQgaSA9IHByb3Bl
cnR5TmFtZS5hc0luZGV4KCk7CiAgICAgaWYgKGkgPCB0aGlzT2JqZWN0LT5tX251bUFyZ3VtZW50
cykgewotICAgICAgICBBU1NFUlQoaSA8IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogICAgICAg
ICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHlldCBwcmVzZW50IG9uIHRoZSBvYmplY3QsIGFu
ZCBpcyBub3QgeWV0IG1hcmtlZCBhcyBkZWxldGVkLCB0aGVuIGFkZCBpdCBub3cuCiAgICAgICAg
IFByb3BlcnR5U2xvdCBzbG90OwogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPmlzRGVsZXRlZEFy
Z3VtZW50KGkpICYmICFKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIEFyZ3Vt
ZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIAogdm9pZCBBcmd1bWVudHM6OmRp
ZFRlYXJPZmZBY3RpdmF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uKQogewotICAgIEFTU0VSVChhY3RpdmF0aW9uKTsKKyAgICBSRUxFQVNFX0FTU0VSVChhY3Rp
dmF0aW9uKTsKICAgICBpZiAoaXNUb3JuT2ZmKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGMy
ZDNlNDg4NDIxYjRmMzcyMTc2YjYxY2E1ZWM5NGNlNmY3ZDYzNDQuLmMxN2UyZmI4NTc5OTFkNTE0
YWRiNjYyZjQ0NDgwNTdkODQ4YjE3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTE5NCwxMSArMTk0LDExIEBAIHN0YXRpYyB1
bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKEV4ZWNTdGF0ZSogZXhl
YywgaW50IGFyZ3VtZW50CiB0ZW1wbGF0ZTxKU0FycmF5OjpTaGlmdENvdW50TW9kZSBzaGlmdENv
dW50TW9kZT4KIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
dW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENv
dW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRDb3VudCA+IHJlc3Vs
dENvdW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7
CiAgICAgdW5zaWduZWQgY291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKIAotICAg
IEFTU0VSVChoZWFkZXIgPD0gbGVuZ3RoKTsKLSAgICBBU1NFUlQoY3VycmVudENvdW50IDw9IChs
ZW5ndGggLSBoZWFkZXIpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChoZWFkZXIgPD0gbGVuZ3RoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPD0gKGxlbmd0aCAtIGhlYWRlcikpOwog
CiAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodGhpc09iaik7CkBAIC0yMzIsMTEgKzIzMiwxMSBAQCB2b2lkIHNoaWZ0KEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwgdW5zaWduZWQg
Y3VycmVudAogdGVtcGxhdGU8SlNBcnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+
CiB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWdu
ZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENvdW50LCB1
bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKHJlc3VsdENvdW50ID4gY3VycmVudENvdW50
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHRDb3VudCA+IGN1cnJlbnRDb3VudCk7CiAgICAg
dW5zaWduZWQgY291bnQgPSByZXN1bHRDb3VudCAtIGN1cnJlbnRDb3VudDsKIAotICAgIEFTU0VS
VChoZWFkZXIgPD0gbGVuZ3RoKTsKLSAgICBBU1NFUlQoY3VycmVudENvdW50IDw9IChsZW5ndGgg
LSBoZWFkZXIpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChoZWFkZXIgPD0gbGVuZ3RoKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPD0gKGxlbmd0aCAtIGhlYWRlcikpOwogCiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBvdmVyZmxvdy4KICAgICBpZiAoY291bnQgPiAoVUlOVF9NQVggLSBs
ZW5ndGgpKSB7CkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgSlNW
YWx1ZSBzZWFyY2hFbGVtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgZG8gewotICAgICAg
ICBBU1NFUlQoaW5kZXggPCBsZW5ndGgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA8
IGxlbmd0aCk7CiAgICAgICAgIEpTVmFsdWUgZSA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmos
IGluZGV4KTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAppbmRleCA2NTY5MWNjOTRmNDhl
YTY5MzFiOTk1ZWE2MzYzZTBjYWY2YjRjOTcwLi42ODMxMDMwMGE0YTkzMGZjOTdlN2I3NmVkYWQ2
ZjkwNWM1YzEzMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
dXR0ZXJmbHlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0
dGVyZmx5SW5saW5lcy5oCkBAIC03NCw3ICs3NCw3IEBAIGlubGluZSB2b2lkKiBCdXR0ZXJmbHk6
OmJhc2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZs
eTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBw
cmVDYXBhY2l0eSwgc2l6ZV90IG9sZFByb3BlcnR5Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdI
ZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcywgc2l6ZV90IG5ld1Byb3Bl
cnR5Q2FwYWNpdHkpCiB7Ci0gICAgQVNTRVJUKG5ld1Byb3BlcnR5Q2FwYWNpdHkgPiBvbGRQcm9w
ZXJ0eUNhcGFjaXR5KTsKKyAgICBSRUxFQVNFX0FTU0VSVChuZXdQcm9wZXJ0eUNhcGFjaXR5ID4g
b2xkUHJvcGVydHlDYXBhY2l0eSk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBjcmVhdGVVbmlu
aXRpYWxpemVkKAogICAgICAgICBnbG9iYWxEYXRhLCBwcmVDYXBhY2l0eSwgbmV3UHJvcGVydHlD
YXBhY2l0eSwgaGFzSW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsK
ICAgICBtZW1jcHkoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAppbmRleCBmMTI1MTc1MWU3Yjk2ODU5ZDA3NGQyNmNhNjBlZWMyODE0NDIzNDllLi5kYmRmZGQ3
MWQxYWEwY2U0OTlmNGY5NDQzM2I1NzlkODcyOWFkZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xv
YmFsQ29kZShKU0dsbwogICAgIEFTU0VSVChleHByU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQo
KSk7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRl
bWVudE5vZGUqPihleHByU3RhdGVtZW50KS0+ZXhwcigpOwogICAgIEFTU0VSVChmdW5jRXhwcik7
Ci0gICAgQVNTRVJUKGZ1bmNFeHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChmdW5jRXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CiAgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGZ1bmNFeHByKS0+Ym9keSgpOwogICAg
IEFTU0VSVChib2R5KTsKICAgICBBU1NFUlQoYm9keS0+aWRlbnQoKS5pc051bGwoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IGFhODQ5MDJmMTljODc0
NmU2YzM0Zjg1YzBjYjE3MWU4MGExYzNlZTYuLjNiZTYwY2UxOGMzNDQyMjNlOGZlNDE4ZWMwMTRl
ZDVkNjgxYWM4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9tYXAuYWRkKGtleSwgbmV3SW5k
ZXgpOwogICAgICAgICBtX2RhdGFbbmV3SW5kZXhdLmZpcnN0ID0ga2V5OwogICAgICAgICBtX2Rh
dGFbbmV3SW5kZXhdLnNlY29uZCA9IHZhbHVlOwotICAgICAgICBBU1NFUlQobV9tYXAuc2l6ZSgp
IDw9IENhY2hlU2l6ZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fbWFwLnNpemUoKSA8PSBD
YWNoZVNpemUpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCA3MTlmZWY1NGVjOGJjZDIxYzJiN2Q3
Yjk4M2NiYjE2ZmQ1Njk2MzVjLi5lYmFjMDEyNjViZGRiMzlhNGRmMGUwMDM5MGYyNzAzYzZjOGUx
NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGJvb2wgY2hlY2tTeW50YXgoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUqIHJldHVybmVkRXhj
ZXB0aW9uKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIEFTU0VSVChleGVj
LT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50
SWRlbnRpZmllclRhYmxlKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmdsb2JhbERhdGEo
KS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFi
bGUoKSk7CiAKICAgICBQcm9ncmFtRXhlY3V0YWJsZSogcHJvZ3JhbSA9IFByb2dyYW1FeGVjdXRh
YmxlOjpjcmVhdGUoZXhlYywgc291cmNlKTsKICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5jaGVja1N5bnRheChleGVjKTsKQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSBldmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFs
dWUsIEoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgQVNTRVJU
KHJlc3VsdCk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IGZlMmM2NWNmOGE3ZGZkMTdmNGEzZWFkNGEzNjIyZDVmZjM1YTBjMzAuLmYyNmMzYTYwYzIx
Y2Q1MGUzZTNiNWQxYzhiNjllYjUxNjhhZjAwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgRnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBTb3VyY2VDb2QKICAgICA6IFNjcmlwdEV4ZWN1dGFibGUoZ2xvYmFsRGF0YS5mdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIGdsb2JhbERhdGEsIHNvdXJjZSwgdW5saW5rZWRFeGVj
dXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICwgbV91bmxpbmtlZEV4ZWN1dGFibGUo
Z2xvYmFsRGF0YSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlKQogewotICAgIEFTU0VSVCghc291
cmNlLmlzTnVsbCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc291cmNlLmlzTnVsbCgpKTsKICAg
ICBBU1NFUlQoc291cmNlLmxlbmd0aCgpKTsKICAgICBtX2ZpcnN0TGluZSA9IGZpcnN0TGluZTsK
ICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBFdmFs
RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMoKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKCFtX2pp
dENvZGVGb3JDYWxsKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1fZXZhbENvZGVCbG9j
ayk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9ldmFsQ29kZUJsb2NrKTsKICAgICBtX2V2YWxDb2Rl
QmxvY2stPnVubGlua0NhbGxzKCk7CiAjZW5kaWYKIH0KQEAgLTI4OCw3ICsyODgsNyBAQCBKU09i
amVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYykKIAog
SlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTY29wZSogc2NvcGUsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgQVNT
RVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CiAgICAgQVNT
RVJUKCEhbV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBKU09iamVjdCogZXJyb3IgPSAwOwogICAg
IGlmIChtX3Byb2dyYW1Db2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjp0b3BUaWVy
SklUKCkpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMoKQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKCFtX2ppdENvZGVGb3JDYWxsKQogICAg
ICAgICByZXR1cm47Ci0gICAgQVNTRVJUKG1fcHJvZ3JhbUNvZGVCbG9jayk7CisgICAgUkVMRUFT
RV9BU1NFUlQobV9wcm9ncmFtQ29kZUJsb2NrKTsKICAgICBtX3Byb2dyYW1Db2RlQmxvY2stPnVu
bGlua0NhbGxzKCk7CiAjZW5kaWYKIH0KQEAgLTM3NSw5ICszNzUsOSBAQCBpbnQgUHJvZ3JhbUV4
ZWN1dGFibGU6OmFkZEdsb2JhbFZhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBJZGVudGlmaQogCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9i
YWxQcm9wZXJ0aWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTU2NvcGUqIHNjb3BlKQogewotICAgIEFTU0VSVChzY29wZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoc2NvcGUpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzY29wZS0+
Z2xvYmFsT2JqZWN0KCk7Ci0gICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZ2xvYmFsT2JqZWN0KTsKICAgICBBU1NFUlQoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpID09ICZnbG9iYWxEYXRhKTsKIAogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSAwOwpAQCAt
NDQyLDIxICs0NDIsMjEgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2kKICAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkKICAgICAgICAgcmVzdWx0ID0gbV9jb2RlQmxvY2tGb3JDYWxsLmdldCgp
OwogICAgIGVsc2UgewotICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKICAgICAg
ICAgcmVzdWx0ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICByZXR1cm4gMDsKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5h
dGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7CisgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVz
dWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU09iamVjdCog
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pemVkRm9yQ2FsbChFeGVjU3RhdGUqIGV4
ZWMsIEpTU2NvcGUqIHNjb3BlLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotICAgIEFTU0VS
VChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgIEFTU0VS
VCghIW1fY29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gMDsKICAgICBp
ZiAobV9jb2RlQmxvY2tGb3JDYWxsLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJ
VCgpKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVPcHRpbWl6ZWRGb3JDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSoKIAogSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXplZEZvckNvbnN0cnVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewot
ICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwog
ICAgIEFTU0VSVCghIW1fY29kZUJsb2NrRm9yQ29uc3RydWN0KTsKICAgICBKU09iamVjdCogZXJy
b3IgPSAwOwogICAgIGlmIChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+Z2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKQEAgLTUzMiw3ICs1MzIsNyBAQCBKU09iamVjdCogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogcwogICAgIG1fY29kZUJsb2NrRm9yQ2FsbCA9IG5ld0NvZGVCbG9jay5yZWxlYXNl
KCk7CiAgICAgCiAgICAgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCA9IG1fY29kZUJsb2NrRm9yQ2Fs
bC0+bnVtUGFyYW1ldGVycygpOwotICAgIEFTU0VSVChtX251bVBhcmFtZXRlcnNGb3JDYWxsKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChtX251bVBhcmFtZXRlcnNGb3JDYWxsKTsKIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYywgbV9jb2Rl
QmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2ssIGppdFR5cGUsIGJ5dGVjb2RlSW5kZXgsIENvZGVGb3JDYWxsKSkKQEAgLTU2OCw3ICs1
NjgsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBKU1NjbwogICAgIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0ID0gbmV3Q29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICAKICAgICBtX251bVBhcmFtZXRlcnNG
b3JDb25zdHJ1Y3QgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+bnVtUGFyYW1ldGVycygpOwot
ICAgIEFTU0VSVChtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3QpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdCk7CiAKICNpZiBFTkFCTEUoSklUKQogICAg
IGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrLCBqaXRUeXBlLCBieXRlY29kZUluZGV4LCBDb2RlRm9yQ29uc3RydWN0KSkKQEAg
LTYzOSwxMSArNjM5LDExIEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygp
CiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoISFtX2ppdENvZGVGb3JDYWxsKSB7Ci0gICAg
ICAgIEFTU0VSVChtX2NvZGVCbG9ja0ZvckNhbGwpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2NvZGVCbG9ja0ZvckNhbGwpOwogICAgICAgICBtX2NvZGVCbG9ja0ZvckNhbGwtPnVubGlua0Nh
bGxzKCk7CiAgICAgfQogICAgIGlmICghIW1faml0Q29kZUZvckNvbnN0cnVjdCkgewotICAgICAg
ICBBU1NFUlQobV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCk7CiAgICAgICAgIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LT51bmxpbmtDYWxscygpOwogICAgIH0KICNlbmRpZgpAQCAtNjc5LDcgKzY3OSw3IEBAIENv
ZGVCbG9ja0hhc2ggTmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpIGNvbnN0CiAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCiAgICAgICAgIHJl
dHVybiBDb2RlQmxvY2tIYXNoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXR3aXNlX2Nhc3Q8c2l6
ZV90PihtX2Z1bmN0aW9uKSkpOwogICAgIAotICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CiAg
ICAgcmV0dXJuIENvZGVCbG9ja0hhc2goc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHdpc2VfY2Fz
dDxzaXplX3Q+KG1fY29uc3RydWN0b3IpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCBlZWMzOTRkYTkwMTQ3MTQyMWFiZmNmZjgyZjk1NGVk
MGU4Mjc3YWVhLi5kM2RkOTI5YTk3NDg5YzMwY2M1OTA0MTBkNmI3OTFjNTk0NjVlOTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC00MjksNyArNDI5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGUoRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KGV4ZWMtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IDA7CiAgICAgICAgICAgICBpZiAoIW1fZXZhbENv
ZGVCbG9jaykKICAgICAgICAgICAgICAgICBlcnJvciA9IGNvbXBpbGVJbnRlcm5hbChleGVjLCBz
Y29wZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhlYy0+Z2xv
YmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgICAgICAgICAg
SlNPYmplY3QqIGVycm9yID0gMDsKICAgICAgICAgICAgIGlmICghbV9wcm9ncmFtQ29kZUJsb2Nr
KQogICAgICAgICAgICAgICAgIGVycm9yID0gY29tcGlsZUludGVybmFsKGV4ZWMsIHNjb3BlLCBK
SVRDb2RlOjpib3R0b21UaWVySklUKCkpOwpAQCAtNjAxLDcgKzYwMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqIGV4ZWMs
IEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZXhlYy0+Z2xv
YmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgICAgICAgICAg
SlNPYmplY3QqIGVycm9yID0gMDsKICAgICAgICAgICAgIGlmICghbV9jb2RlQmxvY2tGb3JDYWxs
KQogICAgICAgICAgICAgICAgIGVycm9yID0gY29tcGlsZUZvckNhbGxJbnRlcm5hbChleGVjLCBz
Y29wZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKQEAgLTYyOSw3ICs2MjksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBKU09iamVjdCogY29tcGlsZUZvckNvbnN0cnVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gMDsKICAgICAgICAgICAgIGlmICghbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QpCiAgICAgICAgICAgICAgICAgZXJyb3IgPSBjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoZXhlYywgc2NvcGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRleGluZ0hlYWRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kZXhpbmdIZWFkZXIuaAppbmRleCBj
YWExODE4M2FlNjJiYjdjMGM1Njg2MzAxZDcwMTkyOWUxYjllZWYxLi5iZDBkOTZhMGUzNGMxYTUw
NzgwOTZhN2YzM2ZjZDBhY2U1ZjIyNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbmRleGluZ0hlYWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luZGV4aW5nSGVhZGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgc2V0VmVjdG9yTGVuZ3RoKHVpbnQzMl90IGxlbmd0aCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChsZW5ndGggPD0gbWF4aW11bUxlbmd0aCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxlbmd0aCA8PSBtYXhpbXVtTGVuZ3RoKTsKICAgICAgICAgbV92ZWN0b3JMZW5ndGggPSBsZW5n
dGg7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAppbmRleCA2MTQ1ZmY5OGMwOGJkODQ2Mzg3MjEzNDJkMDkwMDgwODFjYmViNDFhLi4zN2UwNzAz
ZmQ5ZDE5Y2VlNGJjYjc2ZGM4NTYxNGVhNmE1MTMzMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIEpTVmFsdWUgSlNBcnJh
eTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKCFsZW5ndGgtLSkKICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAKLSAgICAgICAgQVNTRVJUKGxlbmd0
aCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxlbmd0aCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBtX2J1dHRlcmZseS0+Y29udGlndW91cygpW2xlbmd0aF0uZ2V0KCk7CiAgICAgICAg
IGlmICh2YWx1ZSkgewogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5n
dGhdLmNsZWFyKCk7CkBAIC00ODUsNyArNDg1LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhl
Y1N0YXRlKiBleGVjKQogICAgICAgICBpZiAoIWxlbmd0aC0tKQogICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIAotICAgICAgICBBU1NFUlQobGVuZ3RoIDwgbV9idXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDwg
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgZG91YmxlIHZhbHVlID0gbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtsZW5ndGhdOwogICAgICAgICBpZiAodmFsdWUg
PT0gdmFsdWUpIHsKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClb
bGVuZ3RoXSA9IFFOYU47CkBAIC01MTMsNyArNTEzLDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3Ao
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgIEpTVmFsdWUgZWxlbWVudCA9IHZhbHVl
U2xvdC5nZXQoKTsKICAgICAgICAgICAgICAgICB2YWx1ZVNsb3QuY2xlYXIoKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChpc0xlbmd0aFdyaXRhYmxlKCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGVuZ3RoV3JpdGFibGUoKSk7CiAgICAgICAgICAg
ICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIEpTQXJyYXk6
OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogYm9vbCBKU0FycmF5OjpzaGlm
dENvdW50V2l0aEFycmF5U3RvcmFnZSh1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3Vu
dCwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IHN0
b3JhZ2UtPmxlbmd0aCgpOwotICAgIEFTU0VSVChjb3VudCA8PSBvbGRMZW5ndGgpOworICAgIFJF
TEVBU0VfQVNTRVJUKGNvdW50IDw9IG9sZExlbmd0aCk7CiAgICAgCiAgICAgLy8gSWYgdGhlIGFy
cmF5IGNvbnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5vcm1hbCBzdGF0ZSwK
ICAgICAvLyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJvdG90eXBlLgpAQCAt
NzM2LDcgKzczNiw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2Uo
dW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFyCiAKIGJvb2wgSlNBcnJheTo6
c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBz
dGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBBU1NFUlQoY291bnQgPiAwKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChjb3VudCA+IDApOwogICAgIAogICAgIHN3aXRjaCAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAtNzQ5LDcgKzc0
OSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoK
ICAgICBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IHsKICAgICAgICAgdW5zaWduZWQgb2xkTGVu
Z3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAgICAgICBBU1NFUlQoY291bnQg
PD0gb2xkTGVuZ3RoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPD0gb2xkTGVuZ3Ro
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBh
cnJheSB0byBkbyB0aGUgc2hpZnQuIFdlJ3JlIHdpbGxpbmcgdG8gZG8KICAgICAgICAgLy8gc28g
b25seSBpZiBpdCdzIG5vdCBob3JyaWJseSBzbG93LgpAQCAtNzg0LDcgKzc4NCw3IEBAIGJvb2wg
SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBzdGFydEluZGV4CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7
CiAgICAgICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsKLSAgICAgICAgQVNTRVJUKGNvdW50IDw9IG9sZExlbmd0aCk7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNvdW50IDw9IG9sZExlbmd0aCk7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBtYXkg
aGF2ZSB0byB3YWxrIHRoZSBlbnRpcmUgYXJyYXkgdG8gZG8gdGhlIHNoaWZ0LiBXZSdyZSB3aWxs
aW5nIHRvIGRvCiAgICAgICAgIC8vIHNvIG9ubHkgaWYgaXQncyBub3QgaG9ycmlibHkgc2xvdy4K
QEAgLTgzMiw3ICs4MzIsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0
b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LAogewogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogCi0gICAgQVNTRVJUKHN0YXJ0SW5kZXgg
PD0gbGVuZ3RoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdGFydEluZGV4IDw9IGxlbmd0aCk7CiAK
ICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFu
IGFibm9ybWFsIHN0YXRlLAogICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJy
YXlQcm90b3R5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKaW5kZXggYmNmYjA0ZjBmYzgwYTY2YzI0M2M5
ZmY1OTY2NmE3NWY3MzNmOTAxZS4uOGZjMzQ0MWZiMDljZTBhNDk4NjM2YjMyNDMwZDk3MjExZjky
YTU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBkb3Vi
bGUganNIZXhJbnRlZ2VyTGl0ZXJhbChjb25zdCBDaGFyVHlwZSomIGRhdGEsIGNvbnN0IENoYXJU
eXBlKiBlbmQpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBzdGF0aWMgZG91YmxlIGpz
U3RyRGVjaW1hbExpdGVyYWwoY29uc3QgQ2hhclR5cGUqJiBkYXRhLCBjb25zdCBDaGFyVHlwZSog
ZW5kKQogewotICAgIEFTU0VSVChkYXRhIDwgZW5kKTsKKyAgICBSRUxFQVNFX0FTU0VSVChkYXRh
IDwgZW5kKTsKIAogICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CiAgICAgZG91YmxlIG51bWJlciA9
IHBhcnNlRG91YmxlKGRhdGEsIGVuZCAtIGRhdGEsIHBhcnNlZExlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggOTI0YjdlNmMyOGI5ODFiMzVi
MDdhN2NkZDlhZWVlMzYxOGRmZmIwOC4uYzkyYTgyMjI5MGQ5YzA3MmM1ZmE2ZmQ0YjU4YWE5ZjM0
M2RiNmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApA
QCAtMTM1LDcgKzEzNSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6Y29weUJ1dHRl
cmZseShDb3B5VmlzaXRvciYgdmlzaXRvciwgQnV0dGVyZmx5KiBidXR0CiAgICAgICAgICAgICBj
YXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgICAgICAgICBjdXJyZW50
VGFyZ2V0ID0gbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiAgICAgICAgICAgICAgICAgY3Vy
cmVudFNvdXJjZSA9IGJ1dHRlcmZseS0+Y29udGlndW91cygpOwotICAgICAgICAgICAgICAgIEFT
U0VSVChuZXdCdXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpIDw9IG5ld0J1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseS0+
cHVibGljTGVuZ3RoKCkgPD0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgY291bnQgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaW5kZXgsIFByb3BlcnQKICAgICAgICAgbm90aWZ5UHJlc2VuY2VPZkluZGV4ZWRBY2Nlc3Nv
cnMoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKIAogICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9
IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCk7Ci0gICAgQVNT
RVJUKG1hcCk7CisgICAgUkVMRUFTRV9BU1NFUlQobWFwKTsKIAogICAgIC8vIDEuIExldCBjdXJy
ZW50IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggcHJvcGVydHkgbmFtZSBQLgogICAgIFNwYXJzZUFycmF5VmFs
dWVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAtPmFkZCh0aGlzLCBpbmRleCk7CkBAIC0xODcz
LDcgKzE4NzMsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bgogCiAgICAgZW5zdXJlTGVuZ3Ro
KGdsb2JhbERhdGEsIGkgKyAxKTsKIAotICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rv
ckxlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpKTsKICAgICBzd2l0Y2ggKGluZGV4aW5nU2hhcGUpIHsKICAgICBjYXNlIEludDMyU2hh
cGU6CiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0ludDMyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGYwZTc5NmQ4OTcxYTA3YTYxMzNmNTFmM2Fm
ZWYxNWVmZTA4ZjZkNTcuLmRjMzY5Y2FhMTViODA1MGRiZDlmODcyY2I5ZGZhYmZiMDVhY2MwYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTIzMyw3
ICsyMzMsNyBAQCBKU1N0cmluZyogSlNSb3BlU3RyaW5nOjpnZXRJbmRleFNsb3dDYXNlKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgaSkKICAgICBpZiAoZXhlYy0+ZXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghaXNSb3BlKCkpOwot
ICAgIEFTU0VSVChpIDwgbV92YWx1ZS5sZW5ndGgoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoaSA8
IG1fdmFsdWUubGVuZ3RoKCkpOwogICAgIHJldHVybiBqc1NpbmdsZUNoYXJhY3RlclN1YnN0cmlu
ZyhleGVjLCBtX3ZhbHVlLCBpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXggNTQ3MDIyZjM0MTA0ZmU2NTUxNDBkNTBiOWE1MDhk
MTM2YzMwODgzOC4uZjViYjBkNGQwZjk3NWQ5NjBlM2Y0OWUwYmZlODU0MDVjYjAzZjkyOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC04
Myw4ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBwb3BQYXJlbnRo
ZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMqIGJhY2tUcmFj
aykKICAgICB7Ci0gICAgICAgIEFTU0VSVChiYWNrVHJhY2stPm1hdGNoQW1vdW50KTsKLSAgICAg
ICAgQVNTRVJUKGJhY2tUcmFjay0+bGFzdENvbnRleHQpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChiYWNrVHJhY2stPm1hdGNoQW1vdW50KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmFja1Ry
YWNrLT5sYXN0Q29udGV4dCk7CiAgICAgICAgIGJhY2tUcmFjay0+bGFzdENvbnRleHQgPSBiYWNr
VHJhY2stPmxhc3RDb250ZXh0LT5uZXh0OwogICAgICAgICAtLWJhY2tUcmFjay0+bWF0Y2hBbW91
bnQ7CiAgICAgfQo=
</data>
<flag name="review"
          id="203079"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>