<?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>100093</bug_id>
          
          <creation_ts>2012-10-23 02:20:42 -0700</creation_ts>
          <short_desc>[EFL][WK2] Make request manager client a C++ class</short_desc>
          <delta_ts>2012-10-23 06:52:28 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99992</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>748404</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 02:20:42 -0700</bug_when>
    <thetext>As part of bug 99992, we should move away from C&apos;ism and make request manager client a C++ class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748547</commentid>
    <comment_count>1</comment_count>
      <attachid>170138</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 05:55:25 -0700</bug_when>
    <thetext>Created attachment 170138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748550</commentid>
    <comment_count>2</comment_count>
      <attachid>170138</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-23 05:59:32 -0700</bug_when>
    <thetext>Comment on attachment 170138
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748552</commentid>
    <comment_count>3</comment_count>
      <attachid>170138</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-23 06:01:10 -0700</bug_when>
    <thetext>Comment on attachment 170138
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170138&amp;action=review

&gt; Source/WebKit2/UIProcess/efl/RequestManagerClientEfl.cpp:72
&gt; +{

maybe ASSERT(m_context) ?

&gt; Source/WebKit2/UIProcess/efl/RequestManagerClientEfl.h:29
&gt; +#include &quot;ewk_context_private.h&quot;

class Ewk_Context; ?

&gt; Source/WebKit2/UIProcess/efl/RequestManagerClientEfl.h:50
&gt; +    Ewk_Url_Scheme_Handler schemeHandler(const String&amp; scheme) const;

do you really need this method?

&gt; Source/WebKit2/UIProcess/efl/RequestManagerClientEfl.h:56
&gt; +    typedef HashMap&lt;String, Ewk_Url_Scheme_Handler&gt; URLSchemeHandlerMap;

typedef HashMap&lt;String, class Ewk_Url_Scheme_Handler&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748568</commentid>
    <comment_count>4</comment_count>
      <attachid>170144</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 06:29:14 -0700</bug_when>
    <thetext>Created attachment 170144
Patch for landing

Take into consideration feedback from Mikhail. Carrying over r+ over Kenneth.

Could someone please cq+ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748593</commentid>
    <comment_count>5</comment_count>
      <attachid>170144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 06:52:24 -0700</bug_when>
    <thetext>Comment on attachment 170144
Patch for landing

Clearing flags on attachment: 170144

Committed r132217: &lt;http://trac.webkit.org/changeset/132217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748594</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 06:52:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170138</attachid>
            <date>2012-10-23 05:55:25 -0700</date>
            <delta_ts>2012-10-23 06:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100093_requestManager_cpp.patch</filename>
            <type>text/plain</type>
            <size>20492</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0ZGJiMDZlLi4wNzAyOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgcmVxdWVzdCBtYW5hZ2VyIGNsaWVudCBh
IEMrKyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMDkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBFRkwncyByZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGEgQysrIGNsYXNzIGFuZAorICAg
ICAgICBtb3ZlIFVSTCBzY2hlbWUgaGFuZGxpbmcgY29kZSB0byBpdC4gVGhlIG5ldworICAgICAg
ICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCBpcyBub3cgaW4gVUlQcm9jZXNzL2VmbAorICAgICAg
ICBpbnN0ZWFkIG9mIFVJUHJvY2Vzcy9BUEkvZWZsIHNpbmNlIGl0IGlzIG5vdAorICAgICAgICBw
YXJ0IG9mIHRoZSBwdWJsaWMgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoRXdr
X0NvbnRleHQ6OkV3a19Db250ZXh0KToKKyAgICAgICAgKEV3a19Db250ZXh0OjpyZXF1ZXN0TWFu
YWdlcik6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlZ2lzdGVyKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoRXdrX0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tfVXJsX1NjaGVtZV9IYW5kbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6RXdrX1VybF9TY2hlbWVfSGFuZGxlcjo6RXdrX1VybF9TY2hlbWVfSGFu
ZGxlcik6CisgICAgICAgIChXZWJLaXQ6OnRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwpOgorICAg
ICAgICAoV2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6ZGlkUmVjZWl2ZVVSSVJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6UmVxdWVzdE1h
bmFnZXJDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVm
bDo6flJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnNjaGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpSZXF1ZXN0
TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJf
Y2xpZW50X3ByaXZhdGUuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChSZXF1ZXN0TWFu
YWdlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
OjpjcmVhdGUpOgorCiAyMDEyLTEwLTIzICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBv
emRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gTWFrZSBVSSBjbGllbnQg
YSBDKysgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggMTBkMzYyNS4uYjFmYjA5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTUxLDcgKzUxLDYgQEAgTElTVChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnQuY3BwCi0gICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29va2llX21hbmFnZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZXJyb3IuY3BwCkBAIC03OSw2ICs3OCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGll
bnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVm
bC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAppbmRleCAzNWFhYzVjLi5mYmMyNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNs
dWRlICJCYXR0ZXJ5UHJvdmlkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgi
CisjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJWaWJyYXRp
b25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4
dFNvdXAuaCIKQEAgLTM0LDcgKzM1LDYgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRl
eHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tp
ZV9tYW5hZ2VyX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKQEAgLTUyLDIxICs1Miw2IEBACiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLXN0cnVjdCBF
d2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKLSAgICBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNh
bGxiYWNrOwotICAgIHZvaWQqIHVzZXJEYXRhOwotCi0gICAgRXdrX1VybF9TY2hlbWVfSGFuZGxl
cigpCi0gICAgICAgIDogY2FsbGJhY2soMCkKLSAgICAgICAgLCB1c2VyRGF0YSgwKQotICAgIHsg
fQotCi0gICAgRXdrX1VybF9TY2hlbWVfSGFuZGxlcihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0Ni
IGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKLSAgICAgICAgOiBjYWxsYmFjayhjYWxsYmFjaykK
LSAgICAgICAgLCB1c2VyRGF0YSh1c2VyRGF0YSkKLSAgICB7IH0KLX07Ci0KIHR5cGVkZWYgSGFz
aE1hcDxXS0NvbnRleHRSZWYsIEV3a19Db250ZXh0Kj4gQ29udGV4dE1hcDsKIAogc3RhdGljIGlu
bGluZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKQEAgLTc3LDcgKzYyLDYgQEAgc3RhdGljIGlu
bGluZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKIAogRXdrX0NvbnRleHQ6OkV3a19Db250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBt
X3JlcXVlc3RNYW5hZ2VyKFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihjb250ZXh0KSkK
ICAgICAsIG1faGlzdG9yeUNsaWVudCgpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJl
c3VsdCA9IGNvbnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CkBAIC0xMTUsOSArOTksOSBA
QCBFd2tfQ29udGV4dDo6RXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAjZW5kaWYK
IAogICAgIC8vIEluaXRpYWxpemUgV0tDb250ZXh0IGNsaWVudHMuCi0gICAgZXdrX2NvbnRleHRf
cmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAgZXdrX2NvbnRleHRfaGlz
dG9yeV9jbGllbnRfYXR0YWNoKHRoaXMpOwogICAgIG1fZG93bmxvYWRNYW5hZ2VyID0gRG93bmxv
YWRNYW5hZ2VyRWZsOjpjcmVhdGUodGhpcyk7CisgICAgbV9yZXF1ZXN0TWFuYWdlckNsaWVudCA9
IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcyk7CiB9CiAKIEV3a19Db250ZXh0
Ojp+RXdrX0NvbnRleHQoKQpAQCAtMTgxLDE0ICsxNjUsOSBAQCBFd2tfRmF2aWNvbl9EYXRhYmFz
ZSogRXdrX0NvbnRleHQ6OmZhdmljb25EYXRhYmFzZSgpCiAgICAgcmV0dXJuIG1fZmF2aWNvbkRh
dGFiYXNlLmdldCgpOwogfQogCi1ib29sIEV3a19Db250ZXh0OjpyZWdpc3RlclVSTFNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywg
dm9pZCogdXNlckRhdGEpCitSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogRXdrX0NvbnRleHQ6OnJl
cXVlc3RNYW5hZ2VyKCkKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY2Fs
bGJhY2ssIGZhbHNlKTsKLQotICAgIG1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgRXdr
X1VybF9TY2hlbWVfSGFuZGxlcihjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICB0b0ltcGwobV9y
ZXF1ZXN0TWFuYWdlci5nZXQoKSktPnJlZ2lzdGVyVVJJU2NoZW1lKHNjaGVtZSk7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0TWFuYWdlckNsaWVudC5nZXQoKTsKIH0K
IAogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC0yNTMsMzQgKzIzMiw2IEBAIERvd25sb2FkTWFu
YWdlckVmbCogRXdrX0NvbnRleHQ6OmRvd25sb2FkTWFuYWdlcigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZG93bmxvYWRNYW5hZ2VyLmdldCgpOwogfQogCi0vKioKLSAqIFJldHJpZXZlIHRoZSByZXF1
ZXN0IG1hbmFnZXIgZm9yIEBhIGV3a0NvbnRleHQuCi0gKgotICogQHBhcmFtIGV3a0NvbnRleHQg
YSAjRXdrX0NvbnRleHQgb2JqZWN0LgotICovCi1XS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBFd2tf
Q29udGV4dDo6cmVxdWVzdE1hbmFnZXIoKQotewotICAgIHJldHVybiBtX3JlcXVlc3RNYW5hZ2Vy
LmdldCgpOwotfQotCi0vKioKLSAqIEBpbnRlcm5hbAotICogQSBuZXcgVVJMIHJlcXVlc3Qgd2Fz
IHJlY2VpdmVkLgotICoKLSAqIEBwYXJhbSBld2tDb250ZXh0IGEgI0V3a19Db250ZXh0IG9iamVj
dC4KLSAqIEBwYXJhbSBzY2hlbWVSZXF1ZXN0IGEgI0V3a19VcmxfU2NoZW1lX1JlcXVlc3Qgb2Jq
ZWN0LgotICovCi12b2lkIEV3a19Db250ZXh0Ojp1cmxTY2hlbWVSZXF1ZXN0UmVjZWl2ZWQoRXdr
X1VybF9TY2hlbWVfUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKLXsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzY2hlbWVSZXF1ZXN0KTsKLQotICAgIEV3a19VcmxfU2NoZW1lX0hhbmRs
ZXIgaGFuZGxlciA9IG1fdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZVJlcXVlc3QtPnNjaGVt
ZSgpKTsKLSAgICBpZiAoIWhhbmRsZXIuY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLQotICAg
IGhhbmRsZXIuY2FsbGJhY2soc2NoZW1lUmVxdWVzdCwgaGFuZGxlci51c2VyRGF0YSk7Ci19Ci0K
IEV3a19Db250ZXh0KiBld2tfY29udGV4dF9kZWZhdWx0X2dldCgpCiB7CiAgICAgcmV0dXJuIEV3
a19Db250ZXh0OjpkZWZhdWx0Q29udGV4dCgpLmdldCgpOwpAQCAtMzAyLDggKzI1MywxMSBAQCBF
aW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdr
Q29udGV4dCwgY29uc3QgY2hhciogcwogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChld2tDb250ZXh0LCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKHNjaGVtZSwgZmFsc2UpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChj
YWxsYmFjaywgZmFsc2UpOwogCi0gICAgcmV0dXJuIGV3a0NvbnRleHQtPnJlZ2lzdGVyVVJMU2No
ZW1lKFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKKyAgICBl
d2tDb250ZXh0LT5yZXF1ZXN0TWFuYWdlcigpLT5yZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoU3Ry
aW5nOjpmcm9tVVRGOChzY2hlbWUpLCBjYWxsYmFjaywgdXNlckRhdGEpOworCisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nf
c2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRl
X0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IgY2Fu
Y2VsLCB2b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCmluZGV4IDgzMWRlYzIuLmI5ZTc5MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmgKQEAgLTM4LDYgKzM4LDEwIEBAIGNsYXNzIE5ldHdvcmtJbmZvUHJvdmlkZXI7CiBj
bGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKICNlbmRpZgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2Ns
YXNzIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOworfQorCiBjbGFzcyBFd2tfQ29udGV4dCA6IHB1
YmxpYyBSZWZDb3VudGVkPEV3a19Db250ZXh0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RXdrX0NvbnRleHQ+IGNyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dCk7CkBAIC01Miw3
ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBmYXZpY29uRGF0
YWJhc2UoKTsKIAotICAgIGJvb2wgcmVnaXN0ZXJVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKTsK
KyAgICBXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiByZXF1ZXN0TWFuYWdlcigpOwog
CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBQYXNzUmVmUHRyPFZpYnJhdGlvblByb3ZpZGVy
PiB2aWJyYXRpb25Qcm92aWRlcigpOwpAQCAtNjYsOCArNzAsNiBAQCBwdWJsaWM6CiAKICAgICBX
S0NvbnRleHRSZWYgd2tDb250ZXh0KCk7CiAKLSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBy
ZXF1ZXN0TWFuYWdlcigpOwotCiAgICAgdm9pZCB1cmxTY2hlbWVSZXF1ZXN0UmVjZWl2ZWQoRXdr
X1VybF9TY2hlbWVfUmVxdWVzdCopOwogCiAgICAgV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmwq
IGRvd25sb2FkTWFuYWdlcigpIGNvbnN0OwpAQCAtOTEsMTEgKzkzLDggQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoVklCUkFUSU9OKQogICAgIFJlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gbV92aWJy
YXRpb25Qcm92aWRlcjsKICNlbmRpZgotICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5h
Z2VyUmVmPiBtX3JlcXVlc3RNYW5hZ2VyOwogICAgIE93blB0cjxXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlckVmbD4gbV9kb3dubG9hZE1hbmFnZXI7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBjbGFzcyBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyPiBVUkxTY2hlbWVIYW5kbGVyTWFwOwotICAg
IFVSTFNjaGVtZUhhbmRsZXJNYXAgbV91cmxTY2hlbWVIYW5kbGVyczsKKyAgICBPd25QdHI8V2Vi
S2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4gbV9yZXF1ZXN0TWFuYWdlckNsaWVudDsKIAog
ICAgIEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50IG1faGlzdG9yeUNsaWVudDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1
ZXN0X21hbmFnZXJfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZTgwMWNlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV0tCYXNlLmgiCi0jaW5jbHVkZSAiV0tTb3VwUmVxdWVz
dE1hbmFnZXIuaCIKLSNpbmNsdWRlICJXS1VSTC5oIgotI2luY2x1ZGUgImV3a19jb250ZXh0X3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3By
aXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmgiCi0jaW5jbHVkZSAi
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCi0KLXN0YXRpYyBpbmxpbmUgRXdrX0Nv
bnRleHQqIHRvRXdrQ29udGV4dChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV0tTb3VwUmVxdWVzdE1h
bmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1VSTFJlZiB1cmxSZWYsIFdLUGFnZVJl
ZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFJl
ZlB0cjxFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0PiBzY2hlbWVSZXF1ZXN0ID0gRXdrX1VybF9TY2hl
bWVfUmVxdWVzdDo6Y3JlYXRlKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgdXJsUmVmLCByZXF1ZXN0
SUQpOwotICAgIHRvRXdrQ29udGV4dChjbGllbnRJbmZvKS0+dXJsU2NoZW1lUmVxdWVzdFJlY2Vp
dmVkKHNjaGVtZVJlcXVlc3QuZ2V0KCkpOwotfQotCi12b2lkIGV3a19jb250ZXh0X3JlcXVlc3Rf
bWFuYWdlcl9jbGllbnRfYXR0YWNoKEV3a19Db250ZXh0KiBjb250ZXh0KQotewotICAgIFdLU291
cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IHdrUmVxdWVzdE1hbmFnZXJDbGllbnQ7Ci0gICAgbWVtc2V0
KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tTb3VwUmVxdWVzdE1hbmFnZXJD
bGllbnQpKTsKLQotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQudmVyc2lvbiA9IGtXS1NvdXBS
ZXF1ZXN0TWFuYWdlckNsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIHdrUmVxdWVzdE1hbmFnZXJD
bGllbnQuY2xpZW50SW5mbyA9IGNvbnRleHQ7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5k
aWRSZWNlaXZlVVJJUmVxdWVzdCA9IGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotCi0gICAgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoY29udGV4dC0+cmVxdWVzdE1hbmFnZXIoKSwgJndrUmVx
dWVzdE1hbmFnZXJDbGllbnQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21h
bmFnZXJfY2xpZW50X3ByaXZhdGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEx
MzQzOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgZXdrX2NvbnRleHRf
cmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2NvbnRleHRfcmVx
dWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKLQotdHlwZWRlZiBzdHJ1Y3QgRXdrX0NvbnRl
eHQgRXdrX0NvbnRleHQ7Ci0KLXZvaWQgZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVu
dF9hdHRhY2goRXdrX0NvbnRleHQqIGNvbnRleHQpOwotCi0jZW5kaWYgLy8gZXdrX2NvbnRleHRf
cmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q0YjFjZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBA
IC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIldLQ29u
dGV4dFNvdXAuaCIKKyNpbmNsdWRlICJXS1NvdXBSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUg
IldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIK
KyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3N0cnVjdCBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHsKKyAgICBFd2tfVXJs
X1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrOworICAgIHZvaWQqIHVzZXJEYXRhOworCisgICAg
RXdrX1VybF9TY2hlbWVfSGFuZGxlcigpCisgICAgICAgIDogY2FsbGJhY2soMCkKKyAgICAgICAg
LCB1c2VyRGF0YSgwKQorICAgIHsgfQorCisgICAgRXdrX1VybF9TY2hlbWVfSGFuZGxlcihFd2tf
VXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKKyAgICAgICAg
OiBjYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCB1c2VyRGF0YSh1c2VyRGF0YSkKKyAgICB7
IH0KK307CisKK3N0YXRpYyBpbmxpbmUgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIHRvUmVxdWVz
dE1hbmFnZXJDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OmRpZFJlY2Vp
dmVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJl
ZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogcmVxdWVz
dE1hbmFnZXIgPSB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNsaWVudEluZm8pOworCisgICAg
UmVmUHRyPEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q+IHNjaGVtZVJlcXVlc3QgPSBFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0OjpjcmVhdGUoc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1cmxSZWYsIHJlcXVl
c3RJRCk7CisgICAgRXdrX1VybF9TY2hlbWVfSGFuZGxlciBoYW5kbGVyID0gcmVxdWVzdE1hbmFn
ZXItPnNjaGVtZUhhbmRsZXIoc2NoZW1lUmVxdWVzdC0+c2NoZW1lKCkpOworICAgIGlmICghaGFu
ZGxlci5jYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaGFuZGxlci5jYWxsYmFjayhz
Y2hlbWVSZXF1ZXN0LmdldCgpLCBoYW5kbGVyLnVzZXJEYXRhKTsKK30KKworUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKEV3a19Db250ZXh0KiBjb250ZXh0
KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3NvdXBSZXF1ZXN0TWFuYWdlcihX
S0NvbnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoY29udGV4dC0+d2tDb250ZXh0KCkpKQorewor
ICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50IHdrUmVxdWVzdE1hbmFnZXJDbGllbnQ7Cisg
ICAgbWVtc2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tTb3VwUmVxdWVz
dE1hbmFnZXJDbGllbnQpKTsKKworICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQudmVyc2lvbiA9
IGtXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHdrUmVxdWVz
dE1hbmFnZXJDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgd2tSZXF1ZXN0TWFuYWdlckNs
aWVudC5kaWRSZWNlaXZlVVJJUmVxdWVzdCA9IGRpZFJlY2VpdmVVUklSZXF1ZXN0OworCisgICAg
V0tTb3VwUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQobV9zb3VwUmVxdWVzdE1hbmFnZXIuZ2V0KCks
ICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50KTsKK30KKworUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6
On5SZXF1ZXN0TWFuYWdlckNsaWVudEVmbCgpCit7Cit9CisKK0V3a19VcmxfU2NoZW1lX0hhbmRs
ZXIgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVt
ZSk7Cit9CisKK3ZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1l
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBj
YWxsYmFjaywgdm9pZCogdXNlckRhdGEpCit7CisgICAgQVNTRVJUKGNhbGxiYWNrKTsKKworICAg
IG1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfSGFuZGxlcihj
YWxsYmFjaywgdXNlckRhdGEpKTsKKyAgICB0b0ltcGwobV9zb3VwUmVxdWVzdE1hbmFnZXIuZ2V0
KCkpLT5yZWdpc3RlclVSSVNjaGVtZShzY2hlbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzI0N2U5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0
TWFuYWdlckNsaWVudEVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmxfaAorI2RlZmluZSBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbF9oCisKKyNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgRXdrX1VybF9TY2hlbWVfSGFuZGxlcjsKKworY2xhc3MgUmVx
dWVzdE1hbmFnZXJDbGllbnRFZmwgeworcHVibGljOgorICAgIH5SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbCgpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPiBj
cmVhdGUoRXdrX0NvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnRleHQpKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKEV3a19Db250ZXh0Kik7CisK
KyAgICBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyIHNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBz
Y2hlbWUpIGNvbnN0OworCisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV0tT
b3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmLCBXS1BhZ2VSZWYsIHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKKyAgICBFd2tfQ29udGV4dCogbV9jb250
ZXh0OworICAgIFdLUmV0YWluUHRyPFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3NvdXBSZXF1
ZXN0TWFuYWdlcjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBFd2tfVXJsX1NjaGVtZV9I
YW5kbGVyPiBVUkxTY2hlbWVIYW5kbGVyTWFwOworICAgIFVSTFNjaGVtZUhhbmRsZXJNYXAgbV91
cmxTY2hlbWVIYW5kbGVyczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gUmVxdWVzdE1hbmFnZXJDbGllbnRFZmxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170144</attachid>
            <date>2012-10-23 06:29:14 -0700</date>
            <delta_ts>2012-10-23 06:52:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>100093_requestManager_cpp.patch</filename>
            <type>text/plain</type>
            <size>20214</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0ZGJiMDZlLi45ODgxMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgcmVxdWVzdCBtYW5hZ2VyIGNsaWVudCBh
IEMrKyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMDkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgTWFrZSBFRkwncyByZXF1ZXN0IG1hbmFnZXIgY2xpZW50IGEgQysrIGNs
YXNzIGFuZAorICAgICAgICBtb3ZlIFVSTCBzY2hlbWUgaGFuZGxpbmcgY29kZSB0byBpdC4gVGhl
IG5ldworICAgICAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCBpcyBub3cgaW4gVUlQcm9jZXNz
L2VmbAorICAgICAgICBpbnN0ZWFkIG9mIFVJUHJvY2Vzcy9BUEkvZWZsIHNpbmNlIGl0IGlzIG5v
dAorICAgICAgICBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLgorCisgICAgICAgICogUGxhdGZvcm1F
ZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgor
ICAgICAgICAoRXdrX0NvbnRleHQ6OkV3a19Db250ZXh0KToKKyAgICAgICAgKEV3a19Db250ZXh0
OjpyZXF1ZXN0TWFuYWdlcik6CisgICAgICAgIChld2tfY29udGV4dF91cmxfc2NoZW1lX3JlZ2lz
dGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrX0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2Vy
X2NsaWVudC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrX1VybF9TY2hlbWVf
SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OkV3a19VcmxfU2NoZW1lX0hhbmRsZXI6OkV3a19V
cmxfU2NoZW1lX0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0Ojp0b1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OmRpZFJl
Y2VpdmVVUklSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRF
Zmw6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6On5SZXF1ZXN0TWFuYWdlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJL
aXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3JlcXVl
c3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmw6OmNyZWF0ZSk6CisKIDIwMTItMTAtMjMgIE1pa2hhaWwgUG96ZG55YWtvdiAg
PG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBNYWtl
IFVJIGNsaWVudCBhIEMrKyBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAxMGQz
NjI1Li5iMWZiMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNTEsNyArNTEsNiBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9oaXN0b3J5X2NsaWVu
dC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJf
Y2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb29raWVfbWFuYWdlci5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19lcnJvci5jcHAKQEAgLTc5LDYgKzc4LDcgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCiAg
ICAgVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L1BhZ2VVSUNsaWVudEVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvVGV4dENoZWNrZXJFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9X
ZWJDb250ZXh0RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCmluZGV4IDM1YWFjNWMuLmZiYzI0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIkJhdHRlcnlQcm92aWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtJbmZv
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJSZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oIgogI2luY2x1
ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV0tDb250ZXh0U291cC5oIgpAQCAtMzQsNyArMzUsNiBAQAogI2luY2x1ZGUgIldlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfaGlzdG9yeV9jbGll
bnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKLSNpbmNsdWRl
ICJld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2Rh
dGFiYXNlX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgpAQCAtNTIsMjEgKzUy
LDYgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
IAotc3RydWN0IEV3a19VcmxfU2NoZW1lX0hhbmRsZXIgewotICAgIEV3a19VcmxfU2NoZW1lX1Jl
cXVlc3RfQ2IgY2FsbGJhY2s7Ci0gICAgdm9pZCogdXNlckRhdGE7Ci0KLSAgICBFd2tfVXJsX1Nj
aGVtZV9IYW5kbGVyKCkKLSAgICAgICAgOiBjYWxsYmFjaygwKQotICAgICAgICAsIHVzZXJEYXRh
KDApCi0gICAgeyB9Ci0KLSAgICBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyKEV3a19VcmxfU2NoZW1l
X1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKQotICAgICAgICA6IGNhbGxiYWNr
KGNhbGxiYWNrKQotICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQotICAgIHsgfQotfTsKLQog
dHlwZWRlZiBIYXNoTWFwPFdLQ29udGV4dFJlZiwgRXdrX0NvbnRleHQqPiBDb250ZXh0TWFwOwog
CiBzdGF0aWMgaW5saW5lIENvbnRleHRNYXAmIGNvbnRleHRNYXAoKQpAQCAtNzcsNyArNjIsNiBA
QCBzdGF0aWMgaW5saW5lIENvbnRleHRNYXAmIGNvbnRleHRNYXAoKQogCiBFd2tfQ29udGV4dDo6
RXdrX0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fcmVxdWVzdE1hbmFnZXIoV0tDb250ZXh0R2V0U291cFJlcXVlc3RNYW5hZ2Vy
KGNvbnRleHQpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KCkKIHsKICAgICBDb250ZXh0TWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gY29udGV4dE1hcCgpLmFkZChjb250ZXh0LCB0aGlzKTsKQEAgLTEx
NSw5ICs5OSw5IEBAIEV3a19Db250ZXh0OjpFd2tfQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4
dCkKICNlbmRpZgogCiAgICAgLy8gSW5pdGlhbGl6ZSBXS0NvbnRleHQgY2xpZW50cy4KLSAgICBl
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X2F0dGFjaCh0aGlzKTsKICAgICBld2tf
Y29udGV4dF9oaXN0b3J5X2NsaWVudF9hdHRhY2godGhpcyk7CiAgICAgbV9kb3dubG9hZE1hbmFn
ZXIgPSBEb3dubG9hZE1hbmFnZXJFZmw6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3JlcXVlc3RNYW5h
Z2VyQ2xpZW50ID0gUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKTsKIH0KIAog
RXdrX0NvbnRleHQ6On5Fd2tfQ29udGV4dCgpCkBAIC0xODEsMTQgKzE2NSw5IEBAIEV3a19GYXZp
Y29uX0RhdGFiYXNlKiBFd2tfQ29udGV4dDo6ZmF2aWNvbkRhdGFiYXNlKCkKICAgICByZXR1cm4g
bV9mYXZpY29uRGF0YWJhc2UuZ2V0KCk7CiB9CiAKLWJvb2wgRXdrX0NvbnRleHQ6OnJlZ2lzdGVy
VVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0Ni
IGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBFd2tf
Q29udGV4dDo6cmVxdWVzdE1hbmFnZXIoKQogewotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChjYWxsYmFjaywgZmFsc2UpOwotCi0gICAgbV91cmxTY2hlbWVIYW5kbGVycy5zZXQo
c2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyKGNhbGxiYWNrLCB1c2VyRGF0YSkpOwotICAg
IHRvSW1wbChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+cmVnaXN0ZXJVUklTY2hlbWUoc2NoZW1l
KTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50
LmdldCgpOwogfQogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTI1MywzNCArMjMyLDYgQEAg
RG93bmxvYWRNYW5hZ2VyRWZsKiBFd2tfQ29udGV4dDo6ZG93bmxvYWRNYW5hZ2VyKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kb3dubG9hZE1hbmFnZXIuZ2V0KCk7CiB9CiAKLS8qKgotICogUmV0cmll
dmUgdGhlIHJlcXVlc3QgbWFuYWdlciBmb3IgQGEgZXdrQ29udGV4dC4KLSAqCi0gKiBAcGFyYW0g
ZXdrQ29udGV4dCBhICNFd2tfQ29udGV4dCBvYmplY3QuCi0gKi8KLVdLU291cFJlcXVlc3RNYW5h
Z2VyUmVmIEV3a19Db250ZXh0OjpyZXF1ZXN0TWFuYWdlcigpCi17Ci0gICAgcmV0dXJuIG1fcmVx
dWVzdE1hbmFnZXIuZ2V0KCk7Ci19Ci0KLS8qKgotICogQGludGVybmFsCi0gKiBBIG5ldyBVUkwg
cmVxdWVzdCB3YXMgcmVjZWl2ZWQuCi0gKgotICogQHBhcmFtIGV3a0NvbnRleHQgYSAjRXdrX0Nv
bnRleHQgb2JqZWN0LgotICogQHBhcmFtIHNjaGVtZVJlcXVlc3QgYSAjRXdrX1VybF9TY2hlbWVf
UmVxdWVzdCBvYmplY3QuCi0gKi8KLXZvaWQgRXdrX0NvbnRleHQ6OnVybFNjaGVtZVJlcXVlc3RS
ZWNlaXZlZChFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0KiBzY2hlbWVSZXF1ZXN0KQotewotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNjaGVtZVJlcXVlc3QpOwotCi0gICAgRXdrX1VybF9T
Y2hlbWVfSGFuZGxlciBoYW5kbGVyID0gbV91cmxTY2hlbWVIYW5kbGVycy5nZXQoc2NoZW1lUmVx
dWVzdC0+c2NoZW1lKCkpOwotICAgIGlmICghaGFuZGxlci5jYWxsYmFjaykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaGFuZGxlci5jYWxsYmFjayhzY2hlbWVSZXF1ZXN0LCBoYW5kbGVyLnVzZXJE
YXRhKTsKLX0KLQogRXdrX0NvbnRleHQqIGV3a19jb250ZXh0X2RlZmF1bHRfZ2V0KCkKIHsKICAg
ICByZXR1cm4gRXdrX0NvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkuZ2V0KCk7CkBAIC0zMDIsOCAr
MjUzLDExIEBAIEVpbmFfQm9vbCBld2tfY29udGV4dF91cmxfc2NoZW1lX3JlZ2lzdGVyKEV3a19D
b250ZXh0KiBld2tDb250ZXh0LCBjb25zdCBjaGFyKiBzCiB7CiAgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGV3a0NvbnRleHQsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2NoZW1lLCBmYWxzZSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGNhbGxiYWNrLCBmYWxzZSk7CiAKLSAgICByZXR1cm4gZXdrQ29udGV4dC0+cmVn
aXN0ZXJVUkxTY2hlbWUoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBjYWxsYmFjaywgdXNlckRh
dGEpOworICAgIGV3a0NvbnRleHQtPnJlcXVlc3RNYW5hZ2VyKCktPnJlZ2lzdGVyVVJMU2NoZW1l
SGFuZGxlcihTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIGNhbGxiYWNrLCB1c2VyRGF0YSk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBld2tfY29udGV4dF92aWJyYXRpb25fY2xpZW50
X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19WaWJyYXRpb25fQ2xp
ZW50X1ZpYnJhdGVfQ2IgdmlicmF0ZSwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0aW9uX0Nh
bmNlbF9DYiBjYW5jZWwsIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKaW5kZXggODMxZGVjMi4uYjll
NzkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
bnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMzgsNiArMzgsMTAgQEAgY2xhc3MgTmV0d29ya0luZm9Q
cm92aWRlcjsKIGNsYXNzIFZpYnJhdGlvblByb3ZpZGVyOwogI2VuZGlmCiAKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw7Cit9CisKIGNsYXNzIEV3a19D
b250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8RXdrX0NvbnRleHQ+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gY3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKQEAgLTUyLDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgRXdrX0Zhdmljb25fRGF0YWJhc2Uq
IGZhdmljb25EYXRhYmFzZSgpOwogCi0gICAgYm9vbCByZWdpc3RlclVSTFNjaGVtZShjb25zdCBT
dHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCog
dXNlckRhdGEpOworICAgIFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIHJlcXVlc3RN
YW5hZ2VyKCk7CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogICAgIFBhc3NSZWZQdHI8VmlicmF0
aW9uUHJvdmlkZXI+IHZpYnJhdGlvblByb3ZpZGVyKCk7CkBAIC02Niw4ICs3MCw2IEBAIHB1Ymxp
YzoKIAogICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQoKTsKIAotICAgIFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmIHJlcXVlc3RNYW5hZ2VyKCk7Ci0KICAgICB2b2lkIHVybFNjaGVtZVJlcXVlc3RS
ZWNlaXZlZChFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0Kik7CiAKICAgICBXZWJLaXQ6OkRvd25sb2Fk
TWFuYWdlckVmbCogZG93bmxvYWRNYW5hZ2VyKCkgY29uc3Q7CkBAIC05MSwxMSArOTMsOCBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShWSUJSQVRJT04pCiAgICAgUmVmUHRyPFZpYnJhdGlvblByb3Zp
ZGVyPiBtX3ZpYnJhdGlvblByb3ZpZGVyOwogI2VuZGlmCi0gICAgV0tSZXRhaW5QdHI8V0tTb3Vw
UmVxdWVzdE1hbmFnZXJSZWY+IG1fcmVxdWVzdE1hbmFnZXI7CiAgICAgT3duUHRyPFdlYktpdDo6
RG93bmxvYWRNYW5hZ2VyRWZsPiBtX2Rvd25sb2FkTWFuYWdlcjsKLQotICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIGNsYXNzIEV3a19VcmxfU2NoZW1lX0hhbmRsZXI+IFVSTFNjaGVtZUhhbmRs
ZXJNYXA7Ci0gICAgVVJMU2NoZW1lSGFuZGxlck1hcCBtX3VybFNjaGVtZUhhbmRsZXJzOworICAg
IE93blB0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsPiBtX3JlcXVlc3RNYW5hZ2Vy
Q2xpZW50OwogCiAgICAgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQgbV9oaXN0b3J5Q2xpZW50
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlODAxY2UuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVu
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJXS0Jhc2UuaCIKLSNpbmNsdWRlICJX
S1NvdXBSZXF1ZXN0TWFuYWdlci5oIgotI2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdl
cl9jbGllbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3QuaCIK
LSNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKLQotc3RhdGljIGlu
bGluZSBFd2tfQ29udGV4dCogdG9Fd2tDb250ZXh0KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3a19Db250ZXh0Kj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRSZWNlaXZlVVJJUmVxdWVzdChXS1Nv
dXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJl
ZiwgV0tQYWdlUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgUmVmUHRyPEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q+IHNjaGVtZVJlcXVlc3QgPSBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0OjpjcmVhdGUoc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1cmxS
ZWYsIHJlcXVlc3RJRCk7Ci0gICAgdG9Fd2tDb250ZXh0KGNsaWVudEluZm8pLT51cmxTY2hlbWVS
ZXF1ZXN0UmVjZWl2ZWQoc2NoZW1lUmVxdWVzdC5nZXQoKSk7Ci19Ci0KLXZvaWQgZXdrX2NvbnRl
eHRfcmVxdWVzdF9tYW5hZ2VyX2NsaWVudF9hdHRhY2goRXdrX0NvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQgd2tSZXF1ZXN0TWFuYWdlckNsaWVudDsK
LSAgICBtZW1zZXQoJndrUmVxdWVzdE1hbmFnZXJDbGllbnQsIDAsIHNpemVvZihXS1NvdXBSZXF1
ZXN0TWFuYWdlckNsaWVudCkpOwotCi0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC52ZXJzaW9u
ID0ga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgd2tSZXF1
ZXN0TWFuYWdlckNsaWVudC5jbGllbnRJbmZvID0gY29udGV4dDsKLSAgICB3a1JlcXVlc3RNYW5h
Z2VyQ2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0ID0gZGlkUmVjZWl2ZVVSSVJlcXVlc3Q7Ci0K
LSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChjb250ZXh0LT5yZXF1ZXN0TWFuYWdl
cigpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMTEzNDM4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0X3JlcXVlc3RfbWFuYWdlcl9jbGllbnRfcHJpdmF0ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBl
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAotI2RlZmluZSBld2tf
Y29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaAotCi10eXBlZGVmIHN0cnVj
dCBFd2tfQ29udGV4dCBFd2tfQ29udGV4dDsKLQotdm9pZCBld2tfY29udGV4dF9yZXF1ZXN0X21h
bmFnZXJfY2xpZW50X2F0dGFjaChFd2tfQ29udGV4dCogY29udGV4dCk7Ci0KLSNlbmRpZiAvLyBl
d2tfY29udGV4dF9yZXF1ZXN0X21hbmFnZXJfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmFmOGI5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5jcHAKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCisKKyNpbmNs
dWRlICJXS0NvbnRleHRTb3VwLmgiCisjaW5jbHVkZSAiV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCIK
KyNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgImV3a19j
b250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZh
dGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBFd2tfVXJsX1NjaGVtZV9IYW5k
bGVyIHsKKyAgICBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrOworICAgIHZvaWQq
IHVzZXJEYXRhOworCisgICAgRXdrX1VybF9TY2hlbWVfSGFuZGxlcigpCisgICAgICAgIDogY2Fs
bGJhY2soMCkKKyAgICAgICAgLCB1c2VyRGF0YSgwKQorICAgIHsgfQorCisgICAgRXdrX1VybF9T
Y2hlbWVfSGFuZGxlcihFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1
c2VyRGF0YSkKKyAgICAgICAgOiBjYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCB1c2VyRGF0
YSh1c2VyRGF0YSkKKyAgICB7IH0KK307CisKK3N0YXRpYyBpbmxpbmUgUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIHRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmw6OmRpZFJlY2VpdmVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNv
dXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYsIHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbCogcmVxdWVzdE1hbmFnZXIgPSB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNs
aWVudEluZm8pOworCisgICAgUmVmUHRyPEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q+IHNjaGVtZVJl
cXVlc3QgPSBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0OjpjcmVhdGUoc291cFJlcXVlc3RNYW5hZ2Vy
UmVmLCB1cmxSZWYsIHJlcXVlc3RJRCk7CisgICAgRXdrX1VybF9TY2hlbWVfSGFuZGxlciBoYW5k
bGVyID0gcmVxdWVzdE1hbmFnZXItPm1fdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KHNjaGVtZVJlcXVl
c3QtPnNjaGVtZSgpKTsKKyAgICBpZiAoIWhhbmRsZXIuY2FsbGJhY2spCisgICAgICAgIHJldHVy
bjsKKworICAgIGhhbmRsZXIuY2FsbGJhY2soc2NoZW1lUmVxdWVzdC5nZXQoKSwgaGFuZGxlci51
c2VyRGF0YSk7Cit9CisKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNs
aWVudEVmbChFd2tfQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fc291cFJlcXVlc3RNYW5hZ2Vy
KFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihjb250ZXh0LT53a0NvbnRleHQoKSkpCit7
CisgICAgQVNTRVJUKGNvbnRleHQpOworCisgICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQg
d2tSZXF1ZXN0TWFuYWdlckNsaWVudDsKKyAgICBtZW1zZXQoJndrUmVxdWVzdE1hbmFnZXJDbGll
bnQsIDAsIHNpemVvZihXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudCkpOworCisgICAgd2tSZXF1
ZXN0TWFuYWdlckNsaWVudC52ZXJzaW9uID0ga1dLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50Q3Vy
cmVudFZlcnNpb247CisgICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5jbGllbnRJbmZvID0gdGhp
czsKKyAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmRpZFJlY2VpdmVVUklSZXF1ZXN0ID0gZGlk
UmVjZWl2ZVVSSVJlcXVlc3Q7CisKKyAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudCht
X3NvdXBSZXF1ZXN0TWFuYWdlci5nZXQoKSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQpOworfQor
CitSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6flJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKCkKK3sK
K30KKwordm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5k
bGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxi
YWNrLCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBBU1NFUlQoY2FsbGJhY2spOworCisgICAgbV91
cmxTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9IYW5kbGVyKGNhbGxi
YWNrLCB1c2VyRGF0YSkpOworICAgIHRvSW1wbChtX3NvdXBSZXF1ZXN0TWFuYWdlci5nZXQoKSkt
PnJlZ2lzdGVyVVJJU2NoZW1lKHNjaGVtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNs
aWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNs
aWVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NGM5YzUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCisjZGVmaW5lIFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsX2gKKworI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiZXdrX2NvbnRl
eHQuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsIHsKK3B1YmxpYzoKKyAgICB+UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoKTsKKyAgICBz
dGF0aWMgUGFzc093blB0cjxSZXF1ZXN0TWFuYWdlckNsaWVudEVmbD4gY3JlYXRlKEV3a19Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZXF1ZXN0
TWFuYWdlckNsaWVudEVmbChjb250ZXh0KSk7CisgICAgfQorCisgICAgdm9pZCByZWdpc3RlclVS
TFNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVl
c3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbChFd2tfQ29udGV4dCopOworCisgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVVSSVJlcXVlc3QoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVm
LCBXS1BhZ2VSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisKKyAgICBXS1JldGFpblB0cjxXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZj4gbV9zb3VwUmVxdWVz
dE1hbmFnZXI7CisgICAgSGFzaE1hcDxTdHJpbmcsIGNsYXNzIEV3a19VcmxfU2NoZW1lX0hhbmRs
ZXI+IG1fdXJsU2NoZW1lSGFuZGxlcnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>