<?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>31748</bug_id>
          
          <creation_ts>2009-11-20 14:56:45 -0800</creation_ts>
          <short_desc>Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport</short_desc>
          <delta_ts>2009-11-23 13:01:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165467</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-20 14:56:45 -0800</bug_when>
    <thetext>Patch forthcoming.

We&apos;ll also need custom code for Tiger, which didn&apos;t have CFProxySupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165473</commentid>
    <comment_count>1</comment_count>
      <attachid>43617</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-20 15:11:56 -0800</bug_when>
    <thetext>Created attachment 43617
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165792</commentid>
    <comment_count>2</comment_count>
      <attachid>43617</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-22 21:43:35 -0800</bug_when>
    <thetext>Comment on attachment 43617
proposed patch

I don&apos;t get the change in SocketStreamHandle -- is the new code tiger safe?  You seem to have removed the tiger guard...

Nothing else seems to stand out as being wrong, but this code is to far from anything i really understand to be able to meaningfully review it sorry :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165794</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-22 22:06:41 -0800</bug_when>
    <thetext>&gt; You seem to have removed the tiger guard...

Not removed, just moved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165900</commentid>
    <comment_count>4</comment_count>
      <attachid>43617</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-11-23 12:36:30 -0800</bug_when>
    <thetext>Comment on attachment 43617
proposed patch

We can&apos;t layout test PAC stuff, can we?

r=me but...

&gt; -struct MainThreadEventCallbackInfo {
&gt; -    MainThreadEventCallbackInfo(CFStreamEventType type, SocketStreamHandle* handle) : type(type), handle(handle) { }
&gt; -    CFStreamEventType type;
&gt; -    SocketStreamHandle* handle;
&gt; -};
&gt; +struct MainThreadEventCallbackInfo {
&gt; +    MainThreadEventCallbackInfo(CFStreamEventType type, SocketStreamHandle* handle) : type(type), handle(handle) { }
&gt; +    CFStreamEventType type;
&gt; +    SocketStreamHandle* handle;
&gt; +};

Maybe I&apos;m blind, I don&apos;t know why this diff exists.

&gt;  #if PLATFORM(WIN)
&gt; -void SocketStreamHandle::readStreamCallbackMainThread(void* invocation)
&gt; -{
&gt; -    MainThreadEventCallbackInfo* info = static_cast&lt;MainThreadEventCallbackInfo*&gt;(invocation);
&gt; -    info-&gt;handle-&gt;readStreamCallback(info-&gt;type);
&gt; -}
&gt; -
&gt; -void SocketStreamHandle::writeStreamCallbackMainThread(void* invocation)
&gt; -{
&gt; -    MainThreadEventCallbackInfo* info = static_cast&lt;MainThreadEventCallbackInfo*&gt;(invocation);
&gt; -    info-&gt;handle-&gt;writeStreamCallback(info-&gt;type);
&gt; -}
&gt; +void SocketStreamHandle::readStreamCallbackMainThread(void* invocation)
&gt; +{
&gt; +    MainThreadEventCallbackInfo* info = static_cast&lt;MainThreadEventCallbackInfo*&gt;(invocation);
&gt; +    info-&gt;handle-&gt;readStreamCallback(info-&gt;type);
&gt; +}
&gt; +
&gt; +void SocketStreamHandle::writeStreamCallbackMainThread(void* invocation)
&gt; +{
&gt; +    MainThreadEventCallbackInfo* info = static_cast&lt;MainThreadEventCallbackInfo*&gt;(invocation);
&gt; +    info-&gt;handle-&gt;writeStreamCallback(info-&gt;type);
&gt; +}

Or this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165903</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-23 13:01:16 -0800</bug_when>
    <thetext>&gt;We can&apos;t layout test PAC stuff, can we?

We don&apos;t have the infrastructure to test proxies at all.

&gt;Maybe I&apos;m blind, I don&apos;t know why this diff exists.

Inconsistent line endings somehow got into svn repository (even though svn usually prevents this). Xcode automatically cured the problem.

Committed &lt;http://trac.webkit.org/changeset/51314&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43617</attachid>
            <date>2009-11-20 15:11:56 -0800</date>
            <delta_ts>2009-11-23 12:36:30 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>PACSupport.txt</filename>
            <type>text/plain</type>
            <size>16735</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjYwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMTEtMjAgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxNzQ4CisgICAgICAgIE1ha2UgV2ViU29ja2V0SGFuZGxlQ0ZOZXQgcmVzcGVjdCBwcm94
