<?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>170187</bug_id>
          
          <creation_ts>2017-03-28 11:02:33 -0700</creation_ts>
          <short_desc>WebAssembly: fix misc JS API implementation inconsistencies</short_desc>
          <delta_ts>2017-03-30 00:16:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit 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>
          <dependson>169187</dependson>
          <blocked>161709</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291953</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 11:02:33 -0700</bug_when>
    <thetext>Saam pointed out that I was using a weird pattern for exception return in bug #166982 and I went on a inconsistency-busting tour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291955</commentid>
    <comment_count>1</comment_count>
      <attachid>305606</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 11:07:34 -0700</bug_when>
    <thetext>Created attachment 305606
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291962</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-28 11:11:51 -0700</bug_when>
    <thetext>It would be great if we could hold off on this for a few hours until https://bugs.webkit.org/show_bug.cgi?id=169187 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291965</commentid>
    <comment_count>3</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 11:14:45 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #2)
&gt; It would be great if we could hold off on this for a few hours until
&gt; https://bugs.webkit.org/show_bug.cgi?id=169187 lands.

Sure thing! It&apos;s way easier for me to rebase, I&apos;m just moving a few things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292008</commentid>
    <comment_count>4</comment_count>
      <attachid>305621</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 12:43:06 -0700</bug_when>
    <thetext>Created attachment 305621
patch

Missing JSC inlines header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292694</commentid>
    <comment_count>5</comment_count>
      <attachid>305831</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 21:33:23 -0700</bug_when>
    <thetext>Created attachment 305831
patch

Update after Keith&apos;s change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292695</commentid>
    <comment_count>6</comment_count>
      <attachid>305831</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-29 21:39:03 -0700</bug_when>
    <thetext>Comment on attachment 305831
patch

r=me. Maybe it&apos;s worth making some tests though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292711</commentid>
    <comment_count>7</comment_count>
      <attachid>305838</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 23:34:42 -0700</bug_when>
    <thetext>Created attachment 305838
patch

Add tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292727</commentid>
    <comment_count>8</comment_count>
      <attachid>305838</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-30 00:16:30 -0700</bug_when>
    <thetext>Comment on attachment 305838
patch

Clearing flags on attachment: 305838

Committed r214601: &lt;http://trac.webkit.org/changeset/214601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292728</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-30 00:16:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305606</attachid>
            <date>2017-03-28 11:07:34 -0700</date>
            <delta_ts>2017-03-28 12:43:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-misc.patch</filename>
            <type>text/plain</type>
            <size>27765</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4ZGUxYWJhODQyNjQyODcwMDVmNDE2NDc1ZDk4MmIwOGYwMjc4YTc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDExOjA2OjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS1t
aXNjCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgIDM1ICsrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJs
eS5jcHAgICAgICAgfCAxMTggKy0tLS0tLS0tLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaCAgICAgICAgIHwgICA0ICstCiAuLi4vd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgICAgICAgICB8ICAzNiArKystLS0KIC4uLi93
YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggICAgICAgICAgIHwgICA0ICstCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAgICAgICAgICAgICAgICB8IDEyNCAr
KysrKysrKysrKysrKysrKystLS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5
cGUuY3BwICAgICAgICAgIHwgIDU4ICsrKystLS0tLS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUuaCAgICAgICAgICAgIHwgICA0ICstCiA4IGZpbGVzIGNoYW5nZWQsIDE5
NSBpbnNlcnRpb25zKCspLCAxODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
aW5kZXggNTNhZDQ0Yi4uNTBlMjUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzggQEAKKzIwMTctMDMtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYkFzc2VtYmx5OiBmaXggbWlzYyBKUyBBUEkgaW1wbGVtZW50YXRpb24gaW5j
b25zaXN0ZW5jaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzAxODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdhc20vSlNXZWJBc3NlbWJseS5jcHA6IHZhbGlkYXRlIC8gY29tcGlsZSAvIGluc3Rh
bnRpYXRlIHNob3VsZAorICAgICAgICBiZSBvbiB0aGUgcHJvdG90eXBlCisgICAgICAgIChKU0M6
OkpTV2ViQXNzZW1ibHk6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHk6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlDb21waWxlRnVuYyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMpOiBEZWxldGVkLgorICAg
ICAgICAqIHdhc20vSlNXZWJBc3NlbWJseS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlNZW1vcnlQcm90b3R5cGUuY3BwOiBtb3ZlIHZhbGlkYXRlIC8gY29tcGlsZQorICAgICAgICAv
IGluc3RhbnRpYXRlIGhlcmUsIGFuZCB1c2UgYXV0by1nZW5lcmF0ZWQgbG9va3VwIHRhYmxlcwor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcik6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcDogdXNlIGF1dG8tZ2VuZXJhdGVkIGxvb2t1cCB0YWJs
ZXMKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMpOgorICAgICAgICAoSlND
Ojp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0
YW50aWF0ZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0aW9uQ29tcGlsZSk6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDog
bWFrZSBleGNlcHRpb24gcmV0dXJuIGlkaW9tYXRpYworICAgICAgICAoSlNDOjp3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR3Jvdyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNHZXQpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KToK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oOgorCiAyMDE3LTAzLTI3
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJs
eTogSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGJlbG9uZ3MgaW4gSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcyBub3QgSmF2YVNjcmlwdENvcmUvd2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9KU1dlYkFzc2VtYmx5LmNwcAppbmRleCBmY2RjOGNkLi43ZjVkY2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMTkgKzI4LDE2IEBACiAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNs
dWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJz
LmgiCi0jaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJXYXNtUGxhbi5o
IgotI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCIKLQogbmFtZXNwYWNl
IEpTQyB7CiAKLVNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1dlYkFz
c2VtYmx5KTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlk
YXRlRnVuYyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNz
ZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKik7Ci0KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0g
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0KLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRydWx5IGFzeW5jaHJvbm91czoKLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MDE2Ci0gICAgSlNW
YWx1ZSBtb2R1bGUgPSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1bGUo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2Vi
QXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSk7Ci0gICAgaWYgKEV4Y2VwdGlvbiogZXhjZXB0aW9u
ID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKSkgewotICAgICAgICBjYXRjaFNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBleGNlcHRpb24tPnZhbHVl
KCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7
Ci0gICAgfQotCi0gICAgcHJvbWlzZS0+cmVzb2x2ZShleGVjLCBtb2R1bGUpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgQVBJIHRy
dWx5IGFzeW5jaHJvbm91czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2OTE4NwotCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZl
cnJlZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLQotICAgIGF1
dG8gcmVqZWN0ID0gWyZdICgpIHsKLSAgICAgICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpOwotICAgICAgICBBU1NFUlQoZXhjZXB0aW9uKTsKLSAgICAgICAg
Y2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhl
YywgZXhjZXB0aW9uLT52YWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
cm9taXNlLT5wcm9taXNlKCkpOwotICAgIH07Ci0KLSAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50
ID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0gICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9y
dEFyZ3VtZW50LmdldE9iamVjdCgpOwotICAgIGlmICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmlu
ZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBj
cmVhdGVUeXBlRXJyb3IoZXhlYywKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCgic2Vjb25kIGFy
Z3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFu
IE9iamVjdCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1w
b3J0QXJndW1lbnQpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+
cHJvbWlzZSgpKTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKLSAgICBKU1ZhbHVlIG1vZHVsZTsKLSAgICBib29sIGZpcnN0QXJndW1lbnRJ
c01vZHVsZSA9IGZhbHNlOwotICAgIGlmIChmaXJzdEFyZ3VtZW50LmluaGVyaXRzKHZtLCBKU1dl
YkFzc2VtYmx5TW9kdWxlOjppbmZvKCkpKSB7Ci0gICAgICAgIGZpcnN0QXJndW1lbnRJc01vZHVs
ZSA9IHRydWU7Ci0gICAgICAgIG1vZHVsZSA9IGZpcnN0QXJndW1lbnQ7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbW9kdWxlID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlTW9k
dWxlKGV4ZWMsIGZpcnN0QXJndW1lbnQsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2Vi
QXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIGlmIChjYXRjaFNjb3BlLmV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgpOwotICAgIH0KLQotICAgIEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBXZWJBc3NlbWJseUluc3RhbmNlQ29uc3RydWN0
b3I6OmNyZWF0ZUluc3RhbmNlKGV4ZWMsIGpzQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4obW9k
dWxlKSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPldlYkFzc2Vt
Ymx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7Ci0gICAgaWYgKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybiByZWplY3QoKTsKLQotICAgIGlmIChmaXJzdEFyZ3VtZW50SXNNb2R1
bGUpCi0gICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgaW5zdGFuY2UpOwotICAgIGVsc2Ug
ewotICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7
Ci0gICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2
bSwgQVNDSUlMaXRlcmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7Ci0gICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJpbnN0
YW5jZSIpKSwgaW5zdGFuY2UpOwotICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIHJlc3Vs
dCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNl
KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRh
dGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIHNpemVfdCBieXRl
T2Zmc2V0OwotICAgIHNpemVfdCBieXRlU2l6ZTsKLSAgICB1aW50OF90KiBiYXNlID0gZ2V0V2Fz
bUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgYnl0ZU9mZnNldCwgYnl0
ZVNpemUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIFdhc206OlBsYW4gcGxhbigmdm0sIGJhc2UgKyBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7
Ci0gICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBo
ZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxsIE9PTS4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MDE1Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhbi5wYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkpKTsKLX0K
LQogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHk6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5KSB9
OwogCi1KU1dlYkFzc2VtYmx5KiBKU1dlYkFzc2VtYmx5OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU1dlYkFzc2VtYmx5KTsKKworSlNXZWJBc3Nl
bWJseSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxKU1dlYkFzc2VtYmx5Pih2bS5oZWFwKSkgSlNXZWJBc3NlbWJseSh2bSwgc3Ry
dWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwor
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAK
QEAgLTE0OSwxMyArNDYsMTAgQEAgU3RydWN0dXJlKiBKU1dlYkFzc2VtYmx5OjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBKU1dlYkFzc2Vt
Ymx5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit2b2lkIEpTV2ViQXNzZW1ibHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidmFsaWRhdGUiLCB3
ZWJBc3NlbWJseVZhbGlkYXRlRnVuYywgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJjb21waWxlIiwgd2ViQXNzZW1ibHlDb21waWxlRnVu
YywgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKCJpbnN0YW50aWF0ZSIsIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jLCBEb250RW51bSwg
MSk7CiB9CiAKIEpTV2ViQXNzZW1ibHk6OkpTV2ViQXNzZW1ibHkoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2Vi
QXNzZW1ibHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaApp
bmRleCAxMzNlZjgxLi4yZTcwMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9KU1dlYkFzc2VtYmx5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNX
ZWJBc3NlbWJseS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
cHJvdGVjdGVkOgotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogcHJpdmF0ZToKICAgICBKU1dlYkFz
c2VtYmx5KFZNJiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKaW5kZXggOGQz
NjFhZS4uMjI4NGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBKU0Mgewogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhl
Y1N0YXRlKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQu
aCIKQEAgLTQ3LDEyICs0OCwxMSBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5Lk1lbW9yeS5wcm90bwogCiAvKiBTb3Vy
Y2UgZm9yIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gcHJvdG90eXBl
VGFibGVXZWJBc3NlbWJseU1lbW9yeQotICBncm93ICAgICB3ZWJBc3NlbWJseU1lbW9yeVByb3Rv
RnVuY0dyb3cgICBEb250RW51bXxGdW5jdGlvbiAxCisgZ3JvdyAgIHdlYkFzc2VtYmx5TWVtb3J5
UHJvdG9GdW5jR3JvdyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBidWZmZXIgd2ViQXNzZW1ibHlN
ZW1vcnlQcm90b0Z1bmNCdWZmZXIgRG9udEVudW18QWNjZXNzb3IgMAogQGVuZAogKi8KIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZl
cihFeGVjU3RhdGUqKTsKLQogQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5TWVtb3J5KiBnZXRN
ZW1vcnkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CkBAIC02NywxNiArNjcsNiBAQCBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlN
ZW1vcnkqIGdldE1lbW9yeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgcmV0
dXJuIG1lbW9yeTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJs
eU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKLQotICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdldE1lbW9yeShleGVjLCBl
eGVjLT50aGlzVmFsdWUoKSk7IAotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+YnVmZmVyKGV4ZWMtPnZt
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTk1LDEwICs4NSwyMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1
bHQucGFnZUNvdW50KCkpKTsKIH0KIAotV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBn
ZXRNZW1vcnkoZXhlYywgZXhlYy0+dGhpc1ZhbHVlKCkpOyAKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtZW1vcnkt
PmJ1ZmZlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKK30KKwor
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUqIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5
TWVtb3J5UHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQogCkBAIC0xMDcsMTAgKzEwNywxMCBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZwogICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBKU0NfTkFUSVZFX0dFVFRFUigiYnVmZmVyIiwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNC
dWZmZXIsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7CiB9CiAKIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpXZWJBc3NlbWJseU1lbW9y
eVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBl
LmgKaW5kZXggZjA2MWZjZC4uMmQwYTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKIAogcHJpdmF0ZToKICAgICBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCmluZGV4IDJlMTc5NzcuLjBlNmFlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3Rv
dHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjgsMjUgKzI4LDIyIEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNp
bmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1Byb21pc2VEZWZlcnJlZC5oIgorI2lu
Y2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIk9i
amVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiV2FzbVBsYW4uaCIKKyNpbmNsdWRlICJXZWJB
c3NlbWJseUluc3RhbmNlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVs
ZUNvbnN0cnVjdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewotCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNz
ZW1ibHkgZG9lc24ndCB5ZXQgaW1wbGVtZW50IHRoZSB2YWxpZGF0ZSBmdW5jdGlvbiBwcm9wZXJ0
eSIpKSkpOwotfQotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUZ1bmN0aW9uQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0IHlldCBpbXBsZW1l
bnQgdGhlIGNvbXBpbGUgZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKLX0KLQorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRl
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBp
bGVGdW5jKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKik7CiB9CiAKICNpbmNsdWRlICJX
ZWJBc3NlbWJseVByb3RvdHlwZS5sdXQuaCIKQEAgLTU3LDExICs1NCwxMDIgQEAgY29uc3QgQ2xh
c3NJbmZvIFdlYkFzc2VtYmx5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5wcm90
b3R5cGUiLCAmQmFzZToKIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseVByb3RvdHlwZS5sdXQu
aAogIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFzc2VtYmx5Ci0gdmFsaWRhdGUgd2ViQXNzZW1i
bHlGdW5jdGlvblZhbGlkYXRlICBEb250RW51bXxGdW5jdGlvbiAxCi0gY29tcGlsZSAgd2ViQXNz
ZW1ibHlGdW5jdGlvbkNvbXBpbGUgICBEb250RW51bXxGdW5jdGlvbiAxCisgdmFsaWRhdGUgICAg
d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMgICAgRG9udEVudW18RnVuY3Rpb24gMQorIGNvbXBpbGUg
ICAgIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBpbnN0
YW50aWF0ZSB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyBEb250RW51bXxGdW5jdGlvbiAxCiAg
QGVuZAogICovCiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxp
ZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgc2l6ZV90IGJ5
dGVPZmZzZXQ7CisgICAgc2l6ZV90IGJ5dGVTaXplOworICAgIHVpbnQ4X3QqIGJhc2UgPSBnZXRX
YXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBieXRlT2Zmc2V0LCBi
eXRlU2l6ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgV2FzbTo6UGxhbiBwbGFuKCZ2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXpl
KTsKKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB0aHJvdyBhbiBPT00gZXhjZXB0aW9u
IGhlcmUgaWYgd2UgZGV0ZWN0IHRoYXQgc29tZXRoaW5nIHdpbGwgT09NLgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYwMTUKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKSkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBj
YXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB0cnVseSBhc3lu
Y2hyb25vdXM6CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NjAxNgorICAgIEpTVmFsdWUgbW9kdWxlID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rv
cjo6Y3JlYXRlTW9kdWxlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCkpOworICAgIGlmIChFeGNl
cHRpb24qIGV4Y2VwdGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgY2F0
Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBwcm9taXNlLT5yZWplY3QoZXhlYywg
ZXhjZXB0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9t
aXNlLT5wcm9taXNlKCkpOworICAgIH0KKworICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgbW9k
dWxlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1
bmMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICAvLyBGSVhNRTog
TWFrZSB0aGlzIEFQSSB0cnVseSBhc3luY2hyb25vdXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjkxODcKKworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
ID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CisKKyAgICBhdXRvIHJlamVjdCA9IFsmXSAoKSB7CisgICAgICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKGV4Y2Vw
dGlvbik7CisgICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKKyAgICB9OworCisgICAgSlNWYWx1
ZSBpbXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpTT2JqZWN0KiBpbXBv
cnRPYmplY3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsKKyAgICBpZiAoIWltcG9ydEFy
Z3VtZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkgeworICAgICAgICBwcm9taXNl
LT5yZWplY3QoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsCisgICAgICAgICAgICBBU0NJSUxp
dGVyYWwoInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSBtdXN0IGJl
IHVuZGVmaW5lZCBvciBhbiBPYmplY3QiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1l
VHlwZUZvclZhbHVlKGltcG9ydEFyZ3VtZW50KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CisgICAgfQorCisgICAgSlNWYWx1ZSBmaXJzdEFy
Z3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBtb2R1bGU7CisgICAgYm9v
bCBmaXJzdEFyZ3VtZW50SXNNb2R1bGUgPSBmYWxzZTsKKyAgICBpZiAoZmlyc3RBcmd1bWVudC5p
bmhlcml0cyh2bSwgSlNXZWJBc3NlbWJseU1vZHVsZTo6aW5mbygpKSkgeworICAgICAgICBmaXJz
dEFyZ3VtZW50SXNNb2R1bGUgPSB0cnVlOworICAgICAgICBtb2R1bGUgPSBmaXJzdEFyZ3VtZW50
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1vZHVsZSA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3Ry
dWN0b3I6OmNyZWF0ZU1vZHVsZShleGVjLCBmaXJzdEFyZ3VtZW50LCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPldlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCkpOworICAgICAgICBpZiAo
Y2F0Y2hTY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZWplY3QoKTsKKyAg
ICB9CisKKyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlID0gV2ViQXNzZW1ibHlJ
bnN0YW5jZUNvbnN0cnVjdG9yOjpjcmVhdGVJbnN0YW5jZShleGVjLCBqc0Nhc3Q8SlNXZWJBc3Nl
bWJseU1vZHVsZSo+KG1vZHVsZSksIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5XZWJBc3NlbWJseUluc3RhbmNlU3RydWN0dXJlKCkpOworICAgIGlmIChjYXRjaFNj
b3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gcmVqZWN0KCk7CisKKyAgICBpZiAoZmly
c3RBcmd1bWVudElzTW9kdWxlKQorICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGluc3Rh
bmNlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgibW9kdWxlIikpLCBtb2R1bGUpOworICAg
ICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFT
Q0lJTGl0ZXJhbCgiaW5zdGFuY2UiKSksIGluc3RhbmNlKTsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZShleGVjLCByZXN1bHQpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cHJvbWlzZS0+cHJvbWlzZSgpKTsKK30KKwogV2ViQXNzZW1ibHlQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPFdlYkFzc2VtYmx5UHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlQcm90b3R5cGUo
dm0sIHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCmluZGV4IDQ1YTdkNTcuLjE1ZTU4
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDEzIEBACiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5VGFibGUuaCIKIAor
bmFtZXNwYWNlIEpTQyB7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jTGVuZ3RoKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqKTsKK30KKwog
I2luY2x1ZGUgIldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtNDEsNiArNDgsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5VGFibGVQ
cm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHkKIAogLyogU291
cmNlIGZvciBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlw
ZVRhYmxlV2ViQXNzZW1ibHlUYWJsZQorIGxlbmd0aCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
TGVuZ3RoIERvbnRFbnVtfEFjY2Vzc29yIDAKKyBncm93ICAgd2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0dyb3cgICBEb250RW51bXxGdW5jdGlvbiAxCisgZ2V0ICAgIHdlYkFzc2VtYmx5VGFibGVQ
cm90b0Z1bmNHZXQgICAgRG9udEVudW18RnVuY3Rpb24gMQorIHNldCAgICB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jU2V0ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICBAZW5kCiAgKi8KIApAQCAt
NTYsMTEgKzY3LDYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseVRhYmxlKiBn
ZXRUYWJsZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWwKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KEV4ZWNTdGF0ZSopOwot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0
KEV4ZWNTdGF0ZSopOwotCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CkBAIC04MSwxMSArODcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVp
bnQzMl90IGluZGV4ID0gdG9Ob25XcmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgw
KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLSAgICBpZiAoIXRhYmxlLT5ncm93KGluZGV4KSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLAotICAgICAgICAgICAgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdy
b3cgdGhlIHRhYmxlIikpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKCF0
YWJsZS0+Z3JvdyhpbmRleCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdyb3cgY291bGQgbm90IGdyb3cgdGhl
IHRhYmxlIikpKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQpAQCAtMTAwLDExICsxMDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdWludDMy
X3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwot
ICAgIGlmIChpbmRleCA+PSB0YWJsZS0+c2l6ZSgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLmdldCBleHBlY3RzIGFuIGlu
dGVnZXIgbGVzcyB0aGFuIHRoZSBzaXplIG9mIHRoZSB0YWJsZSIpKSk7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQorICAgIGlmIChpbmRleCA+PSB0YWJsZS0+c2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90
b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRh
YmxlIikpKSk7CiAKICAgICBpZiAoSlNPYmplY3QqIHJlc3VsdCA9IHRhYmxlLT5nZXRGdW5jdGlv
bihpbmRleCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEy
MiwyMCArMTIyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlU
YWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbjsK
ICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbjsKLSAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpICYmICFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2
YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgewotICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLAotICAgICAgICAgICAgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBl
Y3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBXZWJB
c3NlbWJseS5GdW5jdGlvbiIpKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQorICAgIGlm
ICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVl
LCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQg
ZXhwZWN0cyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIG51bGwgb3IgYW4gaW5zdGFuY2Ugb2Yg
V2ViQXNzZW1ibHkuRnVuY3Rpb24iKSkpKTsKIAogICAgIHVpbnQzMl90IGluZGV4ID0gdG9Ob25X
cmFwcGluZ1VpbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIGlmIChpbmRleCA+
PSB0YWJsZS0+c2l6ZSgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsCi0gICAgICAgICAgICBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2Vi
QXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBleHBlY3RzIGFuIGludGVnZXIgbGVzcyB0aGFu
IHRoZSBzaXplIG9mIHRoZSB0YWJsZSIpKSk7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfQor
ICAgIGlmIChpbmRleCA+PSB0YWJsZS0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVj
dHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKSk7CiAKICAg
ICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHRhYmxlLT5jbGVhckZ1bmN0aW9uKGluZGV4
KTsKQEAgLTE1MSwxMCArMTQ1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZSogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitXZWJBc3NlbWJseVRh
YmxlUHJvdG90eXBlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU+
KHZtLmhlYXApKSBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtMTYzLDE0ICsx
NTcsMTAgQEAgU3RydWN0dXJlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2wKICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlUYWJsZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQordm9pZCBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotCi0gICAgSlNDX05BVElWRV9HRVRU
RVIoImxlbmd0aCIsIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgsIERvbnRFbnVtIHwg
QWNjZXNzb3IpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJn
cm93Iiwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3csIERvbnRFbnVtLCAxKTsKLSAgICBK
U0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiZ2V0Iiwgd2ViQXNzZW1ibHlU
YWJsZVByb3RvRnVuY0dldCwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05f
V0lUSE9VVF9UUkFOU0lUSU9OKCJzZXQiLCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0LCBE
b250RW51bSwgMik7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIH0KIAogV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCmluZGV4IDVlMDQ1MDUuLjhh
YjQyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5VGFibGVQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgREVD
TEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRl
OgogICAgIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKLS0gCjIu
MTAuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305621</attachid>
            <date>2017-03-28 12:43:06 -0700</date>
            <delta_ts>2017-03-29 21:33:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-misc.patch</filename>
            <type>text/plain</type>
            <size>27764</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmNjlmNjJjYjMxZjA3MzU0Yzk2ZThhZjM2YjZmYjdmZjllOWZkNWM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDExOjA2OjU3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS1t
aXNjCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgIDM1ICsrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJs
eS5jcHAgICAgICAgfCAxMTYgKy0tLS0tLS0tLS0tLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vSlNXZWJBc3NlbWJseS5oICAgICAgICAgfCAgIDQgKy0KIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCAgICAgICAgIHwgIDM2ICsrKy0tLQogLi4uL3dh
c20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCAgICAgICAgICAgfCAgIDQgKy0KIC4u
Li93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcCAgICAgICAgICAgICAgIHwgMTI0ICsr
KysrKysrKysrKysrKysrKy0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlw
ZS5jcHAgICAgICAgICAgfCAgNTggKysrKy0tLS0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5oICAgICAgICAgICAgfCAgIDQgKy0KIDggZmlsZXMgY2hhbmdlZCwgMTk1
IGluc2VydGlvbnMoKyksIDE4NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCA1M2FkNDRiLi41MGUyNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOCBAQAorMjAxNy0wMy0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViQXNzZW1ibHk6IGZpeCBtaXNjIEpTIEFQSSBpbXBsZW1lbnRhdGlvbiBpbmNv
bnNpc3RlbmNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2FzbS9KU1dlYkFzc2VtYmx5LmNwcDogdmFsaWRhdGUgLyBjb21waWxlIC8gaW5zdGFu
dGlhdGUgc2hvdWxkCisgICAgICAgIGJlIG9uIHRoZSBwcm90b3R5cGUKKyAgICAgICAgKEpTQzo6
SlNXZWJBc3NlbWJseTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6IERlbGV0ZWQuCisgICAg
ICAgICogd2FzbS9KU1dlYkFzc2VtYmx5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5jcHA6IG1vdmUgdmFsaWRhdGUgLyBjb21waWxlCisgICAgICAgIC8g
aW5zdGFudGlhdGUgaGVyZSwgYW5kIHVzZSBhdXRvLWdlbmVyYXRlZCBsb29rdXAgdGFibGVzCisg
ICAgICAgIChKU0M6OndlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKToKKyAgICAgICAg
KEpTQzo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oOgorICAgICAgICAqIHdhc20vanMv
V2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwOiB1c2UgYXV0by1nZW5lcmF0ZWQgbG9va3VwIHRhYmxl
cworICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5Q29tcGlsZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlRnVuYyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5RnVuY3Rpb25WYWxpZGF0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5RnVuY3Rpb25Db21waWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwOiBt
YWtlIGV4Y2VwdGlvbiByZXR1cm4gaWRpb21hdGljCisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNHcm93KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0dldCk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQpOgor
ICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmg6CisKIDIwMTctMDMtMjcg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5
OiBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmggYmVsb25ncyBpbiBKYXZhU2NyaXB0Q29yZS93YXNt
L2pzIG5vdCBKYXZhU2NyaXB0Q29yZS93YXNtCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV2ViQXNzZW1ibHkuY3BwCmluZGV4IGZjZGM4Y2QuLjI0N2E4YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDExOSArMjgsMTggQEAKIAog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgotI2luY2x1
ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMu
aCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIldhc21QbGFuLmgi
Ci0jaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTV2ViQXNz
ZW1ibHkpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRh
dGVGdW5jKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3Nl
bWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqKTsKLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykK
LXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKLQotICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgdHJ1bHkgYXN5bmNocm9ub3VzOgotICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYwMTYKLSAgICBKU1Zh
bHVlIG1vZHVsZSA9IFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OmNyZWF0ZU1vZHVsZShl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJB
c3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpKTsKLSAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24g
PSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNl
cHRpb24oKTsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbi0+dmFsdWUo
KSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsK
LSAgICB9Ci0KLSAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIG1vZHVsZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gY2F0Y2hTY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgLy8gRklYTUU6IE1ha2UgdGhpcyBBUEkgdHJ1
bHkgYXN5bmNocm9ub3VzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY5MTg3Ci0KLSAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgYXV0
byByZWplY3QgPSBbJl0gKCkgewotICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IGNhdGNo
U2NvcGUuZXhjZXB0aW9uKCk7Ci0gICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICBj
YXRjaFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVj
LCBleGNlcHRpb24tPnZhbHVlKCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBy
b21pc2UtPnByb21pc2UoKSk7Ci0gICAgfTsKLQotICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQg
PSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICBKU09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0
QXJndW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgaWYgKCFpbXBvcnRBcmd1bWVudC5pc1VuZGVmaW5l
ZCgpICYmICFpbXBvcnRPYmplY3QpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLAotICAgICAgICAgICAgQVNDSUlMaXRlcmFsKCJzZWNvbmQgYXJn
dW1lbnQgdG8gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUgbXVzdCBiZSB1bmRlZmluZWQgb3IgYW4g
T2JqZWN0IiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZShpbXBv
cnRBcmd1bWVudCkpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5w
cm9taXNlKCkpOwotICAgIH0KLQotICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwotICAgIEpTVmFsdWUgbW9kdWxlOwotICAgIGJvb2wgZmlyc3RBcmd1bWVudElz
TW9kdWxlID0gZmFsc2U7Ci0gICAgaWYgKGZpcnN0QXJndW1lbnQuaW5oZXJpdHModm0sIEpTV2Vi
QXNzZW1ibHlNb2R1bGU6OmluZm8oKSkpIHsKLSAgICAgICAgZmlyc3RBcmd1bWVudElzTW9kdWxl
ID0gdHJ1ZTsKLSAgICAgICAgbW9kdWxlID0gZmlyc3RBcmd1bWVudDsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtb2R1bGUgPSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpjcmVhdGVNb2R1
bGUoZXhlYywgZmlyc3RBcmd1bWVudCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJB
c3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpKTsKLSAgICAgICAgaWYgKGNhdGNoU2NvcGUuZXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KCk7Ci0gICAgfQotCi0gICAgSlNXZWJB
c3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSA9IFdlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
cjo6Y3JlYXRlSW5zdGFuY2UoZXhlYywganNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPihtb2R1
bGUpLCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1i
bHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKLSAgICBpZiAoY2F0Y2hTY29wZS5leGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIHJlamVjdCgpOwotCi0gICAgaWYgKGZpcnN0QXJndW1lbnRJc01vZHVs
ZSkKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZShleGVjLCBpbnN0YW5jZSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
LSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCBBU0NJSUxpdGVyYWwoIm1vZHVsZSIpKSwgbW9kdWxlKTsKLSAgICAgICAgcmVzdWx0LT5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImluc3Rh
bmNlIikpLCBpbnN0YW5jZSk7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgcmVzdWx0
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2Uo
KSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0
ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgc2l6ZV90IGJ5dGVP
ZmZzZXQ7Ci0gICAgc2l6ZV90IGJ5dGVTaXplOwotICAgIHVpbnQ4X3QqIGJhc2UgPSBnZXRXYXNt
QnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBieXRlT2Zmc2V0LCBieXRl
U2l6ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgV2FzbTo6UGxhbiBwbGFuKCZ2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXplKTsK
LSAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB0aHJvdyBhbiBPT00gZXhjZXB0aW9uIGhl
cmUgaWYgd2UgZGV0ZWN0IHRoYXQgc29tZXRoaW5nIHdpbGwgT09NLgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjYwMTUKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFuLnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoKSkpOwotfQot
CiBjb25zdCBDbGFzc0luZm8gSlNXZWJBc3NlbWJseTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHki
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTV2ViQXNzZW1ibHkpIH07
CiAKLUpTV2ViQXNzZW1ibHkqIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorU1RBVElDX0FTU0VS
VF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTV2ViQXNzZW1ibHkpOworCitKU1dlYkFzc2Vt
Ymx5KiBKU1dlYkFzc2VtYmx5OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEpTV2ViQXNzZW1ibHk+KHZtLmhlYXApKSBKU1dlYkFzc2VtYmx5KHZtLCBzdHJ1
Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7Cisg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApA
QCAtMTQ5LDEzICs0OCwxMCBAQCBTdHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIEpTV2ViQXNzZW1i
bHk6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3ZvaWQgSlNXZWJBc3NlbWJseTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJ2YWxpZGF0ZSIsIHdl
YkFzc2VtYmx5VmFsaWRhdGVGdW5jLCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImNvbXBpbGUiLCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5j
LCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImluc3RhbnRpYXRlIiwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMsIERvbnRFbnVtLCAx
KTsKIH0KIAogSlNXZWJBc3NlbWJseTo6SlNXZWJBc3NlbWJseShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJB
c3NlbWJseS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5oCmlu
ZGV4IDEzM2VmODEuLjJlNzAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL0pTV2ViQXNzZW1ibHkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dl
YkFzc2VtYmx5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiBwcml2YXRlOgogICAgIEpTV2ViQXNz
ZW1ibHkoVk0mLCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAppbmRleCA4ZDM2
MWFlLi4yMjg0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVj
U3RhdGUqKTsKIH0KIAogI2luY2x1ZGUgIldlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmx1dC5o
IgpAQCAtNDcsMTIgKzQ4LDExIEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTWVtb3J5LnByb3RvCiAKIC8qIFNvdXJj
ZSBmb3IgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgKIEBiZWdpbiBwcm90b3R5cGVU
YWJsZVdlYkFzc2VtYmx5TWVtb3J5Ci0gIGdyb3cgICAgIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9G
dW5jR3JvdyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBncm93ICAgd2ViQXNzZW1ibHlNZW1vcnlQ
cm90b0Z1bmNHcm93ICAgRG9udEVudW18RnVuY3Rpb24gMQorIGJ1ZmZlciB3ZWJBc3NlbWJseU1l
bW9yeVByb3RvRnVuY0J1ZmZlciBEb250RW51bXxBY2Nlc3NvciAwCiBAZW5kCiAqLwogCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVy
KEV4ZWNTdGF0ZSopOwotCiBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlNZW1vcnkqIGdldE1l
bW9yeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKQEAgLTY3LDE2ICs2Nyw2IEBAIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseU1l
bW9yeSogZ2V0TWVtb3J5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICByZXR1
cm4gbWVtb3J5OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGV4ZWMsIGV4
ZWMtPnRoaXNWYWx1ZSgpKTsgCi0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtOTUsMTAgKzg1LDIwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93KEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3Vs
dC5wYWdlQ291bnQoKSkpOwogfQogCi1XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IGdl
dE1lbW9yeShleGVjLCBleGVjLT50aGlzVmFsdWUoKSk7IAorICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1lbW9yeS0+
YnVmZmVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpOworfQorCitX
ZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAg
ICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlN
ZW1vcnlQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZSh2bSwg
c3RydWN0dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiBvYmplY3Q7CiB9
CiAKQEAgLTEwNywxMCArMTA3LDEwIEBAIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi12b2lkIFdlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IEpTQ19OQVRJVkVfR0VUVEVSKCJidWZmZXIiLCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1
ZmZlciwgRG9udEVudW0gfCBBY2Nlc3Nvcik7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKIH0KIAogV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OldlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUu
aAppbmRleCBmMDYxZmNkLi4yZDBhMTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwogCiBwcml2YXRlOgogICAgIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKFZN
JiwgU3RydWN0dXJlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKaW5kZXggMmUxNzk3Ny4uMGU2YWVkOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90
eXBlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yOCwyNSArMjgsMjIgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCisjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJXYXNtUGxhbi5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuaCIKIAogbmFtZXNwYWNlIEpTQyB7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5RnVuY3Rpb25WYWxpZGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3Nl
bWJseSBkb2Vzbid0IHlldCBpbXBsZW1lbnQgdGhlIHZhbGlkYXRlIGZ1bmN0aW9uIHByb3BlcnR5
IikpKSk7Ci19Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2Vt
Ymx5RnVuY3Rpb25Db21waWxlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVu
dCB0aGUgY29tcGlsZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkpOwotfQotCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyhFeGVjU3RhdGUq
KTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGls
ZUZ1bmMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqKTsKIH0KIAogI2luY2x1ZGUgIldl
YkFzc2VtYmx5UHJvdG90eXBlLmx1dC5oIgpAQCAtNTcsMTEgKzU0LDEwMiBAQCBjb25zdCBDbGFz
c0luZm8gV2ViQXNzZW1ibHlQcm90b3R5cGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5LnByb3Rv
dHlwZSIsICZCYXNlOgogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5UHJvdG90eXBlLmx1dC5o
CiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHkKLSB2YWxpZGF0ZSB3ZWJBc3NlbWJs
eUZ1bmN0aW9uVmFsaWRhdGUgIERvbnRFbnVtfEZ1bmN0aW9uIDEKLSBjb21waWxlICB3ZWJBc3Nl
bWJseUZ1bmN0aW9uQ29tcGlsZSAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyB2YWxpZGF0ZSAgICB3
ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyAgICBEb250RW51bXxGdW5jdGlvbiAxCisgY29tcGlsZSAg
ICAgd2ViQXNzZW1ibHlDb21waWxlRnVuYyAgICAgRG9udEVudW18RnVuY3Rpb24gMQorIGluc3Rh
bnRpYXRlIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jIERvbnRFbnVtfEZ1bmN0aW9uIDEKICBA
ZW5kCiAgKi8KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVZhbGlk
YXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBzaXplX3QgYnl0
ZU9mZnNldDsKKyAgICBzaXplX3QgYnl0ZVNpemU7CisgICAgdWludDhfdCogYmFzZSA9IGdldFdh
c21CdWZmZXJGcm9tVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGJ5dGVPZmZzZXQsIGJ5
dGVTaXplKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBXYXNtOjpQbGFuIHBsYW4oJnZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNpemUp
OworICAgIC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24g
aGVyZSBpZiB3ZSBkZXRlY3QgdGhhdCBzb21ldGhpbmcgd2lsbCBPT00uCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjAxNQorICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKHBsYW4ucGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIGNh
dGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRydWx5IGFzeW5j
aHJvbm91czoKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY2MDE2CisgICAgSlNWYWx1ZSBtb2R1bGUgPSBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9y
OjpjcmVhdGVNb2R1bGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSk7CisgICAgaWYgKEV4Y2Vw
dGlvbiogZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICBjYXRj
aFNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBl
eGNlcHRpb24tPnZhbHVlKCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21p
c2UtPnByb21pc2UoKSk7CisgICAgfQorCisgICAgcHJvbWlzZS0+cmVzb2x2ZShleGVjLCBtb2R1
bGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKK30K
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVu
YyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKworICAgIC8vIEZJWE1FOiBN
YWtlIHRoaXMgQVBJIHRydWx5IGFzeW5jaHJvbm91czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTE4NworCisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Ug
PSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIGF1dG8gcmVqZWN0ID0gWyZdICgpIHsKKyAgICAgICAgRXhjZXB0aW9uKiBl
eGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQoZXhjZXB0
aW9uKTsKKyAgICAgICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uLT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNlKCkpOworICAgIH07CisKKyAgICBKU1ZhbHVl
IGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNPYmplY3QqIGltcG9y
dE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOworICAgIGlmICghaW1wb3J0QXJn
dW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKKyAgICAgICAgICAgIEFTQ0lJTGl0
ZXJhbCgic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIG11c3QgYmUg
dW5kZWZpbmVkIG9yIGFuIE9iamVjdCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVU
eXBlRm9yVmFsdWUoaW1wb3J0QXJndW1lbnQpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGZpcnN0QXJn
dW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBKU1ZhbHVlIG1vZHVsZTsKKyAgICBib29s
IGZpcnN0QXJndW1lbnRJc01vZHVsZSA9IGZhbHNlOworICAgIGlmIChmaXJzdEFyZ3VtZW50Lmlu
aGVyaXRzKHZtLCBKU1dlYkFzc2VtYmx5TW9kdWxlOjppbmZvKCkpKSB7CisgICAgICAgIGZpcnN0
QXJndW1lbnRJc01vZHVsZSA9IHRydWU7CisgICAgICAgIG1vZHVsZSA9IGZpcnN0QXJndW1lbnQ7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbW9kdWxlID0gV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlTW9kdWxlKGV4ZWMsIGZpcnN0QXJndW1lbnQsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGlmIChj
YXRjaFNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgpOworICAg
IH0KKworICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBXZWJBc3NlbWJseUlu
c3RhbmNlQ29uc3RydWN0b3I6OmNyZWF0ZUluc3RhbmNlKGV4ZWMsIGpzQ2FzdDxKU1dlYkFzc2Vt
Ymx5TW9kdWxlKj4obW9kdWxlKSwgaW1wb3J0T2JqZWN0LCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPldlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSk7CisgICAgaWYgKGNhdGNoU2Nv
cGUuZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZWplY3QoKTsKKworICAgIGlmIChmaXJz
dEFyZ3VtZW50SXNNb2R1bGUpCisgICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgaW5zdGFu
Y2UpOworICAgIGVsc2UgeworICAgICAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYyk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJtb2R1bGUiKSksIG1vZHVsZSk7CisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgQVND
SUlMaXRlcmFsKCJpbnN0YW5jZSIpKSwgaW5zdGFuY2UpOworICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKGV4ZWMsIHJlc3VsdCk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
cm9taXNlLT5wcm9taXNlKCkpOworfQorCiBXZWJBc3NlbWJseVByb3RvdHlwZSogV2ViQXNzZW1i
bHlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8V2ViQXNzZW1ibHlQcm90b3R5cGU+KHZtLmhlYXApKSBXZWJBc3NlbWJseVByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKaW5kZXggNDVhN2Q1Ny4uMTVlNTgw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsMTMgQEAKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlUYWJsZS5oIgogCitu
YW1lc3BhY2UgSlNDIHsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyhFeGVjU3Rh
dGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSopOworfQorCiAj
aW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC00MSw2ICs0OCwxMCBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eQogCiAvKiBTb3Vy
Y2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBl
VGFibGVXZWJBc3NlbWJseVRhYmxlCisgbGVuZ3RoIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNM
ZW5ndGggRG9udEVudW18QWNjZXNzb3IgMAorIGdyb3cgICB3ZWJBc3NlbWJseVRhYmxlUHJvdG9G
dW5jR3JvdyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBnZXQgICAgd2ViQXNzZW1ibHlUYWJsZVBy
b3RvRnVuY0dldCAgICBEb250RW51bXxGdW5jdGlvbiAxCisgc2V0ICAgIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNTZXQgICAgRG9udEVudW18RnVuY3Rpb24gMgogIEBlbmQKICAqLwogCkBAIC01
NiwxMSArNjcsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5VGFibGUqIGdl
dFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3Rv
RnVuY0xlbmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQo
RXhlY1N0YXRlKik7Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlU
YWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKQEAgLTgxLDExICs4Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVjKQogCiAgICAgdWlu
dDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwotICAgIGlmICghdGFibGUtPmdyb3coaW5kZXgpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3Jv
dyB0aGUgdGFibGUiKSkpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KKyAgICBpZiAoIXRh
YmxlLT5ncm93KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUg
dGFibGUiKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC0xMDAsMTEgKzEwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1aW50MzJf
dCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4cGVjdHMgYW4gaW50
ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKTsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5LlRhYmxlLnByb3Rv
dHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgdGFi
bGUiKSkpKTsKIAogICAgIGlmIChKU09iamVjdCogcmVzdWx0ID0gdGFibGUtPmdldEZ1bmN0aW9u
KGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTIy
LDIwICsxMjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+YXJndW1lbnQoMSk7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uOwog
ICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uOwotICAg
IGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZh
bHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7Ci0gICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVj
dHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5LkZ1bmN0aW9uIikpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYg
KCF2YWx1ZS5pc051bGwoKSAmJiAhaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUs
IHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90eXBlLnNldCBl
eHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBpbnN0YW5jZSBvZiBX
ZWJBc3NlbWJseS5GdW5jdGlvbiIpKSkpOwogCiAgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldy
YXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgaWYgKGluZGV4ID49
IHRhYmxlLT5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29w
ZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJB
c3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4g
dGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Cisg
ICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlwZS5zZXQgZXhwZWN0
cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgdGFibGUiKSkpKTsKIAogICAg
IGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgdGFibGUtPmNsZWFyRnVuY3Rpb24oaW5kZXgp
OwpAQCAtMTUxLDEwICsxNDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1XZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1dlYkFzc2VtYmx5VGFi
bGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZT4o
dm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0xNjMsMTQgKzE1
NywxMCBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Cit2b2lkIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0KLSAgICBKU0NfTkFUSVZFX0dFVFRF
UigibGVuZ3RoIiwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCwgRG9udEVudW0gfCBB
Y2Nlc3Nvcik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImdy
b3ciLCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdywgRG9udEVudW0sIDEpOwotICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJnZXQiLCB3ZWJBc3NlbWJseVRh
YmxlUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04oInNldCIsIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQsIERv
bnRFbnVtLCAyKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCiBXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKaW5kZXggNWUwNDUwNS4uOGFi
NDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBERUNM
QVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6
CiAgICAgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwotLSAKMi4x
MC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305831</attachid>
            <date>2017-03-29 21:33:23 -0700</date>
            <delta_ts>2017-03-29 23:34:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-misc.patch</filename>
            <type>text/plain</type>
            <size>37807</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiNWU5YjIxYWM3OGEyMzM0YWRlOWNjNjkzMmQ0ZTdlNzgwYmE4Y2M1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI5IE1hciAyMDE3IDIxOjMyOjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS1t
aXNjCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgIDQ2ICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5
LmNwcCAgICAgICB8IDIxNiArLS0tLS0tLS0tLS0tLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vSlNXZWJBc3NlbWJseS5oICAgICAgICAgfCAgIDQgKy0KIC4uLi93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCAgICAgICAgIHwgIDM2ICsrLS0KIC4uLi93YXNt
L2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggICAgICAgICAgIHwgICA0ICstCiAuLi4v
d2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAgICAgICAgICAgICAgICB8IDIyNCArKysr
KysrKysrKysrKysrKysrLS0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUu
Y3BwICAgICAgICAgIHwgIDU4ICsrKy0tLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVBy
b3RvdHlwZS5oICAgICAgICAgICAgfCAgIDQgKy0KIDggZmlsZXMgY2hhbmdlZCwgMzA1IGluc2Vy
dGlvbnMoKyksIDI4NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTg0MmVmLi45NDdmMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBA
QAorMjAxNy0wMy0yOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2ViQXNzZW1ibHk6IGZpeCBtaXNjIEpTIEFQSSBpbXBsZW1lbnRhdGlvbiBpbmNvbnNpc3Rl
bmNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF1
dG8tZ2VuZXJhdGUgbG9va3VwIHRhYmxlcy4KKyAgICAgICAgTWV0aG9kcyBzaG91bGQgYmUgb24g
cHJvdG90eXBlLgorICAgICAgICBFeGNlcHRpb24gcmV0dXJucyBzaG91bGQgYmUgaWRpb21hdGlj
LgorCisgICAgICAgICogd2FzbS9KU1dlYkFzc2VtYmx5LmNwcDogdmFsaWRhdGUgLyBjb21waWxl
IC8gaW5zdGFudGlhdGUgc2hvdWxkCisgICAgICAgIGJlIG9uIHRoZSBwcm90b3R5cGUKKyAgICAg
ICAgKEpTQzo6SlNXZWJBc3NlbWJseTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3Nl
bWJseTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpyZWplY3QpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6cmVzb2x2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Omluc3RhbnRpYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcGlsZUFuZEluc3RhbnRpYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6d2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjp3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogd2Fz
bS9KU1dlYkFzc2VtYmx5Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVBy
b3RvdHlwZS5jcHA6IG1vdmUgZnJvbSBKU1dlYkFzc2VtYmx5LmNwcAorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TWVtb3J5UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpTQzo6d2ViQXNz
ZW1ibHlDb21waWxlRnVuYyk6CisgICAgICAgIChKU0M6OnJlc29sdmUpOgorICAgICAgICAoSlND
OjppbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6Cisg
ICAgICAgIChKU0M6OndlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKToKKyAgICAgICAgKEpTQzo6
d2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0
aW9uVmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0aW9u
Q29tcGlsZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cp
OgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KToKKyAgICAgICAg
KEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VGFibGVQcm90b3R5cGUuaDoKKwogMjAxNy0wMy0yOSAgS2VpdGggTWlsbGVyICA8a2Vp
dGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB3aW5kb3dzIGJ1aWxk
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1i
bHkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAKaW5k
ZXggOTk3ZWUyZi4uNDdiYzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vSlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNX
ZWJBc3NlbWJseS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsMjIzICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCi0jaW5jbHVkZSAiRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQu
aCIKLSNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNs
dWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVy
LmgiCi0jaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIldhc21QbGFuLmgiCi0j
aW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVDb25z
dHJ1Y3Rvci5oIgotCi11c2luZyBKU0M6Oldhc206OlBsYW47CiAKIG5hbWVzcGFjZSBKU0Mgewog
CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNXZWJBc3NlbWJseSk7
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMo
RXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29t
cGlsZUZ1bmMoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5SW5zdGFudGlhdGVGdW5jKEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMgRW5jb2RlZEpTVmFs
dWUgcmVqZWN0KEV4ZWNTdGF0ZSogZXhlYywgQ2F0Y2hTY29wZSYgY2F0Y2hTY29wZSwgSlNQcm9t
aXNlRGVmZXJyZWQqIHByb21pc2UpCi17Ci0gICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRj
aFNjb3BlLmV4Y2VwdGlvbigpOwotICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgIGNhdGNoU2Nv
cGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgZXhjZXB0aW9u
LT52YWx1ZSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2Uo
KSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxl
RnVuYyhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVj
LCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKLQotICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwotICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBXVEZNb3Zl
KGRlcGVuZGVuY2llcykpOwotCi0gICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IFBs
YW4odm0sICpzb3VyY2UsIFBsYW46OlZhbGlkYXRpb24sIFtzb3VyY2UsIHByb21pc2UsIGdsb2Jh
bE9iamVjdF0gKFBsYW4mIHApIG11dGFibGUgewotICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9
IG1ha2VSZWYocCk7Ci0gICAgICAgIHBsYW4tPnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNj
aGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3NvdXJjZSwgcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCBw
bGFuID0gV1RGTW92ZShwbGFuKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBWTSYgdm0gPSBw
bGFuLT52bSgpOwotICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwotICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7Ci0gICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6
OmNyZWF0ZVN0dWIodm0sIGV4ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBsYW4pKTsKLSAgICAgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29w
ZSwgcHJvbWlzZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIG1vZHVsZSk7Ci0gICAgICAgIH0pOwot
ICAgIH0pKTsKLQotICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBs
YW4pKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7Ci19
Ci0KLWVudW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZUFuZEluc3Rh
bmNlIH07Ci1zdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1By
b21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBSZXNvbHZlIGVudHJpZXMpCi17Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGluc3RhbmNlLT5maW5hbGl6
ZUNyZWF0aW9uKHZtLCBleGVjKTsKLSAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmIChlbnRyaWVzID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkKLSAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZShleGVjLCBpbnN0YW5jZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwo
Im1vZHVsZSIpKSwgbW9kdWxlKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlIikpLCBpbnN0YW5j
ZSk7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgcmVzdWx0KTsKLSAgICB9Ci19Ci0K
LXN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21p
c2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVj
dCogaW1wb3J0T2JqZWN0LCBSZXNvbHZlIGVudHJpZXMpCi17Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHBvdGVudGlh
bGx5IHJlY29tcGlsaW5nIGEgbW9kdWxlLiBXZSBmaXJzdCBnYXRoZXIgYWxsIHRoZSBpbXBvcnQv
bWVtb3J5IGluZm9ybWF0aW9uIHByaW9yIHRvIGNvbXBpbGluZyBjb2RlLgotICAgIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2
bSwgZXhlYywgbW9kdWxlLCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+V2ViQXNzZW1ibHlJbnN0YW5jZVN0cnVjdHVyZSgpKTsKLSAgICBpZiAoc2NvcGUuZXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSBjYXNlczoK
LSAgICAvLyAxKSBUaGUgaW5zdGFuY2UgYWxyZWFkeSBoYXMgYW4gaW5pdGlhbGl6ZWQgQ29kZUJs
b2NrLCBzbyB3ZSBoYXZlIG5vIG1vcmUgd29yayB0byBkby4KLSAgICAvLyAyKSBUaGUgaW5zdGFu
Y2UgaGFzIG5vIENvZGVCbG9jaywgc28gd2UgbmVlZCB0byBtYWtlIG9uZSBhbmQgY29tcGlsZSB0
aGUgY29kZSBmb3IgaXQuCi0gICAgLy8gMykgVGhlIGluc3RhbmNlIGFscmVhZHkgaGFzIGFuIHVu
aW5pdGlhbGl6ZWQgQ29kZUJsb2NrLCBzbyBzb21lb25lIGVsc2UgaXMgY29tcGlsaW5nIGNvZGUg
YW5kIHdlIGp1c3QgbmVlZCB0byB3YWl0IGZvciB0aGVtLgotCi0gICAgaWYgKGluc3RhbmNlLT5p
bml0aWFsaXplZCgpKSB7Ci0gICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3Rh
bmNlLCBtb2R1bGUsIGVudHJpZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVj
dG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7Ci0gICAgLy8gVGhlIGluc3RhbmNlIGtl
ZXBzIHRoZSBtb2R1bGUgYWxpdmUuCi0gICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlND
ZWxsPih2bSwgaW5zdGFuY2UpKTsKLSAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVu
ZGluZ1Byb21pc2UocHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKLQotICAgIGlmIChp
bnN0YW5jZS0+Y29kZUJsb2NrKCkpIHsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXIt
PnNjaGVkdWxlQmxvY2tlZFRhc2soaW5zdGFuY2UtPmNvZGVCbG9jaygpLT5wbGFuKCkucGVuZGlu
Z1Byb21pc2UoKSwgWyZ2bSwgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgZW50cmllc10gKCkg
ewotICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVj
dCgpOwotICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7Ci0gICAgICAgICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNlLCBpbnN0YW5jZSwg
bW9kdWxlLCBlbnRyaWVzKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgQVNTRVJUKCFpbnN0YW5jZS0+Y29kZUJsb2NrKCkpOwotCi0gICAgLy8gRklYTUU6IFRoaXMg
cmUtcGFyc2VzIHRoZSBtb2R1bGUgaGVhZGVyLCB3aGljaCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5
LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAyMDUK
LSAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgUGxhbih2bSwgbW9kdWxlLT5zb3Vy
Y2UoKSwgUGxhbjo6RnVsbENvbXBpbGUsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBlbnRy
aWVzXSAoUGxhbiYgcCkgewotICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IG1ha2VSZWYocCk7
Ci0gICAgICAgIHBsYW4tPnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nv
b24ocHJvbWlzZSwgW3Byb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXMsIHBsYW4gPSBX
VEZNb3ZlKHBsYW4pXSAoKSB7Ci0gICAgICAgICAgICBWTSYgdm0gPSBwbGFuLT52bSgpOwotICAg
ICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7Ci0gICAgICAgICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNlLCBpbnN0YW5j
ZSwgbW9kdWxlLCBlbnRyaWVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSkpOwotCi0gICAgaW5zdGFu
Y2UtPmFkZFVuaXRpYWxpemVkQ29kZUJsb2NrKHZtLCBwbGFuLmNvcHlSZWYoKSk7Ci0gICAgcGxh
bi0+c2V0TW9kZUFuZFByb21pc2UoaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgcHJvbWlzZSk7Ci0g
ICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwotfQotCi1z
dGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMs
IEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGlt
cG9ydE9iamVjdCkKLXsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9t
VmFsdWUodm0sIGV4ZWMsIGJ1ZmZlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKLQotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLQotICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwotICAg
IGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwot
ICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBX
VEZNb3ZlKGRlcGVuZGVuY2llcykpOwotCi0gICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigq
bmV3IFBsYW4odm0sICpzb3VyY2UsIFBsYW46OlZhbGlkYXRpb24sIFtzb3VyY2UsIHByb21pc2Us
IGltcG9ydE9iamVjdCwgZ2xvYmFsT2JqZWN0XSAoUGxhbiYgcCkgbXV0YWJsZSB7Ci0gICAgICAg
IFJlZlB0cjxQbGFuPiBwbGFuID0gbWFrZVJlZihwKTsKLSAgICAgICAgcGxhbi0+dm0oKS5wcm9t
aXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbc291cmNlLCBwcm9t
aXNlLCBpbXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcGxhbiA9IFdURk1vdmUocGxhbildICgp
IG11dGFibGUgewotICAgICAgICAgICAgVk0mIHZtID0gcGxhbi0+dm0oKTsKLSAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICAgICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1
Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBX
VEZNb3ZlKHNvdXJjZSksIHBsYW4uY29weVJlZigpKTsKLSAgICAgICAgICAgIGlmIChzY29wZS5l
eGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlz
ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJl
c29sdmU6OldpdGhNb2R1bGVBbmRJbnN0YW5jZSk7Ci0gICAgICAgIH0pOwotICAgIH0pKTsKLQot
ICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKLX0KLQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIGNh
dGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7Ci0KLSAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+
YXJndW1lbnQoMSk7Ci0gICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50
LmdldE9iamVjdCgpOwotICAgIGlmICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAh
aW1wb3J0T2JqZWN0KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCgic2Vjb25kIGFyZ3VtZW50IHRv
IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCIp
LCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0QXJndW1l
bnQpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgp
KTsKLSAgICB9Ci0KLSAgICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBpZiAoYXV0byogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9k
dWxlKj4odm0sIGZpcnN0QXJndW1lbnQpKQotICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywg
cHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhJbnN0YW5jZSk7Ci0g
ICAgZWxzZQotICAgICAgICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2Us
IGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVjdCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHByb21pc2UtPnByb21pc2UoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwotCi0gICAgc2l6ZV90IGJ5dGVPZmZzZXQ7Ci0gICAgc2l6ZV90IGJ5dGVTaXplOwotICAgIHVp
bnQ4X3QqIGJhc2UgPSBnZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBieXRlT2Zmc2V0LCBieXRlU2l6ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgV2FzbTo6UGxhbiBwbGFuKHZtLCBiYXNlICsgYnl0
ZU9mZnNldCwgYnl0ZVNpemUsIFBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSk7
Ci0gICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBo
ZXJlIGlmIHdlIGRldGVjdCB0aGF0IHNvbWV0aGluZyB3aWxsIE9PTS4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MDE1Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhbi5wYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkpKTsKLX0K
LQogY29uc3QgQ2xhc3NJbmZvIEpTV2ViQXNzZW1ibHk6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5KSB9
OwogCi1KU1dlYkFzc2VtYmx5KiBKU1dlYkFzc2VtYmx5OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0pTV2ViQXNzZW1i
bHkqIEpTV2ViQXNzZW1ibHk6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNXZWJBc3NlbWJseT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkodm0sIHN0cnVj
dHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBA
IC0yNTMsMTMgKzQ4LDEwIEBAIFN0cnVjdHVyZSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJs
eTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
dm9pZCBKU1dlYkFzc2VtYmx5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0g
ICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInZhbGlkYXRlIiwgd2Vi
QXNzZW1ibHlWYWxpZGF0ZUZ1bmMsIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OX1dJVEhPVVRfVFJBTlNJVElPTigiY29tcGlsZSIsIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMs
IERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElP
TigiaW5zdGFudGlhdGUiLCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYywgRG9udEVudW0sIDEp
OwogfQogCiBKU1dlYkFzc2VtYmx5OjpKU1dlYkFzc2VtYmx5KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFz
c2VtYmx5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmgKaW5k
ZXggMTMzZWY4MS4uMmU3MDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vSlNXZWJBc3NlbWJseS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2Vi
QXNzZW1ibHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHBy
b3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6CiAgICAgSlNXZWJBc3Nl
bWJseShWTSYsIFN0cnVjdHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IDhkMzYx
YWUuLjIyODRiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5TWVtb3J5UHJvdG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNT
dGF0ZSopOwogfQogCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0Lmgi
CkBAIC00NywxMiArNDgsMTEgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJv
dG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5NZW1vcnkucHJvdG8KIAogLyogU291cmNl
IGZvciBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2luIHByb3RvdHlwZVRh
YmxlV2ViQXNzZW1ibHlNZW1vcnkKLSAgZ3JvdyAgICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1
bmNHcm93ICAgRG9udEVudW18RnVuY3Rpb24gMQorIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9yeVBy
b3RvRnVuY0dyb3cgICBEb250RW51bXxGdW5jdGlvbiAxCisgYnVmZmVyIHdlYkFzc2VtYmx5TWVt
b3J5UHJvdG9GdW5jQnVmZmVyIERvbnRFbnVtfEFjY2Vzc29yIDAKIEBlbmQKICovCiAKLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIo
RXhlY1N0YXRlKik7Ci0KIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseU1lbW9yeSogZ2V0TWVt
b3J5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpAQCAtNjcsMTYgKzY3LDYgQEAgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5TWVt
b3J5KiBnZXRNZW1vcnkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVy
biBtZW1vcnk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlN
ZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
Ci0KLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZXhlYywgZXhl
Yy0+dGhpc1ZhbHVlKCkpOyAKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC05NSwxMCArODUsMjAgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0
LnBhZ2VDb3VudCgpKSk7CiB9CiAKLVdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0
TWVtb3J5KGV4ZWMsIGV4ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5i
dWZmZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Cit9CisKK1dl
YkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3Jl
YXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAg
ICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1l
bW9yeVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7
CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0K
IApAQCAtMTA3LDEwICsxMDcsMTAgQEAgU3RydWN0dXJlKiBXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
SlNDX05BVElWRV9HRVRURVIoImJ1ZmZlciIsIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVm
ZmVyLCBEb250RW51bSB8IEFjY2Vzc29yKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8o
KSkpOwogfQogCiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6V2ViQXNzZW1ibHlNZW1vcnlQ
cm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5o
CmluZGV4IGYwNjFmY2QuLjJkMGExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CiAKIHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcAppbmRleCAyZTE3OTc3Li40ODQxOGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5
cGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDM5ICsyOCwyMjkgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCisjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJQcm9taXNlRGVmZXJyZWRUaW1lci5oIgorI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJXYXNtUGxhbi5oIgorI2luY2x1ZGUg
Ildhc21Xb3JrbGlzdC5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCIKKwordXNpbmcg
SlNDOjpXYXNtOjpQbGFuOworCituYW1lc3BhY2UgSlNDIHsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVu
YyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFz
c2VtYmx5VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSopOworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1i
bHlQcm90b3R5cGUubHV0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUoRXhlY1N0YXRl
KiBleGVjKQorY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5UHJvdG90eXBlOjpzX2luZm8gPSB7
ICJXZWJBc3NlbWJseS5wcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVX
ZWJBc3NlbWJseSwgQ1JFQVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVByb3RvdHlwZSkgfTsK
KworLyogU291cmNlIGZvciBXZWJBc3NlbWJseVByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90
b3R5cGVUYWJsZVdlYkFzc2VtYmx5CisgY29tcGlsZSAgICAgd2ViQXNzZW1ibHlDb21waWxlRnVu
YyAgICAgRG9udEVudW18RnVuY3Rpb24gMQorIGluc3RhbnRpYXRlIHdlYkFzc2VtYmx5SW5zdGFu
dGlhdGVGdW5jIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyB2YWxpZGF0ZSAgICB3ZWJBc3NlbWJseVZh
bGlkYXRlRnVuYyAgICBEb250RW51bXxGdW5jdGlvbiAxCisgQGVuZAorICovCisKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBDYXRjaFNjb3BlJiBjYXRjaFNj
b3BlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0
aGUgdmFsaWRhdGUgZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKKyAgICBFeGNlcHRpb24qIGV4Y2Vw
dGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCk7CisgICAgQVNTRVJUKGV4Y2VwdGlvbik7Cisg
ICAgY2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIHByb21pc2UtPnJlamVjdChleGVj
LCBleGNlcHRpb24tPnZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlz
ZS0+cHJvbWlzZSgpKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlGdW5jdGlvbkNvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUNvbXBpbGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5
IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgY29tcGlsZSBmdW5jdGlvbiBwcm9wZXJ0eSIpKSkp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisKKyAgICBKU1Byb21p
c2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUo
dm0sIGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7Cisg
ICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7
CisgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHByb21pc2Us
IFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisKKyAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVm
KCpuZXcgUGxhbih2bSwgKnNvdXJjZSwgUGxhbjo6VmFsaWRhdGlvbiwgW3NvdXJjZSwgcHJvbWlz
ZSwgZ2xvYmFsT2JqZWN0XSAoUGxhbiYgcCkgbXV0YWJsZSB7CisgICAgICAgIFJlZlB0cjxQbGFu
PiBwbGFuID0gbWFrZVJlZihwKTsKKyAgICAgICAgcGxhbi0+dm0oKS5wcm9taXNlRGVmZXJyZWRU
aW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbc291cmNlLCBwcm9taXNlLCBnbG9iYWxP
YmplY3QsIHBsYW4gPSBXVEZNb3ZlKHBsYW4pXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFZN
JiB2bSA9IHBsYW4tPnZtKCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgICAgIEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJs
eU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xvYmFsT2JqZWN0LT5XZWJBc3NlbWJseU1v
ZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocGxhbikpOworICAgICAg
ICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KGV4
ZWMsIHNjb3BlLCBwcm9taXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgbW9kdWxlKTsKKyAgICAg
ICAgfSk7CisgICAgfSkpOworCisgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5lbnF1ZXVlKFdU
Rk1vdmUocGxhbikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlz
ZSgpKTsKIH0KIAorZW51bSBjbGFzcyBSZXNvbHZlIHsgV2l0aEluc3RhbmNlLCBXaXRoTW9kdWxl
QW5kSW5zdGFuY2UgfTsKK3N0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGlu
c3RhbmNlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIFJlc29sdmUgZW50cmllcykKK3sK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgaW5zdGFuY2Ut
PmZpbmFsaXplQ3JlYXRpb24odm0sIGV4ZWMpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkg
eworICAgICAgICByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKGVudHJpZXMgPT0gUmVzb2x2ZTo6V2l0aEluc3RhbmNlKQorICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIGluc3RhbmNlKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJ
TGl0ZXJhbCgibW9kdWxlIikpLCBtb2R1bGUpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2UiKSks
IGluc3RhbmNlKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZShleGVjLCByZXN1bHQpOworICAg
IH0KIH0KIAotI2luY2x1ZGUgIldlYkFzc2VtYmx5UHJvdG90eXBlLmx1dC5oIgorc3RhdGljIHZv
aWQgaW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVycmVk
KiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUsIEpTT2JqZWN0KiBpbXBvcnRP
YmplY3QsIFJlc29sdmUgZW50cmllcykKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CisgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcG90ZW50aWFsbHkgcmVjb21w
aWxpbmcgYSBtb2R1bGUuIFdlIGZpcnN0IGdhdGhlciBhbGwgdGhlIGltcG9ydC9tZW1vcnkgaW5m
b3JtYXRpb24gcHJpb3IgdG8gY29tcGlsaW5nIGNvZGUuCisgICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0YW5jZSA9IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlKHZtLCBleGVjLCBt
b2R1bGUsIGltcG9ydE9iamVjdCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5XZWJBc3Nl
bWJseUluc3RhbmNlU3RydWN0dXJlKCkpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewor
ICAgICAgICByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi1uYW1lc3BhY2UgSlNDIHsKKyAgICAvLyBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGUg
Y2FzZXM6CisgICAgLy8gMSkgVGhlIGluc3RhbmNlIGFscmVhZHkgaGFzIGFuIGluaXRpYWxpemVk
IENvZGVCbG9jaywgc28gd2UgaGF2ZSBubyBtb3JlIHdvcmsgdG8gZG8uCisgICAgLy8gMikgVGhl
IGluc3RhbmNlIGhhcyBubyBDb2RlQmxvY2ssIHNvIHdlIG5lZWQgdG8gbWFrZSBvbmUgYW5kIGNv
bXBpbGUgdGhlIGNvZGUgZm9yIGl0LgorICAgIC8vIDMpIFRoZSBpbnN0YW5jZSBhbHJlYWR5IGhh
cyBhbiB1bmluaXRpYWxpemVkIENvZGVCbG9jaywgc28gc29tZW9uZSBlbHNlIGlzIGNvbXBpbGlu
ZyBjb2RlIGFuZCB3ZSBqdXN0IG5lZWQgdG8gd2FpdCBmb3IgdGhlbS4KIAotY29uc3QgQ2xhc3NJ
bmZvIFdlYkFzc2VtYmx5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5wcm90b3R5
cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseSwgQ1JFQVRFX01F
VEhPRF9UQUJMRShXZWJBc3NlbWJseVByb3RvdHlwZSkgfTsKKyAgICBpZiAoaW5zdGFuY2UtPmlu
aXRpYWxpemVkKCkpIHsKKyAgICAgICAgcmVzb2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFu
Y2UsIG1vZHVsZSwgZW50cmllcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLS8qIFNvdXJj
ZSBmb3IgV2ViQXNzZW1ibHlQcm90b3R5cGUubHV0LmgKLSBAYmVnaW4gcHJvdG90eXBlVGFibGVX
ZWJBc3NlbWJseQotIHZhbGlkYXRlIHdlYkFzc2VtYmx5RnVuY3Rpb25WYWxpZGF0ZSAgRG9udEVu
dW18RnVuY3Rpb24gMQotIGNvbXBpbGUgIHdlYkFzc2VtYmx5RnVuY3Rpb25Db21waWxlICAgRG9u
dEVudW18RnVuY3Rpb24gMQotIEBlbmQKLSAqLworICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4g
ZGVwZW5kZW5jaWVzOworICAgIC8vIFRoZSBpbnN0YW5jZSBrZWVwcyB0aGUgbW9kdWxlIGFsaXZl
LgorICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGluc3RhbmNlKSk7
CisgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPmFkZFBlbmRpbmdQcm9taXNlKHByb21pc2Us
IFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisKKyAgICBpZiAoaW5zdGFuY2UtPmNvZGVCbG9jaygp
KSB7CisgICAgICAgIHZtLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZUJsb2NrZWRUYXNr
KGluc3RhbmNlLT5jb2RlQmxvY2soKS0+cGxhbigpLnBlbmRpbmdQcm9taXNlKCksIFsmdm0sIHBy
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXNdICgpIHsKKyAgICAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgICAgICAgICAg
cmVzb2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgZW50cmllcyk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVCghaW5zdGFuY2Ut
PmNvZGVCbG9jaygpKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIHJlLXBhcnNlcyB0aGUgbW9kdWxl
IGhlYWRlciwgd2hpY2ggc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjA1CisgICAgUmVmPFBsYW4+IHBsYW4g
PSBhZG9wdFJlZigqbmV3IFBsYW4odm0sIG1vZHVsZS0+c291cmNlKCksIFBsYW46OkZ1bGxDb21w
aWxlLCBbcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgZW50cmllc10gKFBsYW4mIHApIHsKKyAg
ICAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBtYWtlUmVmKHApOworICAgICAgICBwbGFuLT52bSgp
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNl
LCBpbnN0YW5jZSwgbW9kdWxlLCBlbnRyaWVzLCBwbGFuID0gV1RGTW92ZShwbGFuKV0gKCkgewor
ICAgICAgICAgICAgVk0mIHZtID0gcGxhbi0+dm0oKTsKKyAgICAgICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGluc3RhbmNlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICAg
ICAgcmVzb2x2ZSh2bSwgZXhlYywgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgZW50cmllcyk7
CisgICAgICAgIH0pOworICAgIH0pKTsKKworICAgIGluc3RhbmNlLT5hZGRVbml0aWFsaXplZENv
ZGVCbG9jayh2bSwgcGxhbi5jb3B5UmVmKCkpOworICAgIHBsYW4tPnNldE1vZGVBbmRQcm9taXNl
KGluc3RhbmNlLT5tZW1vcnlNb2RlKCksIHByb21pc2UpOworICAgIFdhc206OmVuc3VyZVdvcmts
aXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKK30KKworc3RhdGljIHZvaWQgY29tcGlsZUFu
ZEluc3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZSwgSlNWYWx1ZSBidWZmZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCit7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBidWZm
ZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBhdXRv
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisKKyAgICBWZWN0
b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2llczsKKyAgICBkZXBlbmRlbmNpZXMuYXBwZW5k
KFN0cm9uZzxKU0NlbGw+KHZtLCBpbXBvcnRPYmplY3QpKTsKKyAgICB2bS5wcm9taXNlRGVmZXJy
ZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMp
KTsKKworICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRSZWYoKm5ldyBQbGFuKHZtLCAqc291cmNl
LCBQbGFuOjpWYWxpZGF0aW9uLCBbc291cmNlLCBwcm9taXNlLCBpbXBvcnRPYmplY3QsIGdsb2Jh
bE9iamVjdF0gKFBsYW4mIHApIG11dGFibGUgeworICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9
IG1ha2VSZWYocCk7CisgICAgICAgIHBsYW4tPnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNj
aGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3NvdXJjZSwgcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBn
bG9iYWxPYmplY3QsIHBsYW4gPSBXVEZNb3ZlKHBsYW4pXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIFZNJiB2bSA9IHBsYW4tPnZtKCk7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1v
ZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0sIGV4ZWMsIGdsb2JhbE9i
amVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShzb3VyY2UpLCBwbGFu
LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgICAgICAgICByZWplY3QoZXhlYywgc2NvcGUsIHByb21pc2UpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4
ZWMsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5k
SW5zdGFuY2UpOworICAgICAgICB9KTsKKyAgICB9KSk7CisKKyAgICBXYXNtOjplbnN1cmVXb3Jr
bGlzdCgpLmVucXVldWUoV1RGTW92ZShwbGFuKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZSA9IEpTUHJv
bWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKGNhdGNoU2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
CisgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDEpOworICAgIEpT
T2JqZWN0KiBpbXBvcnRPYmplY3QgPSBpbXBvcnRBcmd1bWVudC5nZXRPYmplY3QoKTsKKyAgICBp
ZiAoIWltcG9ydEFyZ3VtZW50LmlzVW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkgeworICAg
ICAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsCisgICAgICAg
ICAgICBBU0NJSUxpdGVyYWwoInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50
aWF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGltcG9ydEFyZ3VtZW50KSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CisgICAgfQorCisgICAgSlNW
YWx1ZSBmaXJzdEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgaWYgKGF1dG8qIG1v
ZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBmaXJzdEFyZ3Vt
ZW50KSkKKyAgICAgICAgaW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIG1vZHVsZSwgaW1w
b3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UpOworICAgIGVsc2UKKyAgICAgICAgY29t
cGlsZUFuZEluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9taXNlLCBmaXJzdEFyZ3VtZW50LCBpbXBv
cnRPYmplY3QpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5wcm9taXNl
KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRh
dGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHNpemVfdCBieXRl
T2Zmc2V0OworICAgIHNpemVfdCBieXRlU2l6ZTsKKyAgICB1aW50OF90KiBiYXNlID0gZ2V0V2Fz
bUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgYnl0ZU9mZnNldCwgYnl0
ZVNpemUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgIFdhc206OlBsYW4gcGxhbih2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVTaXplLCBQ
bGFuOjpWYWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUpOworICAgIC8vIEZJWE1FOiBXZSBt
aWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVyZSBpZiB3ZSBkZXRlY3QgdGhh
dCBzb21ldGhpbmcgd2lsbCBPT00uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NjAxNQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHBsYW4ucGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpKSk7Cit9CiAKIFdlYkFzc2VtYmx5UHJvdG90
eXBlKiBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKaW5kZXggNDVh
N2Q1Ny4uMTVlNTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsMTMgQEAKICNp
bmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlU
YWJsZS5oIgogCituYW1lc3BhY2UgSlNDIHsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5j
R3JvdyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0
ZSopOworfQorCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC00MSw2ICs0OCwxMCBAQCBjb25zdCBDbGFzc0luZm8gV2ViQXNz
ZW1ibHlUYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUucHJvdG90
eQogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgKICBAYmVn
aW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCisgbGVuZ3RoIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNMZW5ndGggRG9udEVudW18QWNjZXNzb3IgMAorIGdyb3cgICB3ZWJBc3NlbWJs
eVRhYmxlUHJvdG9GdW5jR3JvdyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBnZXQgICAgd2ViQXNz
ZW1ibHlUYWJsZVByb3RvRnVuY0dldCAgICBEb250RW51bXxGdW5jdGlvbiAxCisgc2V0ICAgIHdl
YkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQgICAgRG9udEVudW18RnVuY3Rpb24gMgogIEBlbmQK
ICAqLwogCkBAIC01NiwxMSArNjcsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dlYkFzc2Vt
Ymx5VGFibGUqIGdldFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhl
Y1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQ
cm90b0Z1bmNTZXQoRXhlY1N0YXRlKik7Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTgxLDExICs4Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwotICAgIGlmICghdGFibGUtPmdyb3coaW5kZXgpKSB7Ci0gICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBj
b3VsZCBub3QgZ3JvdyB0aGUgdGFibGUiKSkpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0K
KyAgICBpZiAoIXRhYmxlLT5ncm93KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBjb3VsZCBu
b3QgZ3JvdyB0aGUgdGFibGUiKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CkBAIC0xMDAsMTEgKzEwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7Ci0gICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKLSAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ2V0IGV4
cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKTsKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5
LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2l6
ZSBvZiB0aGUgdGFibGUiKSkpKTsKIAogICAgIGlmIChKU09iamVjdCogcmVzdWx0ID0gdGFibGUt
PmdldEZ1bmN0aW9uKGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTIyLDIwICsxMjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVl
IHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2Fz
bUZ1bmN0aW9uOwogICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1
bmN0aW9uOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlIb3N0RnVu
Y3Rpb24odm0sIHZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7Ci0g
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5
cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFuIGluc3Rh
bmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIikpKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9CisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlv
bih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFibGUucHJv
dG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBvciBhbiBp
bnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiIpKSkpOwogCiAgICAgdWludDMyX3QgaW5k
ZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAg
aWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgYW4gaW50ZWdl
ciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKTsKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5LlRhYmxlLnByb3RvdHlw
ZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgdGFibGUi
KSkpKTsKIAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgdGFibGUtPmNsZWFyRnVu
Y3Rpb24oaW5kZXgpOwpAQCAtMTUxLDEwICsxNDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1XZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1dl
YkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmNyZWF0
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAg
YXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlUYWJs
ZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBA
IC0xNjMsMTQgKzE1NywxMCBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJs
eVRhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit2b2lkIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0KLSAgICBKU0Nf
TkFUSVZFX0dFVFRFUigibGVuZ3RoIiwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aCwg
RG9udEVudW0gfCBBY2Nlc3Nvcik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RS
QU5TSVRJT04oImdyb3ciLCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdywgRG9udEVudW0s
IDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJnZXQiLCB3
ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNldCIsIHdlYkFzc2VtYmx5VGFibGVQcm90
b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OwogfQogCiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpXZWJBc3NlbWJseVRhYmxlUHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgKaW5kZXgg
NWUwNDUwNS4uOGFiNDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICBERUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7
CiAKIHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVy
ZSopOwotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="327233"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="327234"
          type_id="3"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305838</attachid>
            <date>2017-03-29 23:34:42 -0700</date>
            <delta_ts>2017-03-30 00:16:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-wasm-misc.patch</filename>
            <type>text/plain</type>
            <size>40378</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkYzQyNWM4ODFhOWM1M2U0YzE4NDc3MDUwMmJmY2E3MzhlYzUyYmNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI5IE1hciAyMDE3IDIxOjMyOjQ4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gd2FzbS1t
aXNjCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIDEzICsrCiBKU1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS1jb21waWxlLmpzICAgICAg
ICAgICAgICB8ICAgNCArCiBKU1Rlc3RzL3dhc20vanMtYXBpL3ZhbGlkYXRlLmpzICAgICAgICAg
ICAgICAgICAgICB8ICAgNCArCiBKU1Rlc3RzL3dhc20vanMtYXBpL3dlYi1hc3NlbWJseS1pbnN0
YW50aWF0ZS5qcyAgICB8ICAgMyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgfCAgNDYgKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L0pTV2ViQXNzZW1ibHkuY3BwICAgICAgIHwgMjE2ICstLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmggICAgICAgICB8ICAgNCArLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwICAgICAgICAgfCAgMzYg
KystLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaCAgICAgICAgICAg
fCAgIDQgKy0KIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcCAgICAgICAgICAg
ICAgIHwgMjI0ICsrKysrKysrKysrKysrKysrKystLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlU
YWJsZVByb3RvdHlwZS5jcHAgICAgICAgICAgfCAgNTggKysrLS0tCiAuLi4vd2FzbS9qcy9XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlLmggICAgICAgICAgICB8ICAgNCArLQogMTIgZmlsZXMgY2hh
bmdlZCwgMzI4IGluc2VydGlvbnMoKyksIDI4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgwODE1NDEuLjM0NTM0
YzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTggQEAKIDIwMTctMDMtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBmaXggbWlzYyBKUyBBUEkgaW1wbGVtZW50
YXRpb24gaW5jb25zaXN0ZW5jaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzAxODcKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIu
CisKKyAgICAgICAgVmVyaWZ5IHRoYXQgV2ViQXNzZW1ibHkgZnVuY3Rpb24gYXJlIG9uIHRoZSBv
YmplY3QncyBfX3Byb3RvX18uCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9Nb2R1bGUtY29tcGls
ZS5qczoKKyAgICAgICAgKiB3YXNtL2pzLWFwaS92YWxpZGF0ZS5qczoKKyAgICAgICAgKiB3YXNt
L2pzLWFwaS93ZWItYXNzZW1ibHktaW5zdGFudGlhdGUuanM6CisKKzIwMTctMDMtMjkgIEpGIEJh
c3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5OiBhZGQg
c2hlbGwtb25seSBNZW1vcnkgbW9kZSBoZWxwZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDIyNwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS1jb21waWxlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUtY29t
cGlsZS5qcwppbmRleCA2MzI0MzAyLi4zODZkN2QwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS1jb21waWxlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxl
LWNvbXBpbGUuanMKQEAgLTEsNiArMSwxMCBAQAogaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4u
L2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIAorYXNz
ZXJ0LmlzRnVuY3Rpb24oV2ViQXNzZW1ibHkuY29tcGlsZSk7Cithc3NlcnQuaXNGdW5jdGlvbihX
ZWJBc3NlbWJseS5fX3Byb3RvX18uY29tcGlsZSk7Cithc3NlcnQuZXEoV2ViQXNzZW1ibHkuY29t
cGlsZS5sZW5ndGgsIDEpOworCiBhc3luYyBmdW5jdGlvbiB0ZXN0UHJvbWlzZUFQSSgpIHsKICAg
ICB7CiAgICAgICAgIC8vIENhbid0IGRlY2xhcmUgbW9yZSB0aGFuIG9uZSBtZW1vcnkuCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3ZhbGlkYXRlLmpzIGIvSlNUZXN0cy93YXNtL2pz
LWFwaS92YWxpZGF0ZS5qcwppbmRleCAzOTkzYWJlLi44ZjRlOGEzIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20vanMtYXBpL3ZhbGlkYXRlLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmFs
aWRhdGUuanMKQEAgLTEsNiArMSwxMCBAQAogaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fz
c2VydC5qcyc7CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIAorYXNzZXJ0
LmlzRnVuY3Rpb24oV2ViQXNzZW1ibHkudmFsaWRhdGUpOworYXNzZXJ0LmlzRnVuY3Rpb24oV2Vi
QXNzZW1ibHkuX19wcm90b19fLnZhbGlkYXRlKTsKK2Fzc2VydC5lcShXZWJBc3NlbWJseS52YWxp
ZGF0ZS5sZW5ndGgsIDEpOworCiB7CiAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigp
KQogICAgICAgICAuVHlwZSgpLkVuZCgpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBp
L3dlYi1hc3NlbWJseS1pbnN0YW50aWF0ZS5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFz
c2VtYmx5LWluc3RhbnRpYXRlLmpzCmluZGV4IGZiNDg4N2EuLmViM2U5OWIgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCisrKyBiL0pT
VGVzdHMvd2FzbS9qcy1hcGkvd2ViLWFzc2VtYmx5LWluc3RhbnRpYXRlLmpzCkBAIC0xLDcgKzEs
OCBAQAogaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiBpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIAotYXNzZXJ0LnRydXRoeShXZWJBc3NlbWJseS5p
bnN0YW50aWF0ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKTsKK2Fzc2VydC5pc0Z1bmN0aW9uKFdlYkFz
c2VtYmx5Lmluc3RhbnRpYXRlKTsKK2Fzc2VydC5pc0Z1bmN0aW9uKFdlYkFzc2VtYmx5Ll9fcHJv
dG9fXy5pbnN0YW50aWF0ZSk7CiBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUubGVu
Z3RoLCAxKTsKIAogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMzE4NDJlZi4uYTAxNWQx
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE3LTAzLTI5
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJs
eTogZml4IG1pc2MgSlMgQVBJIGltcGxlbWVudGF0aW9uIGluY29uc2lzdGVuY2llcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTg3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgIEF1dG8tZ2VuZXJhdGUgbG9v
a3VwIHRhYmxlcy4KKyAgICAgICAgTWV0aG9kcyBzaG91bGQgYmUgb24gcHJvdG90eXBlLgorICAg
ICAgICBFeGNlcHRpb24gcmV0dXJucyBzaG91bGQgYmUgaWRpb21hdGljLgorCisgICAgICAgICog
d2FzbS9KU1dlYkFzc2VtYmx5LmNwcDogdmFsaWRhdGUgLyBjb21waWxlIC8gaW5zdGFudGlhdGUg
c2hvdWxkCisgICAgICAgIGJlIG9uIHRoZSBwcm90b3R5cGUKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpyZWplY3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseUNvbXBpbGVGdW5jKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cmVzb2x2ZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6Omluc3RhbnRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Y29tcGlsZUFuZEluc3RhbnRpYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlJbnN0YW50aWF0ZUZ1bmMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjp3ZWJBc3Nl
bWJseVZhbGlkYXRlRnVuYyk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9KU1dlYkFzc2VtYmx5
Lmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5jcHA6IG1v
dmUgZnJvbSBKU1dlYkFzc2VtYmx5LmNwcAorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1lbW9y
eVByb3RvRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TWVtb3J5UHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6cmVqZWN0KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlDb21waWxlRnVu
Yyk6CisgICAgICAgIChKU0M6OnJlc29sdmUpOgorICAgICAgICAoSlNDOjppbnN0YW50aWF0ZSk6
CisgICAgICAgIChKU0M6OmNvbXBpbGVBbmRJbnN0YW50aWF0ZSk6CisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlWYWxp
ZGF0ZUZ1bmMpOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseUZ1bmN0aW9uQ29tcGlsZSk6IERlbGV0
ZWQuCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3cpOgorICAgICAgICAoSlND
Ojp3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0KToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1i
bHlUYWJsZVByb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGUuaDoKKwogMjAxNy0wMy0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB3aW5kb3dzIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAKaW5kZXggOTk3ZWUyZi4uNDdi
YzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJs
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJseS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjgsMjIzICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SGVscGVycy5oIgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5o
IgotI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlByb21pc2VEZWZlcnJlZFRpbWVyLmgiCi0jaW5jbHVkZSAi
U3Ryb25nSW5saW5lcy5oIgotI2luY2x1ZGUgIldhc21QbGFuLmgiCi0jaW5jbHVkZSAiV2FzbVdv
cmtsaXN0LmgiCi0jaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5oIgotCi11
c2luZyBKU0M6Oldhc206OlBsYW47CiAKIG5hbWVzcGFjZSBKU0MgewogCiBTVEFUSUNfQVNTRVJU
X0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNXZWJBc3NlbWJseSk7CiAKLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlWYWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKik7Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0
YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5SW5zdGFudGlh
dGVGdW5jKEV4ZWNTdGF0ZSopOwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgcmVqZWN0KEV4ZWNT
dGF0ZSogZXhlYywgQ2F0Y2hTY29wZSYgY2F0Y2hTY29wZSwgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2UpCi17Ci0gICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlv
bigpOwotICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgIGNhdGNoU2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKLSAgICBwcm9taXNlLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uLT52YWx1ZSgpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7Ci19Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwotCi0gICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2UgPSBK
U1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc291
cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLQotICAgIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwotICAgIGRlcGVuZGVuY2llcy5hcHBlbmQo
U3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgIHZtLnByb21pc2VEZWZlcnJl
ZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykp
OwotCi0gICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IFBsYW4odm0sICpzb3VyY2Us
IFBsYW46OlZhbGlkYXRpb24sIFtzb3VyY2UsIHByb21pc2UsIGdsb2JhbE9iamVjdF0gKFBsYW4m
IHApIG11dGFibGUgewotICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IG1ha2VSZWYocCk7Ci0g
ICAgICAgIHBsYW4tPnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24o
cHJvbWlzZSwgW3NvdXJjZSwgcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCBwbGFuID0gV1RGTW92ZShw
bGFuKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBWTSYgdm0gPSBwbGFuLT52bSgpOwotICAg
ICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAg
ICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIodm0s
IGV4ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1Y3R1cmUoKSwgV1RGTW92
ZShzb3VyY2UpLCBXVEZNb3ZlKHBsYW4pKTsKLSAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRp
b24oKSkgewotICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlKGV4ZWMsIG1vZHVsZSk7Ci0gICAgICAgIH0pOwotICAgIH0pKTsKLQotICAg
IFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7Ci19Ci0KLWVudW0gY2xhc3Mg
UmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZUFuZEluc3RhbmNlIH07Ci1zdGF0aWMg
dm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwgSlNXZWJBc3NlbWJseU1v
ZHVsZSogbW9kdWxlLCBSZXNvbHZlIGVudHJpZXMpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGluc3RhbmNlLT5maW5hbGl6ZUNyZWF0aW9uKHZtLCBl
eGVjKTsKLSAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKLSAgICAgICAgcmVqZWN0KGV4ZWMs
IHNjb3BlLCBwcm9taXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChlbnRy
aWVzID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZShl
eGVjLCBpbnN0YW5jZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEpTT2JqZWN0KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoIm1vZHVsZSIpKSwgbW9k
dWxlKTsKLSAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlIikpLCBpbnN0YW5jZSk7Ci0gICAgICAgIHBy
b21pc2UtPnJlc29sdmUoZXhlYywgcmVzdWx0KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGlu
c3RhbnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJv
bWlzZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0
LCBSZXNvbHZlIGVudHJpZXMpCi17Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOwotICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHBvdGVudGlhbGx5IHJlY29tcGlsaW5n
IGEgbW9kdWxlLiBXZSBmaXJzdCBnYXRoZXIgYWxsIHRoZSBpbXBvcnQvbWVtb3J5IGluZm9ybWF0
aW9uIHByaW9yIHRvIGNvbXBpbGluZyBjb2RlLgotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
aW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJ
bnN0YW5jZVN0cnVjdHVyZSgpKTsKLSAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKLSAgICAg
ICAgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSBjYXNlczoKLSAgICAvLyAxKSBUaGUg
aW5zdGFuY2UgYWxyZWFkeSBoYXMgYW4gaW5pdGlhbGl6ZWQgQ29kZUJsb2NrLCBzbyB3ZSBoYXZl
IG5vIG1vcmUgd29yayB0byBkby4KLSAgICAvLyAyKSBUaGUgaW5zdGFuY2UgaGFzIG5vIENvZGVC
bG9jaywgc28gd2UgbmVlZCB0byBtYWtlIG9uZSBhbmQgY29tcGlsZSB0aGUgY29kZSBmb3IgaXQu
Ci0gICAgLy8gMykgVGhlIGluc3RhbmNlIGFscmVhZHkgaGFzIGFuIHVuaW5pdGlhbGl6ZWQgQ29k
ZUJsb2NrLCBzbyBzb21lb25lIGVsc2UgaXMgY29tcGlsaW5nIGNvZGUgYW5kIHdlIGp1c3QgbmVl
ZCB0byB3YWl0IGZvciB0aGVtLgotCi0gICAgaWYgKGluc3RhbmNlLT5pbml0aWFsaXplZCgpKSB7
Ci0gICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVu
dHJpZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yPFN0cm9uZzxKU0Nl
bGw+PiBkZXBlbmRlbmNpZXM7Ci0gICAgLy8gVGhlIGluc3RhbmNlIGtlZXBzIHRoZSBtb2R1bGUg
YWxpdmUuCi0gICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgaW5zdGFu
Y2UpKTsKLSAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+YWRkUGVuZGluZ1Byb21pc2UocHJv
bWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKLQotICAgIGlmIChpbnN0YW5jZS0+Y29kZUJs
b2NrKCkpIHsKLSAgICAgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlQmxvY2tl
ZFRhc2soaW5zdGFuY2UtPmNvZGVCbG9jaygpLT5wbGFuKCkucGVuZGluZ1Byb21pc2UoKSwgWyZ2
bSwgcHJvbWlzZSwgaW5zdGFuY2UsIG1vZHVsZSwgZW50cmllc10gKCkgewotICAgICAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgICAg
ICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBlbnRyaWVz
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKCFpbnN0
YW5jZS0+Y29kZUJsb2NrKCkpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgcmUtcGFyc2VzIHRoZSBt
b2R1bGUgaGVhZGVyLCB3aGljaCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LgotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAyMDUKLSAgICBSZWY8UGxhbj4g
cGxhbiA9IGFkb3B0UmVmKCpuZXcgUGxhbih2bSwgbW9kdWxlLT5zb3VyY2UoKSwgUGxhbjo6RnVs
bENvbXBpbGUsIFtwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBlbnRyaWVzXSAoUGxhbiYgcCkg
ewotICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9IG1ha2VSZWYocCk7Ci0gICAgICAgIHBsYW4t
PnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNjaGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3By
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXMsIHBsYW4gPSBXVEZNb3ZlKHBsYW4pXSAo
KSB7Ci0gICAgICAgICAgICBWTSYgdm0gPSBwbGFuLT52bSgpOwotICAgICAgICAgICAgRXhlY1N0
YXRlKiBleGVjID0gaW5zdGFuY2UtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAg
ICAgICAgICByZXNvbHZlKHZtLCBleGVjLCBwcm9taXNlLCBpbnN0YW5jZSwgbW9kdWxlLCBlbnRy
aWVzKTsKLSAgICAgICAgfSk7Ci0gICAgfSkpOwotCi0gICAgaW5zdGFuY2UtPmFkZFVuaXRpYWxp
emVkQ29kZUJsb2NrKHZtLCBwbGFuLmNvcHlSZWYoKSk7Ci0gICAgcGxhbi0+c2V0TW9kZUFuZFBy
b21pc2UoaW5zdGFuY2UtPm1lbW9yeU1vZGUoKSwgcHJvbWlzZSk7Ci0gICAgV2FzbTo6ZW5zdXJl
V29ya2xpc3QoKS5lbnF1ZXVlKFdURk1vdmUocGxhbikpOwotfQotCi1zdGF0aWMgdm9pZCBjb21w
aWxlQW5kSW5zdGFudGlhdGUoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTUHJvbWlzZURlZmVy
cmVkKiBwcm9taXNlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCkKLXsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUodm0sIGV4ZWMs
IGJ1ZmZlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKLQotICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLQotICAg
IFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwotICAgIGRlcGVuZGVuY2llcy5h
cHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVjdCkpOwotICAgIHZtLnByb21pc2VE
ZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVu
Y2llcykpOwotCi0gICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IFBsYW4odm0sICpz
b3VyY2UsIFBsYW46OlZhbGlkYXRpb24sIFtzb3VyY2UsIHByb21pc2UsIGltcG9ydE9iamVjdCwg
Z2xvYmFsT2JqZWN0XSAoUGxhbiYgcCkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0cjxQbGFuPiBw
bGFuID0gbWFrZVJlZihwKTsKLSAgICAgICAgcGxhbi0+dm0oKS5wcm9taXNlRGVmZXJyZWRUaW1l
ci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbc291cmNlLCBwcm9taXNlLCBpbXBvcnRPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcGxhbiA9IFdURk1vdmUocGxhbildICgpIG11dGFibGUgewotICAg
ICAgICAgICAgVk0mIHZtID0gcGxhbi0+dm0oKTsKLSAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKLSAgICAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVs
ZSogbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZXhlYywgZ2xv
YmFsT2JqZWN0LT5XZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHNvdXJjZSks
IHBsYW4uY29weVJlZigpKTsKLSAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgewot
ICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29wZSwgcHJvbWlzZSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbnN0YW50aWF0ZSh2
bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhNb2R1
bGVBbmRJbnN0YW5jZSk7Ci0gICAgICAgIH0pOwotICAgIH0pKTsKLQotICAgIFdhc206OmVuc3Vy
ZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBsYW4pKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0g
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7Ci0KLSAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMSk7Ci0g
ICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwot
ICAgIGlmICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSB7
Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKLSAg
ICAgICAgICAgIEFTQ0lJTGl0ZXJhbCgic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmlu
c3RhbnRpYXRlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCIpLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0QXJndW1lbnQpKSk7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKLSAgICB9Ci0KLSAg
ICBKU1ZhbHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoYXV0
byogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGZpcnN0
QXJndW1lbnQpKQotICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxl
LCBpbXBvcnRPYmplY3QsIFJlc29sdmU6OldpdGhJbnN0YW5jZSk7Ci0gICAgZWxzZQotICAgICAg
ICBjb21waWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIGZpcnN0QXJndW1lbnQs
IGltcG9ydE9iamVjdCk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnBy
b21pc2UoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlW
YWxpZGF0ZUZ1bmMoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgc2l6ZV90
IGJ5dGVPZmZzZXQ7Ci0gICAgc2l6ZV90IGJ5dGVTaXplOwotICAgIHVpbnQ4X3QqIGJhc2UgPSBn
ZXRXYXNtQnVmZmVyRnJvbVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBieXRlT2Zmc2V0
LCBieXRlU2l6ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7Ci0gICAgV2FzbTo6UGxhbiBwbGFuKHZtLCBiYXNlICsgYnl0ZU9mZnNldCwgYnl0ZVNp
emUsIFBsYW46OlZhbGlkYXRpb24sIFBsYW46OmRvbnRGaW5hbGl6ZSk7Ci0gICAgLy8gRklYTUU6
IFdlIG1pZ2h0IHdhbnQgdG8gdGhyb3cgYW4gT09NIGV4Y2VwdGlvbiBoZXJlIGlmIHdlIGRldGVj
dCB0aGF0IHNvbWV0aGluZyB3aWxsIE9PTS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MDE1Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4ocGxhbi5wYXJzZUFuZFZhbGlkYXRlTW9kdWxlKCkpKTsKLX0KLQogY29uc3QgQ2xhc3NJ
bmZvIEpTV2ViQXNzZW1ibHk6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5IiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5KSB9OwogCi1KU1dlYkFzc2Vt
Ymx5KiBKU1dlYkFzc2VtYmx5OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0pTV2ViQXNzZW1ibHkqIEpTV2ViQXNzZW1i
bHk6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiB7CiAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJB
c3NlbWJseT4odm0uaGVhcCkpIEpTV2ViQXNzZW1ibHkodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNTMsMTMgKzQ4LDEw
IEBAIFN0cnVjdHVyZSogSlNXZWJBc3NlbWJseTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgSlNXZWJBc3NlbWJseTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBKU1dlYkFzc2Vt
Ymx5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInZhbGlkYXRlIiwgd2ViQXNzZW1ibHlWYWxpZGF0
ZUZ1bmMsIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTigiY29tcGlsZSIsIHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMsIERvbnRFbnVtLCAxKTsK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5zdGFudGlhdGUi
LCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYywgRG9udEVudW0sIDEpOwogfQogCiBKU1dlYkFz
c2VtYmx5OjpKU1dlYkFzc2VtYmx5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dlYkFzc2VtYmx5LmgKaW5kZXggMTMzZWY4MS4uMmU3
MDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXZWJBc3NlbWJs
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV2ViQXNzZW1ibHkuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Nyw3
ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6CiAgICAgSlNXZWJBc3NlbWJseShWTSYsIFN0cnVj
dHVyZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuY3BwCmluZGV4IDhkMzYxYWUuLjIyODRiMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1lbW9yeVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJv
dG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSopOwogfQogCiAj
aW5jbHVkZSAiV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUubHV0LmgiCkBAIC00NywxMiArNDgs
MTEgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlOjpzX2luZm8g
PSB7ICJXZWJBc3NlbWJseS5NZW1vcnkucHJvdG8KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJs
eU1lbW9yeVByb3RvdHlwZS5sdXQuaAogQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlN
ZW1vcnkKLSAgZ3JvdyAgICAgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNHcm93ICAgRG9udEVu
dW18RnVuY3Rpb24gMQorIGdyb3cgICB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3cgICBE
b250RW51bXxGdW5jdGlvbiAxCisgYnVmZmVyIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVm
ZmVyIERvbnRFbnVtfEFjY2Vzc29yIDAKIEBlbmQKICovCiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNCdWZmZXIoRXhlY1N0YXRlKik7Ci0K
IEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseU1lbW9yeSogZ2V0TWVtb3J5KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtNjcs
MTYgKzY3LDYgQEAgQUxXQVlTX0lOTElORSBKU1dlYkFzc2VtYmx5TWVtb3J5KiBnZXRNZW1vcnko
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogICAgIHJldHVybiBtZW1vcnk7CiB9CiAK
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNZW1vcnlQcm90b0Z1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5KiBtZW1vcnkgPSBnZXRNZW1vcnkoZXhlYywgZXhlYy0+dGhpc1ZhbHVlKCkp
OyAKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShtZW1vcnktPmJ1ZmZlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpKTsKLX0KLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJB
c3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CkBAIC05NSwxMCArODUsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseU1lbW9yeVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocmVzdWx0LnBhZ2VDb3VudCgpKSk7
CiB9CiAKLVdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3Rv
dHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
TWVtb3J5UHJvdG9GdW5jQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gZ2V0TWVtb3J5KGV4ZWMsIGV4
ZWMtPnRoaXNWYWx1ZSgpKTsgCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobWVtb3J5LT5idWZmZXIoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSk7Cit9CisKK1dlYkFzc2VtYmx5TWVtb3J5
UHJvdG90eXBlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBhdXRvKiBvYmplY3Qg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZT4o
dm0uaGVhcCkpIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtMTA3LDEwICsx
MDcsMTAgQEAgU3RydWN0dXJlKiBXZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGcKICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3ZvaWQgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgSlNDX05BVElWRV9HRVRU
RVIoImJ1ZmZlciIsIHdlYkFzc2VtYmx5TWVtb3J5UHJvdG9GdW5jQnVmZmVyLCBEb250RW51bSB8
IEFjY2Vzc29yKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCiBXZWJB
c3NlbWJseU1lbW9yeVByb3RvdHlwZTo6V2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1lbW9yeVByb3RvdHlwZS5oCmluZGV4IGYwNjFmY2Qu
LjJkMGExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TWVtb3J5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICBERUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHBy
aXZhdGU6CiAgICAgV2ViQXNzZW1ibHlNZW1vcnlQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5UHJv
dG90eXBlLmNwcAppbmRleCAyZTE3OTc3Li43OWY0NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlQcm90b3R5cGUuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDM5ICsy
OCwyMjkgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAorI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaCIKKyNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJQcm9taXNlRGVmZXJyZWRUaW1lci5oIgorI2luY2x1ZGUgIlN0cm9uZ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJXYXNtUGxhbi5oIgorI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5o
IgorI2luY2x1ZGUgIldlYkFzc2VtYmx5SW5zdGFuY2VDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuaCIKKwordXNpbmcgSlNDOjpXYXNtOjpQbGFu
OworCituYW1lc3BhY2UgSlNDIHsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VmFsaWRhdGVG
dW5jKEV4ZWNTdGF0ZSopOworfQorCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlQcm90b3R5cGUubHV0
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUoRXhlY1N0YXRlKiBleGVjKQorY29uc3Qg
Q2xhc3NJbmZvIFdlYkFzc2VtYmx5UHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5w
cm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShXZWJBc3NlbWJseVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZv
ciBXZWJBc3NlbWJseVByb3RvdHlwZS5sdXQuaAorIEBiZWdpbiBwcm90b3R5cGVUYWJsZVdlYkFz
c2VtYmx5CisgY29tcGlsZSAgICAgd2ViQXNzZW1ibHlDb21waWxlRnVuYyAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorIGluc3RhbnRpYXRlIHdlYkFzc2VtYmx5SW5zdGFudGlhdGVGdW5jIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyB2YWxpZGF0ZSAgICB3ZWJBc3NlbWJseVZhbGlkYXRlRnVuYyAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgQGVuZAorICovCisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBy
ZWplY3QoRXhlY1N0YXRlKiBleGVjLCBDYXRjaFNjb3BlJiBjYXRjaFNjb3BlLCBKU1Byb21pc2VE
ZWZlcnJlZCogcHJvbWlzZSkKIHsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIldlYkFzc2VtYmx5IGRvZXNuJ3QgeWV0IGltcGxlbWVudCB0aGUgdmFsaWRhdGUgZnVu
Y3Rpb24gcHJvcGVydHkiKSkpKTsKKyAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IGNhdGNoU2Nv
cGUuZXhjZXB0aW9uKCk7CisgICAgQVNTRVJUKGV4Y2VwdGlvbik7CisgICAgY2F0Y2hTY29wZS5j
bGVhckV4Y2VwdGlvbigpOworICAgIHByb21pc2UtPnJlamVjdChleGVjLCBleGNlcHRpb24tPnZh
bHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsK
IH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlGdW5j
dGlvbkNvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgd2ViQXNzZW1ibHlDb21waWxlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseSBkb2Vzbid0
IHlldCBpbXBsZW1lbnQgdGhlIGNvbXBpbGUgZnVuY3Rpb24gcHJvcGVydHkiKSkpKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworCisgICAgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2UgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gc291cmNlID0gY3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBleGVj
LCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOworICAgIGRlcGVu
ZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOworICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBXVEZNb3Zl
KGRlcGVuZGVuY2llcykpOworCisgICAgUmVmPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigqbmV3IFBs
YW4odm0sICpzb3VyY2UsIFBsYW46OlZhbGlkYXRpb24sIFtzb3VyY2UsIHByb21pc2UsIGdsb2Jh
bE9iamVjdF0gKFBsYW4mIHApIG11dGFibGUgeworICAgICAgICBSZWZQdHI8UGxhbj4gcGxhbiA9
IG1ha2VSZWYocCk7CisgICAgICAgIHBsYW4tPnZtKCkucHJvbWlzZURlZmVycmVkVGltZXItPnNj
aGVkdWxlV29ya1Nvb24ocHJvbWlzZSwgW3NvdXJjZSwgcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCBw
bGFuID0gV1RGTW92ZShwbGFuKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBWTSYgdm0gPSBw
bGFuLT52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCk7CisgICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6
OmNyZWF0ZVN0dWIodm0sIGV4ZWMsIGdsb2JhbE9iamVjdC0+V2ViQXNzZW1ibHlNb2R1bGVTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBsYW4pKTsKKyAgICAgICAgICAgIGlm
IChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIHJlamVjdChleGVjLCBzY29w
ZSwgcHJvbWlzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKGV4ZWMsIG1vZHVsZSk7CisgICAgICAgIH0pOwor
ICAgIH0pKTsKKworICAgIFdhc206OmVuc3VyZVdvcmtsaXN0KCkuZW5xdWV1ZShXVEZNb3ZlKHBs
YW4pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2UoKSk7CiB9
CiAKK2VudW0gY2xhc3MgUmVzb2x2ZSB7IFdpdGhJbnN0YW5jZSwgV2l0aE1vZHVsZUFuZEluc3Rh
bmNlIH07CitzdGF0aWMgdm9pZCByZXNvbHZlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1By
b21pc2VEZWZlcnJlZCogcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSwg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBSZXNvbHZlIGVudHJpZXMpCit7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGluc3RhbmNlLT5maW5hbGl6
ZUNyZWF0aW9uKHZtLCBleGVjKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChlbnRyaWVzID09IFJlc29sdmU6OldpdGhJbnN0YW5jZSkKKyAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZShleGVjLCBpbnN0YW5jZSk7CisgICAgZWxzZSB7CisgICAgICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwo
Im1vZHVsZSIpKSwgbW9kdWxlKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlIikpLCBpbnN0YW5j
ZSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoZXhlYywgcmVzdWx0KTsKKyAgICB9CiB9CiAK
LSNpbmNsdWRlICJXZWJBc3NlbWJseVByb3RvdHlwZS5sdXQuaCIKK3N0YXRpYyB2b2lkIGluc3Rh
bnRpYXRlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlz
ZSwgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBS
ZXNvbHZlIGVudHJpZXMpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOworICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHBvdGVudGlhbGx5IHJlY29tcGlsaW5nIGEg
bW9kdWxlLiBXZSBmaXJzdCBnYXRoZXIgYWxsIHRoZSBpbXBvcnQvbWVtb3J5IGluZm9ybWF0aW9u
IHByaW9yIHRvIGNvbXBpbGluZyBjb2RlLgorICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZSh2bSwgZXhlYywgbW9kdWxlLCBp
bXBvcnRPYmplY3QsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+V2ViQXNzZW1ibHlJbnN0
YW5jZVN0cnVjdHVyZSgpKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
cmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAot
bmFtZXNwYWNlIEpTQyB7CisgICAgLy8gVGhlcmUgYXJlIHRocmVlIHBvc3NpYmxlIGNhc2VzOgor
ICAgIC8vIDEpIFRoZSBpbnN0YW5jZSBhbHJlYWR5IGhhcyBhbiBpbml0aWFsaXplZCBDb2RlQmxv
Y2ssIHNvIHdlIGhhdmUgbm8gbW9yZSB3b3JrIHRvIGRvLgorICAgIC8vIDIpIFRoZSBpbnN0YW5j
ZSBoYXMgbm8gQ29kZUJsb2NrLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugb25lIGFuZCBjb21waWxlIHRo
ZSBjb2RlIGZvciBpdC4KKyAgICAvLyAzKSBUaGUgaW5zdGFuY2UgYWxyZWFkeSBoYXMgYW4gdW5p
bml0aWFsaXplZCBDb2RlQmxvY2ssIHNvIHNvbWVvbmUgZWxzZSBpcyBjb21waWxpbmcgY29kZSBh
bmQgd2UganVzdCBuZWVkIHRvIHdhaXQgZm9yIHRoZW0uCiAKLWNvbnN0IENsYXNzSW5mbyBXZWJB
c3NlbWJseVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkucHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgJnByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHksIENSRUFURV9NRVRIT0RfVEFC
TEUoV2ViQXNzZW1ibHlQcm90b3R5cGUpIH07CisgICAgaWYgKGluc3RhbmNlLT5pbml0aWFsaXpl
ZCgpKSB7CisgICAgICAgIHJlc29sdmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1
bGUsIGVudHJpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0vKiBTb3VyY2UgZm9yIFdl
YkFzc2VtYmx5UHJvdG90eXBlLmx1dC5oCi0gQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1i
bHkKLSB2YWxpZGF0ZSB3ZWJBc3NlbWJseUZ1bmN0aW9uVmFsaWRhdGUgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKLSBjb21waWxlICB3ZWJBc3NlbWJseUZ1bmN0aW9uQ29tcGlsZSAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKLSBAZW5kCi0gKi8KKyAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVu
Y2llczsKKyAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMgdGhlIG1vZHVsZSBhbGl2ZS4KKyAgICBk
ZXBlbmRlbmNpZXMuYXBwZW5kKFN0cm9uZzxKU0NlbGw+KHZtLCBpbnN0YW5jZSkpOworICAgIHZt
LnByb21pc2VEZWZlcnJlZFRpbWVyLT5hZGRQZW5kaW5nUHJvbWlzZShwcm9taXNlLCBXVEZNb3Zl
KGRlcGVuZGVuY2llcykpOworCisgICAgaWYgKGluc3RhbmNlLT5jb2RlQmxvY2soKSkgeworICAg
ICAgICB2bS5wcm9taXNlRGVmZXJyZWRUaW1lci0+c2NoZWR1bGVCbG9ja2VkVGFzayhpbnN0YW5j
ZS0+Y29kZUJsb2NrKCktPnBsYW4oKS5wZW5kaW5nUHJvbWlzZSgpLCBbJnZtLCBwcm9taXNlLCBp
bnN0YW5jZSwgbW9kdWxlLCBlbnRyaWVzXSAoKSB7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBpbnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgICAgIHJlc29sdmUo
dm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXMpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoIWluc3RhbmNlLT5jb2RlQmxv
Y2soKSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyByZS1wYXJzZXMgdGhlIG1vZHVsZSBoZWFkZXIs
IHdoaWNoIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDIwNQorICAgIFJlZjxQbGFuPiBwbGFuID0gYWRvcHRS
ZWYoKm5ldyBQbGFuKHZtLCBtb2R1bGUtPnNvdXJjZSgpLCBQbGFuOjpGdWxsQ29tcGlsZSwgW3By
b21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXNdIChQbGFuJiBwKSB7CisgICAgICAgIFJl
ZlB0cjxQbGFuPiBwbGFuID0gbWFrZVJlZihwKTsKKyAgICAgICAgcGxhbi0+dm0oKS5wcm9taXNl
RGVmZXJyZWRUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW5zdGFu
Y2UsIG1vZHVsZSwgZW50cmllcywgcGxhbiA9IFdURk1vdmUocGxhbildICgpIHsKKyAgICAgICAg
ICAgIFZNJiB2bSA9IHBsYW4tPnZtKCk7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBp
bnN0YW5jZS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgICAgIHJlc29s
dmUodm0sIGV4ZWMsIHByb21pc2UsIGluc3RhbmNlLCBtb2R1bGUsIGVudHJpZXMpOworICAgICAg
ICB9KTsKKyAgICB9KSk7CisKKyAgICBpbnN0YW5jZS0+YWRkVW5pdGlhbGl6ZWRDb2RlQmxvY2so
dm0sIHBsYW4uY29weVJlZigpKTsKKyAgICBwbGFuLT5zZXRNb2RlQW5kUHJvbWlzZShpbnN0YW5j
ZS0+bWVtb3J5TW9kZSgpLCBwcm9taXNlKTsKKyAgICBXYXNtOjplbnN1cmVXb3JrbGlzdCgpLmVu
cXVldWUoV1RGTW92ZShwbGFuKSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXBpbGVBbmRJbnN0YW50
aWF0ZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2Us
IEpTVmFsdWUgYnVmZmVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0KQoreworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHNv
dXJjZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlckZyb21WYWx1ZSh2bSwgZXhlYywgYnVmZmVyKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworCisgICAgVmVjdG9yPFN0cm9u
ZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CisgICAgZGVwZW5kZW5jaWVzLmFwcGVuZChTdHJvbmc8
SlNDZWxsPih2bSwgaW1wb3J0T2JqZWN0KSk7CisgICAgdm0ucHJvbWlzZURlZmVycmVkVGltZXIt
PmFkZFBlbmRpbmdQcm9taXNlKHByb21pc2UsIFdURk1vdmUoZGVwZW5kZW5jaWVzKSk7CisKKyAg
ICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKCpuZXcgUGxhbih2bSwgKnNvdXJjZSwgUGxhbjo6
VmFsaWRhdGlvbiwgW3NvdXJjZSwgcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3Rd
IChQbGFuJiBwKSBtdXRhYmxlIHsKKyAgICAgICAgUmVmUHRyPFBsYW4+IHBsYW4gPSBtYWtlUmVm
KHApOworICAgICAgICBwbGFuLT52bSgpLnByb21pc2VEZWZlcnJlZFRpbWVyLT5zY2hlZHVsZVdv
cmtTb29uKHByb21pc2UsIFtzb3VyY2UsIHByb21pc2UsIGltcG9ydE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBwbGFuID0gV1RGTW92ZShwbGFuKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBWTSYg
dm0gPSBwbGFuLT52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOworICAgICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBK
U1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGVTdHViKHZtLCBleGVjLCBnbG9iYWxPYmplY3QtPldl
YkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUoc291cmNlKSwgcGxhbi5jb3B5UmVm
KCkpOworICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgcmVqZWN0KGV4ZWMsIHNjb3BlLCBwcm9taXNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGluc3RhbnRpYXRlKHZtLCBleGVjLCBwcm9t
aXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNl
KTsKKyAgICAgICAgfSk7CisgICAgfSkpOworCisgICAgV2FzbTo6ZW5zdXJlV29ya2xpc3QoKS5l
bnF1ZXVlKFdURk1vdmUocGxhbikpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseUluc3RhbnRpYXRlRnVuYyhFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKKworICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlID0gSlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oY2F0Y2hTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisK
KyAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMSk7CisgICAgSlNP
YmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOworICAgIGlm
ICghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSB7CisgICAg
ICAgIHByb21pc2UtPnJlamVjdChleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywKKyAgICAgICAg
ICAgIEFTQ0lJTGl0ZXJhbCgic2Vjb25kIGFyZ3VtZW50IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRp
YXRlIG11c3QgYmUgdW5kZWZpbmVkIG9yIGFuIE9iamVjdCIpLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoaW1wb3J0QXJndW1lbnQpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cHJvbWlzZSgpKTsKKyAgICB9CisKKyAgICBKU1Zh
bHVlIGZpcnN0QXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoYXV0byogbW9k
dWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGZpcnN0QXJndW1l
bnQpKQorICAgICAgICBpbnN0YW50aWF0ZSh2bSwgZXhlYywgcHJvbWlzZSwgbW9kdWxlLCBpbXBv
cnRPYmplY3QsIFJlc29sdmU6OldpdGhJbnN0YW5jZSk7CisgICAgZWxzZQorICAgICAgICBjb21w
aWxlQW5kSW5zdGFudGlhdGUodm0sIGV4ZWMsIHByb21pc2UsIGZpcnN0QXJndW1lbnQsIGltcG9y
dE9iamVjdCk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UtPnByb21pc2Uo
KSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
VmFsaWRhdGVGdW5jKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHNpemVf
dCBieXRlT2Zmc2V0OworICAgIHNpemVfdCBieXRlU2l6ZTsKKyAgICB1aW50OF90KiBiYXNlID0g
Z2V0V2FzbUJ1ZmZlckZyb21WYWx1ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgYnl0ZU9mZnNl
dCwgYnl0ZVNpemUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOworICAgIFdhc206OlBsYW4gcGxhbih2bSwgYmFzZSArIGJ5dGVPZmZzZXQsIGJ5dGVT
aXplLCBQbGFuOjpWYWxpZGF0aW9uLCBQbGFuOjpkb250RmluYWxpemUpOworICAgIC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IHRvIHRocm93IGFuIE9PTSBleGNlcHRpb24gaGVyZSBpZiB3ZSBkZXRl
Y3QgdGhhdCBzb21ldGhpbmcgd2lsbCBPT00uCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NjAxNQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHBsYW4ucGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSgpKSk7Cit9CiAKIFdlYkFzc2VtYmx5
UHJvdG90eXBlKiBXZWJBc3NlbWJseVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKaW5k
ZXggNDVhN2Q1Ny4uMTVlNTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsMTMg
QEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlUYWJsZS5oIgogCituYW1lc3BhY2UgSlNDIHsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNMZW5ndGgoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJv
dG9GdW5jR3JvdyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNHZXQoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4
ZWNTdGF0ZSopOworfQorCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5sdXQu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MSw2ICs0OCwxMCBAQCBjb25zdCBDbGFzc0luZm8g
V2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuVGFibGUu
cHJvdG90eQogCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUubHV0LmgK
ICBAYmVnaW4gcHJvdG90eXBlVGFibGVXZWJBc3NlbWJseVRhYmxlCisgbGVuZ3RoIHdlYkFzc2Vt
Ymx5VGFibGVQcm90b0Z1bmNMZW5ndGggRG9udEVudW18QWNjZXNzb3IgMAorIGdyb3cgICB3ZWJB
c3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdyAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyBnZXQgICAg
d2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldCAgICBEb250RW51bXxGdW5jdGlvbiAxCisgc2V0
ICAgIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNTZXQgICAgRG9udEVudW18RnVuY3Rpb24gMgog
IEBlbmQKICAqLwogCkBAIC01NiwxMSArNjcsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1dl
YkFzc2VtYmx5VGFibGUqIGdldFRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2Vi
QXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqKTsKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRlKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5VGFibGVQcm90b0Z1bmNH
ZXQoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5
VGFibGVQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKik7Ci0KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTgxLDExICs4Nyw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dyb3coRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgdWludDMyX3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmICghdGFibGUtPmdyb3coaW5kZXgpKSB7Ci0gICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAgICBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUu
Z3JvdyBjb3VsZCBub3QgZ3JvdyB0aGUgdGFibGUiKSkpOwotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH0KKyAgICBpZiAoIXRhYmxlLT5ncm93KGluZGV4KSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuZ3JvdyBj
b3VsZCBub3QgZ3JvdyB0aGUgdGFibGUiKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xMDAsMTEgKzEwMyw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0dldChFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICB1aW50MzJfdCBpbmRleCA9IHRvTm9uV3JhcHBpbmdVaW50MzIoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKLSAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUu
Z2V0IGV4cGVjdHMgYW4gaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikp
KTsKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IHRhYmxlLT5z
aXplKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFz
c2VtYmx5LlRhYmxlLnByb3RvdHlwZS5nZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0
aGUgc2l6ZSBvZiB0aGUgdGFibGUiKSkpKTsKIAogICAgIGlmIChKU09iamVjdCogcmVzdWx0ID0g
dGFibGUtPmdldEZ1bmN0aW9uKGluZGV4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTIyLDIwICsxMjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlv
biogd2FzbUZ1bmN0aW9uOwogICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3Jh
cHBlckZ1bmN0aW9uOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkgJiYgIWlzV2ViQXNzZW1ibHlI
b3N0RnVuY3Rpb24odm0sIHZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24p
KSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsCi0gICAgICAgICAg
ICBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5w
cm90b3R5cGUuc2V0IGV4cGVjdHMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBudWxsIG9yIGFu
IGluc3RhbmNlIG9mIFdlYkFzc2VtYmx5LkZ1bmN0aW9uIikpKTsKLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICB9CisgICAgaWYgKCF2YWx1ZS5pc051bGwoKSAmJiAhaXNXZWJBc3NlbWJseUhvc3RG
dW5jdGlvbih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuVGFi
bGUucHJvdG90eXBlLnNldCBleHBlY3RzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gYmUgbnVsbCBv
ciBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5GdW5jdGlvbiIpKSkpOwogCiAgICAgdWludDMy
X3QgaW5kZXggPSB0b05vbldyYXBwaW5nVWludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
Ci0gICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwKLSAgICAgICAgICAgIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJXZWJBc3NlbWJseS5UYWJsZS5wcm90b3R5cGUuc2V0IGV4cGVjdHMgYW4g
aW50ZWdlciBsZXNzIHRoYW4gdGhlIHNpemUgb2YgdGhlIHRhYmxlIikpKTsKLSAgICAgICAgcmV0
dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IHRhYmxlLT5zaXplKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5LlRhYmxlLnBy
b3RvdHlwZS5zZXQgZXhwZWN0cyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUg
dGFibGUiKSkpKTsKIAogICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAgICAgICAgdGFibGUtPmNs
ZWFyRnVuY3Rpb24oaW5kZXgpOwpAQCAtMTUxLDEwICsxNDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jU2V0KEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1XZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlKiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpjcmVhdGUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6
OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
CiAgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1i
bHlUYWJsZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQogCkBAIC0xNjMsMTQgKzE1NywxMCBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5VGFibGVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotdm9pZCBXZWJB
c3NlbWJseVRhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit2b2lkIFdlYkFzc2VtYmx5VGFibGVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0KLSAg
ICBKU0NfTkFUSVZFX0dFVFRFUigibGVuZ3RoIiwgd2ViQXNzZW1ibHlUYWJsZVByb3RvRnVuY0xl
bmd0aCwgRG9udEVudW0gfCBBY2Nlc3Nvcik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04oImdyb3ciLCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR3JvdywgRG9u
dEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJn
ZXQiLCB3ZWJBc3NlbWJseVRhYmxlUHJvdG9GdW5jR2V0LCBEb250RW51bSwgMSk7Ci0gICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNldCIsIHdlYkFzc2VtYmx5VGFi
bGVQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOwogfQogCiBXZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlOjpXZWJBc3NlbWJseVRhYmxl
UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRhYmxlUHJvdG90eXBlLmgK
aW5kZXggNWUwNDUwNS4uOGFiNDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VGFibGVQcm90b3R5cGUuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICBERUNMQVJFX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKIHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZShWTSYsIFN0
cnVjdHVyZSopOwotLSAKMi45LjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>