eSBhdXRvLWNvbmZpZ3VyYXRpb24gZmlsZXMgdmlhIENGUHJveHlTdXBwb3J0CisKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdC4KKwog
MjAwOS0xMS0xOSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgQW5kcm9pZCBwb3J0IGxhY2tzIGNvbmZpZ3VyYXRpb24gaW4gUGxhdGZvcm0uaCBhbmQgY29u
ZmlnLmguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiA1MTI0NSkK
KysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAt
MzE5LDYgKzMxOSw3IEBAIF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb245dGltZWRXYWl0RVJOU18K
IF9fWk4zV1RGMTVUaHJlYWRDb25kaXRpb25DMUV2CiBfX1pOM1dURjE1VGhyZWFkQ29uZGl0aW9u
RDFFdgogX19aTjNXVEYxNmNhbGxPbk1haW5UaHJlYWRFUEZ2UHZFUzBfCitfX1pOM1dURjIzY2Fs
bE9uTWFpblRocmVhZEFuZFdhaXRFUEZ2UHZFUzBfCiBfX1pOM1dURjE2ZmFzdFplcm9lZE1hbGxv
Y0VtCiBfX1pOM1dURjE5aW5pdGlhbGl6ZVRocmVhZGluZ0V2CiBfX1pOM1dURjIwZmFzdE1hbGxv
Y1N0YXRpc3RpY3NFdgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjYwKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAwOS0xMS0yMCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE3
NDgKKyAgICAgICAgTWFrZSBXZWJTb2NrZXRIYW5kbGVDRk5ldCByZXNwZWN0IHByb3h5IGF1dG8t
Y29uZmlndXJhdGlvbiBmaWxlcyB2aWEgQ0ZQcm94eVN1cHBvcnQKKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmg6IFJlbW92ZWQgbmFtZXMgZnJvbSBz
b21lIHZvaWQqIGFyZ3VtZW50cywgc2luY2UKKyAgICAgICAgdGhleSBkaWRuJ3QgY2FycnkgdXNl
ZnVsIGluZm9ybWF0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU6OlNvY2tldFN0cmVhbUhhbmRsZSk6IFdoZW4gd2UgbmVlZCBhbiBodHRwLXN0eWxlIFVSTCwg
d2UgYWN0dWFsbHkKKyAgICAgICAgYWx3YXlzIG5lZWQgaHR0cHMuCisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGU6OnNjaGVkdWxlU3RyZWFtcyk6IEZhY3RvcmVkIG91dCBmcm9t
IGNvbnN0cnVjdG9yLCBzaW5jZSBzdHJlYW1zCisgICAgICAgIG9ubHkgZ2V0IHNjaGVkdWxlZCBh
ZnRlciBQQUMgaXMgZmV0Y2hlZCBhbmQgZXhlY3V0ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAg
IChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlQQUNFeGVjdXRpb25EZXNjcmlwdGlv
bik6IFJldHVybiBhIGRlc2NyaXB0aW9uIGZvciBldmVudAorICAgICAgICBzb3VyY2UuCisgICAg
ICAgIChXZWJDb3JlOjpNYWluVGhyZWFkUEFDQ2FsbGJhY2tJbmZvOjpNYWluVGhyZWFkUEFDQ2Fs
bGJhY2tJbmZvKTogRm9yd2FyZCBjYWxsYmFjayB0byBtYWluIHRocmVhZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGFjRXhlY3V0aW9uQ2FsbGJhY2spOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGFjRXhlY3V0aW9uQ2FsbGJh
Y2tNYWluVGhyZWFkKTogRGl0dG8uIFRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24sCisgICAgICAg
IHdlIG1ha2UgdGhlIGNhbGwgZXZlbiBvbiBNYWMuCisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OmV4ZWN1dGVQQUNGaWxlVVJMKTogTWFrZSBhbiBhc3luYyBjYWxsIHRvIENG
TmV0d29ya0V4ZWN1dGVQcm94eUF1dG9Db25maWd1cmF0aW9uVVJMLgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpyZW1vdmVQQUNSdW5Mb29wU291cmNlKTogT25jZSBQQUMg
ZXhlY3V0aW9uIGlzIGRvbmUgb3IgYWJvcnRlZCwKKyAgICAgICAgd2UgbmVlZCB0byBnZXQgcmlk
IG9mIHRoZSBldmVudCBzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU6OmNob29zZVByb3h5KTogVXNlIHN0b3JlZCBtX2h0dHBzVVJMLmdldC4KKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHlGcm9tQXJyYXkpOiBGYWN0b3Jl
ZCBvdXQgZnJvbSBjaG9vc2VQcm94eSAtIHRoZQorICAgICAgICBhcnJheSBtYXkgY29tZSBkaXJl
Y3RseSBmcm9tIHN5c3RlbSBjb25maWd1cmF0aW9uLCBvciBmcm9tIFBBQy4KKyAgICAgICAgKFdl
YkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHkpOiBUaWdlciB2ZXJzaW9uIG9m
IHRoaXMgZnVuY3Rpb24gaXMgbm93IGNvbXBsZXRlbHkKKyAgICAgICAgc2VwYXJhdGUuCisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUpOiBS
dW4gbG9vcCBzb3VyY2Ugc2hvdWxkIGJlIGRlc3Ryb3llZAorICAgICAgICBiZWZvcmUgd2UgZ2V0
IHRvIHRoZSBkZXN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxl
OjpwbGF0Zm9ybUNsb3NlKTogRGVzdHJveSB0aGUgcnVuIGxvb3Agc291cmNlLCBpZiBQQUMgZXhl
Y3V0aW9uCisgICAgICAgIGlzIHN0aWxsIGluIHByb2dyZXNzLgorCiAyMDA5LTExLTIwICBZYWVs
IEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHJldmlzaW9uIDUxMjQ1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NywxNiArNTcsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFNv
Y2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7
CiAgICAgICAgIHZvaWQgY3JlYXRlU3RyZWFtcygpOworICAgICAgICB2b2lkIHNjaGVkdWxlU3Ry
ZWFtcygpOwogICAgICAgICB2b2lkIGNob29zZVByb3h5KCk7CisjaWZuZGVmIEJVSUxESU5HX09O
X1RJR0VSCisgICAgICAgIHZvaWQgY2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZBcnJheVJlZik7Cisg
ICAgICAgIHZvaWQgZXhlY3V0ZVBBQ0ZpbGVVUkwoQ0ZVUkxSZWYpOworICAgICAgICB2b2lkIHJl
bW92ZVBBQ1J1bkxvb3BTb3VyY2UoKTsKKyAgICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJj
ZVJlZj4gbV9wYWNSdW5Mb29wU291cmNlOworICAgICAgICBzdGF0aWMgdm9pZCBwYWNFeGVjdXRp
b25DYWxsYmFjayh2b2lkKiBjbGllbnQsIENGQXJyYXlSZWYgcHJveHlMaXN0LCBDRkVycm9yUmVm
IGVycm9yKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGFjRXhlY3V0aW9uQ2FsbGJhY2tNYWluVGhy
ZWFkKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlQQUNFeGVjdXRpb25E
ZXNjcmlwdGlvbih2b2lkKik7CisjZW5kaWYKIAogICAgICAgICBib29sIHNob3VsZFVzZVNTTCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsLnByb3RvY29sSXMoIndzcyIpOyB9CiAKLSAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIHN0cmVhbUluZm8p
OwotICAgICAgICBzdGF0aWMgdm9pZCByZWFkU3RyZWFtQ2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVm
LCBDRlN0cmVhbUV2ZW50VHlwZSwgdm9pZCogY2xpZW50Q2FsbEJhY2tJbmZvKTsKLSAgICAgICAg
c3RhdGljIHZvaWQgd3JpdGVTdHJlYW1DYWxsYmFjayhDRldyaXRlU3RyZWFtUmVmLCBDRlN0cmVh
bUV2ZW50VHlwZSwgdm9pZCogY2xpZW50Q2FsbEJhY2tJbmZvKTsKKyAgICAgICAgc3RhdGljIENG
U3RyaW5nUmVmIGNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqICk7CisgICAgICAgIHN0YXRp
YyB2b2lkIHJlYWRTdHJlYW1DYWxsYmFjayhDRlJlYWRTdHJlYW1SZWYsIENGU3RyZWFtRXZlbnRU
eXBlLCB2b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZX
cml0ZVN0cmVhbVJlZiwgQ0ZTdHJlYW1FdmVudFR5cGUsIHZvaWQqKTsKICNpZiBQTEFURk9STShX
SU4pCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlYWRTdHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9p
ZCogaW52b2NhdGlvbik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlU3RyZWFtQ2FsbGJhY2tN
YWluVGhyZWFkKHZvaWQqIGludm9jYXRpb24pOworICAgICAgICBzdGF0aWMgdm9pZCByZWFkU3Ry
ZWFtQ2FsbGJhY2tNYWluVGhyZWFkKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVT
dHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9pZCopOwogI2VuZGlmCiAgICAgICAgIHZvaWQgcmVh
ZFN0cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlKTsKICAgICAgICAgdm9pZCB3cml0ZVN0
cmVhbUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlKTsKQEAgLTc5LDcgKzg5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmQXV0aGVudGljYXRpb25DbGll
bnQoKSB7IHJlZigpOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRpY2F0aW9u
Q2xpZW50KCkgeyBkZXJlZigpOyB9CiAKLSAgICAgICAgZW51bSBDb25uZWN0aW5nU3Vic3RhdGUg
eyBOZXcsIEZldGNoaW5nUHJveHlBdXRvQ29uZmlndXJhdGlvbkZpbGUsIFdhaXRpbmdGb3JDcmVk
ZW50aWFscywgV2FpdGluZ0ZvckNvbm5lY3QsIENvbm5lY3RlZCB9OworICAgICAgICBlbnVtIENv
bm5lY3RpbmdTdWJzdGF0ZSB7IE5ldywgRXhlY3V0aW5nUEFDRmlsZSwgV2FpdGluZ0ZvckNyZWRl
bnRpYWxzLCBXYWl0aW5nRm9yQ29ubmVjdCwgQ29ubmVjdGVkIH07CiAgICAgICAgIENvbm5lY3Rp
bmdTdWJzdGF0ZSBtX2Nvbm5lY3RpbmdTdWJzdGF0ZTsKIAogICAgICAgICBlbnVtIENvbm5lY3Rp
b25UeXBlIHsgVW5rbm93biwgRGlyZWN0LCBTT0NLU1Byb3h5LCBDT05ORUNUUHJveHkgfTsKQEAg
LTkxLDcgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmV0YWluUHRyPENG
UmVhZFN0cmVhbVJlZj4gbV9yZWFkU3RyZWFtOwogICAgICAgICBSZXRhaW5QdHI8Q0ZXcml0ZVN0
cmVhbVJlZj4gbV93cml0ZVN0cmVhbTsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IG1f
aHR0cFVSTDsgLy8gd3Mocyk6IHJlcGxhY2VkIHdpdGggaHR0cChzKToKKyAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBtX2h0dHBzVVJMOyAvLyB3cyhzKTogcmVwbGFjZWQgd2l0aCBodHRwczoK
ICAgICB9OwogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCShy
ZXZpc2lvbiA1MTI0NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0ICs2OSwyMiBAQCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjCiAgICAgaWYgKCFtX3VybC5wb3J0
KCkpCiAgICAgICAgIG1fdXJsLnNldFBvcnQoc2hvdWxkVXNlU1NMKCkgPyA0NDMgOiA4MCk7CiAK
LSAgICBLVVJMIGh0dHBVUkwoS1VSTCgpLCAoc2hvdWxkVXNlU1NMKCkgPyAiaHR0cHM6Ly8iIDog
Imh0dHA6Ly8iKSArIG1fdXJsLmhvc3QoKSk7Ci0gICAgbV9odHRwVVJMLmFkb3B0Q0YoaHR0cFVS
TC5jcmVhdGVDRlVSTCgpKTsKKyAgICBLVVJMIGh0dHBzVVJMKEtVUkwoKSwgImh0dHBzOi8vIiAr
IG1fdXJsLmhvc3QoKSk7CisgICAgbV9odHRwc1VSTC5hZG9wdENGKGh0dHBzVVJMLmNyZWF0ZUNG
VVJMKCkpOwogCiAgICAgY3JlYXRlU3RyZWFtcygpOwogICAgIEFTU0VSVCghbV9yZWFkU3RyZWFt
ID09ICFtX3dyaXRlU3RyZWFtKTsKICAgICBpZiAoIW1fcmVhZFN0cmVhbSkgLy8gRG9pbmcgYXN5
bmNocm9ub3VzIFBBQyBmaWxlIHByb2Nlc3NpbmcsIHN0cmVhbXMgd2lsbCBiZSBjcmVhdGVkIGxh
dGVyLgogICAgICAgICByZXR1cm47CiAKKyAgICBzY2hlZHVsZVN0cmVhbXMoKTsKK30KKwordm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNjaGVkdWxlU3RyZWFtcygpCit7CisgICAgQVNTRVJUKG1f
cmVhZFN0cmVhbSk7CisgICAgQVNTRVJUKG1fd3JpdGVTdHJlYW0pOworCiAgICAgQ0ZTdHJlYW1D
bGllbnRDb250ZXh0IGNsaWVudENvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIGNvcHlDRlN0cmVh
bURlc2NyaXB0aW9uIH07CiAgICAgLy8gRklYTUU6IFBhc3Mgc3BlY2lmaWMgZXZlbnRzIHdlJ3Jl
IGludGVyZXN0ZWQgaW4gaW5zdGVhZCBvZiAtMS4KICAgICBDRlJlYWRTdHJlYW1TZXRDbGllbnQo
bV9yZWFkU3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxDRk9wdGlvbkZsYWdzPigtMSksIHJlYWRT
dHJlYW1DYWxsYmFjaywgJmNsaWVudENvbnRleHQpOwpAQCAtOTMsMTIgKzEwMSw3NCBAQCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjCiAgICAgQ0ZSZWFkU3RyZWFtT3Bl
bihtX3JlYWRTdHJlYW0uZ2V0KCkpOwogICAgIENGV3JpdGVTdHJlYW1PcGVuKG1fd3JpdGVTdHJl
YW0uZ2V0KCkpOwogCisjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgaWYgKG1fcGFjUnVu
TG9vcFNvdXJjZSkKKyAgICAgICAgcmVtb3ZlUEFDUnVuTG9vcFNvdXJjZSgpOworI2VuZGlmCisK
ICAgICBtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9IFdhaXRpbmdGb3JDb25uZWN0OwogfQogCisjaWZu
ZGVmIEJVSUxESU5HX09OX1RJR0VSCitDRlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1IYW5kbGU6OmNv
cHlQQUNFeGVjdXRpb25EZXNjcmlwdGlvbih2b2lkKikKK3sKKyAgICByZXR1cm4gQ0ZTVFIoIldl
YlNvY2tldCBwcm94eSBQQUMgZmlsZSBleGVjdXRpb24iKTsKK30KKworc3RydWN0IE1haW5UaHJl
YWRQQUNDYWxsYmFja0luZm8geworICAgIE1haW5UaHJlYWRQQUNDYWxsYmFja0luZm8oU29ja2V0
U3RyZWFtSGFuZGxlKiBoYW5kbGUsIENGQXJyYXlSZWYgcHJveHlMaXN0KSA6IGhhbmRsZShoYW5k
bGUpLCBwcm94eUxpc3QocHJveHlMaXN0KSB7IH0KKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUqIGhh
bmRsZTsKKyAgICBDRkFycmF5UmVmIHByb3h5TGlzdDsKK307CisKK3ZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpwYWNFeGVjdXRpb25DYWxsYmFjayh2b2lkKiBjbGllbnQsIENGQXJyYXlSZWYgcHJv
eHlMaXN0LCBDRkVycm9yUmVmKQoreworICAgIFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0g
c3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlKj4oY2xpZW50KTsKKyAgICBNYWluVGhyZWFk
UEFDQ2FsbGJhY2tJbmZvIGluZm8oaGFuZGxlLCBwcm94eUxpc3QpOworICAgIC8vIElmIHdlJ3Jl
IGFscmVhZHkgb24gbWFpbiB0aHJlYWQgKGUuZy4gb24gTWFjKSwgY2FsbE9uTWFpblRocmVhZEFu
ZFdhaXQoKSB3aWxsIGJlIGp1c3QgYSBmdW5jdGlvbiBjYWxsLgorICAgIGNhbGxPbk1haW5UaHJl
YWRBbmRXYWl0KHBhY0V4ZWN1dGlvbkNhbGxiYWNrTWFpblRocmVhZCwgJmluZm8pOworfQorCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGFjRXhlY3V0aW9uQ2FsbGJhY2tNYWluVGhyZWFkKHZv
aWQqIGludm9jYXRpb24pCit7CisgICAgQVNTRVJUKG1fY29ubmVjdGluZ1N1YnN0YXRlID09IEV4
ZWN1dGluZ1BBQ0ZpbGUpOworCisgICAgTWFpblRocmVhZFBBQ0NhbGxiYWNrSW5mbyogaW5mbyA9
IHN0YXRpY19jYXN0PE1haW5UaHJlYWRQQUNDYWxsYmFja0luZm8qPihpbnZvY2F0aW9uKTsKKyAg
ICAvLyBUaGlzIHRpbWUsIHRoZSBhcnJheSB3b24ndCBoYXZlIFBBQyBhcyBhIGZpcnN0IGVudHJ5
LgorICAgIGluZm8tPmhhbmRsZS0+Y2hvb3NlUHJveHlGcm9tQXJyYXkoaW5mby0+cHJveHlMaXN0
KTsKKyAgICBpbmZvLT5oYW5kbGUtPmNyZWF0ZVN0cmVhbXMoKTsKKyAgICBpbmZvLT5oYW5kbGUt
PnNjaGVkdWxlU3RyZWFtcygpOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6ZXhlY3V0
ZVBBQ0ZpbGVVUkwoQ0ZVUkxSZWYgcGFjRmlsZVVSTCkKK3sKKyAgICAvLyBDRk5ldHdvcmsgcmV0
dXJucyBhbiBlbXB0eSBwcm94eSBhcnJheSBmb3IgV2ViU2Nva2V0IHNjaGVtZXMsIHNvIHVzZSBt
X2h0dHBzVVJMLgorICAgIENGU3RyZWFtQ2xpZW50Q29udGV4dCBjbGllbnRDb250ZXh0ID0geyAw
LCB0aGlzLCAwLCAwLCBjb3B5UEFDRXhlY3V0aW9uRGVzY3JpcHRpb24gfTsKKyAgICBtX3BhY1J1
bkxvb3BTb3VyY2UuYWRvcHRDRihDRk5ldHdvcmtFeGVjdXRlUHJveHlBdXRvQ29uZmlndXJhdGlv
blVSTChwYWNGaWxlVVJMLCBtX2h0dHBzVVJMLmdldCgpLCBwYWNFeGVjdXRpb25DYWxsYmFjaywg
JmNsaWVudENvbnRleHQpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgQ0ZSdW5Mb29wQWRkU291
cmNlKGxvYWRlclJ1bkxvb3AoKSwgbV9wYWNSdW5Mb29wU291cmNlLmdldCgpLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOworI2Vsc2UKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2UoQ0ZSdW5Mb29wR2V0
Q3VycmVudCgpLCBtX3BhY1J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rl
cyk7CisjZW5kaWYKKyAgICBtX2Nvbm5lY3RpbmdTdWJzdGF0ZSA9IEV4ZWN1dGluZ1BBQ0ZpbGU7
Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZW1vdmVQQUNSdW5Mb29wU291cmNlKCkK
K3sKKyAgICBBU1NFUlQobV9wYWNSdW5Mb29wU291cmNlKTsKKworICAgIENGUnVuTG9vcFNvdXJj
ZUludmFsaWRhdGUobV9wYWNSdW5Mb29wU291cmNlLmdldCgpKTsKKyNpZiBQTEFURk9STShXSU4p
CisgICAgQ0ZSdW5Mb29wUmVtb3ZlU291cmNlKGxvYWRlclJ1bkxvb3AoKSwgbV9wYWNSdW5Mb29w
U291cmNlLmdldCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworI2Vsc2UKKyAgICBDRlJ1bkxv
b3BSZW1vdmVTb3VyY2UoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtX3BhY1J1bkxvb3BTb3VyY2Uu
Z2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisjZW5kaWYKKyAgICBtX3BhY1J1bkxvb3BT
b3VyY2UgPSAwOworfQorCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHkoKQog
ewotI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQorI2lmbmRlZiBCVUlMRElOR19PTl9MRU9QQVJECiAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcHJveHlEaWN0aW9uYXJ5KEFkb3B0Q0YsIENGTmV0d29ya0NvcHlTeXN0
ZW1Qcm94eVNldHRpbmdzKCkpOwogI2Vsc2UKICAgICAvLyBXZSBkb24ndCBuZWVkIHByb3h5IGlu
Zm9ybWF0aW9uIG9mdGVuLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB1cCBhIHBlcm1hbmVu
dCBkeW5hbWljIHN0b3JlIHNlc3Npb24uCkBAIC0xMTUsMjAgKzE4NSwzOCBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHkoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0j
aWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCiAgICAgLy8gQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JV
UkwgZG9lc24ndCBrbm93IGFib3V0IFdlYlNvY2tldCBzY2hlbWVzLCBzbyBwcmV0ZW5kIHRvIHVz
ZSBodHRwLgotICAgIC8vIEFsd2F5cyB1c2UgImh0dHBzIiB0byBnZXQgSFRUUFMgcHJveGllcyBp
biByZXN1bHQgLSB3ZSdsbCB0cnkgdG8gdXNlIHRob3NlIGZvciB3czouIGV2ZW4gdGhvdWdoIG1h
bnkgYXJlIGNvbmZpZ3VyZWQgdG8gcmVqZWN0IGNvbm5lY3Rpb25zIHRvIHBvcnRzIG90aGVyIHRo
YW4gNDQzLgotICAgIEtVUkwgaHR0cHNVUkwoS1VSTCgpLCAiaHR0cHM6Ly8iICsgbV91cmwuaG9z
dCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzVVJMQ0YoQWRvcHRDRiwgaHR0cHNV
UkwuY3JlYXRlQ0ZVUkwoKSk7CisgICAgLy8gQWx3YXlzIHVzZSAiaHR0cHMiIHRvIGdldCBIVFRQ
UyBwcm94aWVzIGluIHJlc3VsdCAtIHdlJ2xsIHRyeSB0byB1c2UgdGhvc2UgZm9yIHdzOi8vIGV2
ZW4gdGhvdWdoIG1hbnkgYXJlIGNvbmZpZ3VyZWQgdG8gcmVqZWN0IGNvbm5lY3Rpb25zIHRvIHBv
cnRzIG90aGVyIHRoYW4gNDQzLgorICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBwcm94eUFycmF5
KEFkb3B0Q0YsIENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKG1faHR0cHNVUkwuZ2V0KCksIHBy
b3h5RGljdGlvbmFyeS5nZXQoKSkpOwogCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHByb3h5
QXJyYXkoQWRvcHRDRiwgQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNVUkxDRi5nZXQo
KSwgcHJveHlEaWN0aW9uYXJ5LmdldCgpKSk7Ci0gICAgQ0ZJbmRleCBwcm94eUFycmF5Q291bnQg
PSBDRkFycmF5R2V0Q291bnQocHJveHlBcnJheS5nZXQoKSk7CisgICAgY2hvb3NlUHJveHlGcm9t
QXJyYXkocHJveHlBcnJheS5nZXQoKSk7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpj
aG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHByb3h5QXJyYXkpCit7CisgICAgaWYgKCFw
cm94eUFycmF5KQorICAgICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gRGlyZWN0OwogCi0gICAgLy8g
RklYTUU6IFN1cHBvcnQgUEFDIGZpbGVzIChhbHdheXMgdGhlIHByZWZlcnJlZCBlbnRyeSkuCisg
ICAgQ0ZJbmRleCBwcm94eUFycmF5Q291bnQgPSBDRkFycmF5R2V0Q291bnQocHJveHlBcnJheSk7
CisKKyAgICAvLyBQQUMgaXMgYWx3YXlzIHRoZSBmaXJzdCBlbnRyeSwgaWYgcHJlc2VudC4KKyAg
ICBpZiAocHJveHlBcnJheUNvdW50KSB7CisgICAgICAgIENGRGljdGlvbmFyeVJlZiBwcm94eUlu
Zm8gPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
cHJveHlBcnJheSwgMCkpOworICAgICAgICBDRlR5cGVSZWYgcHJveHlUeXBlID0gQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpOworICAgICAgICBpZiAocHJv
eHlUeXBlICYmIENGR2V0VHlwZUlEKHByb3h5VHlwZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkg
eworICAgICAgICAgICAgaWYgKENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVBdXRvQ29u
ZmlndXJhdGlvblVSTCkpIHsKKyAgICAgICAgICAgICAgICBDRlR5cGVSZWYgcGFjRmlsZVVSTCA9
IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywga0NGUHJveHlBdXRvQ29uZmlndXJhdGlv
blVSTEtleSk7CisgICAgICAgICAgICAgICAgaWYgKHBhY0ZpbGVVUkwgJiYgQ0ZHZXRUeXBlSUQo
cGFjRmlsZVVSTCkgPT0gQ0ZVUkxHZXRUeXBlSUQoKSkgeworICAgICAgICAgICAgICAgICAgICBl
eGVjdXRlUEFDRmlsZVVSTChzdGF0aWNfY2FzdDxDRlVSTFJlZj4ocGFjRmlsZVVSTCkpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNob3NlblByb3h5ID0g
MDsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBwcm94eUFycmF5Q291bnQ7ICsraSkgewot
ICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcHJveHlJbmZvID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHByb3h5QXJyYXkuZ2V0KCksIGkpKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFy
eVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSk7CiAgICAgICAgIENG
VHlwZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlBy
b3h5VHlwZUtleSk7CiAgICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRUeXBlSUQocHJveHlU
eXBlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBpZiAoQ0ZFcXVhbChw
cm94eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgewpAQCAtMTU3LDcgKzI0NSwyNyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6Y2hvb3NlUHJveHkoKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQorCisgICAgbV9jb25uZWN0aW9uVHlwZSA9IERpcmVjdDsKK30KKwog
I2Vsc2UgLy8gQlVJTERJTkdfT05fVElHRVIKKwordm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNo
b29zZVByb3h5KCkKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHByb3h5IGluZm9ybWF0aW9uIG9m
dGVuLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHNldCB1cCBhIHBlcm1hbmVudCBkeW5hbWljIHN0
b3JlIHNlc3Npb24uCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlEaWN0aW9u
YXJ5KEFkb3B0Q0YsIFNDRHluYW1pY1N0b3JlQ29weVByb3hpZXMoMCkpOworCisgICAgLy8gU09D
S1Mgb3IgSFRUUFMgKEFLQSBDT05ORUNUKSBwcm94aWVzIGFyZSBzdXBwb3J0ZWQuCisgICAgLy8g
V2ViU29ja2V0IHByb3RvY29sIHJlbGllcyBvbiBoYW5kc2hha2UgYmVpbmcgdHJhbnNmZXJyZWQg
dW5jaGFuZ2VkLCBzbyB3ZSBuZWVkIGEgcHJveHkgdGhhdCB3aWxsIG5vdCBtb2RpZnkgaGVhZGVy
cy4KKyAgICAvLyBTaW5jZSBIVFRQIHByb3hpZXMgbXVzdCBhZGQgVmlhIGhlYWRlcnMsIHRoZXkg
YXJlIGhpZ2hseSB1bmxpa2VseSB0byB3b3JrLgorICAgIC8vIE1hbnkgQ09OTkVDVCBwcm94aWVz
IGxpbWl0IGNvbm5lY3Rpdml0eSB0byBwb3J0IDQ0Mywgc28gd2UgcHJlZmVyIFNPQ0tTLCBpZiBj
b25maWd1cmVkLgorCisgICAgaWYgKCFwcm94eURpY3Rpb25hcnkpIHsKKyAgICAgICAgbV9jb25u
ZWN0aW9uVHlwZSA9IERpcmVjdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIEZJ
WE1FOiBjaGVjayBwcm94eSBieXBhc3MgbGlzdCBhbmQgRXhjbHVkZVNpbXBsZUhvc3RuYW1lcy4K
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBQQUMgZmlsZXMuCiAKQEAgLTE4NywxMCArMjk1LDEwIEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjaG9vc2VQcm94eSgpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKIAogICAgIG1fY29ubmVjdGlvblR5cGUgPSBE
aXJlY3Q7CiB9CisjZW5kaWYgLy8gQlVJTERJTkdfT05fVElHRVIKIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogewpAQCAtMjUwLDExICszNTgsMTEgQEAgQ0ZTdHJp
bmdSZWYgU29ja2V0U3RyZWFtSGFuZGxlOjpjb3B5Q0ZTdAogICAgIHJldHVybiAoIldlYktpdCBz
b2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmco
KTsKIH0KIAotc3RydWN0IE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyB7DQotICAgIE1haW5U
aHJlYWRFdmVudENhbGxiYWNrSW5mbyhDRlN0cmVhbUV2ZW50VHlwZSB0eXBlLCBTb2NrZXRTdHJl
YW1IYW5kbGUqIGhhbmRsZSkgOiB0eXBlKHR5cGUpLCBoYW5kbGUoaGFuZGxlKSB7IH0NCi0gICAg
Q0ZTdHJlYW1FdmVudFR5cGUgdHlwZTsNCi0gICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGU7
DQotfTsNCitzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvIHsKKyAgICBNYWluVGhy
ZWFkRXZlbnRDYWxsYmFja0luZm8oQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgU29ja2V0U3RyZWFt
SGFuZGxlKiBoYW5kbGUpIDogdHlwZSh0eXBlKSwgaGFuZGxlKGhhbmRsZSkgeyB9CisgICAgQ0ZT
dHJlYW1FdmVudFR5cGUgdHlwZTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZTsKK307
CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZSZWFkU3Ry
ZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSwgdm9pZCogY2xpZW50Q2FsbEJh
Y2tJbmZvKQogewpAQCAtMjgzLDE3ICszOTEsMTcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6
OndyaXRlU3RyZWFtQ2FsbAogfQogCiAjaWYgUExBVEZPUk0oV0lOKQotdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnJlYWRTdHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9pZCogaW52b2NhdGlvbikN
Ci17DQotICAgIE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyogaW5mbyA9IHN0YXRpY19jYXN0
PE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyo+KGludm9jYXRpb24pOw0KLSAgICBpbmZvLT5o
YW5kbGUtPnJlYWRTdHJlYW1DYWxsYmFjayhpbmZvLT50eXBlKTsNCi19DQotDQotdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OndyaXRlU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFkKHZvaWQqIGludm9j
YXRpb24pDQotew0KLSAgICBNYWluVGhyZWFkRXZlbnRDYWxsYmFja0luZm8qIGluZm8gPSBzdGF0
aWNfY2FzdDxNYWluVGhyZWFkRXZlbnRDYWxsYmFja0luZm8qPihpbnZvY2F0aW9uKTsNCi0gICAg
aW5mby0+aGFuZGxlLT53cml0ZVN0cmVhbUNhbGxiYWNrKGluZm8tPnR5cGUpOw0KLX0NCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrTWFpblRocmVhZCh2b2lkKiBp
bnZvY2F0aW9uKQoreworICAgIE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyogaW5mbyA9IHN0
YXRpY19jYXN0PE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyo+KGludm9jYXRpb24pOworICAg
IGluZm8tPmhhbmRsZS0+cmVhZFN0cmVhbUNhbGxiYWNrKGluZm8tPnR5cGUpOworfQorCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9pZCog
aW52b2NhdGlvbikKK3sKKyAgICBNYWluVGhyZWFkRXZlbnRDYWxsYmFja0luZm8qIGluZm8gPSBz
dGF0aWNfY2FzdDxNYWluVGhyZWFkRXZlbnRDYWxsYmFja0luZm8qPihpbnZvY2F0aW9uKTsKKyAg
ICBpbmZvLT5oYW5kbGUtPndyaXRlU3RyZWFtQ2FsbGJhY2soaW5mby0+dHlwZSk7Cit9CiAjZW5k
aWYgLy8gUExBVEZPUk0oV0lOKQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cmVhZFN0cmVh
bUNhbGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlIHR5cGUpCkBAIC0zOTEsNiArNDk5LDEwIEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlOjp3cml0ZVN0cmVhbUNhbGwKIFNvY2tldFN0cmVhbUhhbmRs
ZTo6flNvY2tldFN0cmVhbUhhbmRsZSgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJl
YW1IYW5kbGUgJXAgZHRvciIsIHRoaXMpOworCisjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisg
ICAgQVNTRVJUKCFtX3BhY1J1bkxvb3BTb3VyY2UpOworI2VuZGlmCiB9CiAKIGludCBTb2NrZXRT
dHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQpA
QCAtNDA1LDYgKzUxNywxMSBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9z
ZSgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1D
bG9zZSIsIHRoaXMpOwogCisjaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgaWYgKG1fcGFj
UnVuTG9vcFNvdXJjZSkgCisgICAgICAgIHJlbW92ZVBBQ1J1bkxvb3BTb3VyY2UoKTsKKyNlbmRp
ZgorCiAgICAgQVNTRVJUKCFtX3JlYWRTdHJlYW0gPT0gIW1fd3JpdGVTdHJlYW0pOwogICAgIGlm
ICghbV9yZWFkU3RyZWFtKQogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="25364"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>