<?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>130211</bug_id>
          
          <creation_ts>2014-03-13 14:53:42 -0700</creation_ts>
          <short_desc>Web Inspector: Network.loadResource XHR crash if page reloaded while request is ongoing</short_desc>
          <delta_ts>2014-03-13 18:12:18 -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>Web Inspector</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>990169</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-13 14:53:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/16281293&gt;

* STEPS TO REPRODUCe
1. Go to a page with a SourceMap that takes a while to load (e.g. a php page that sleeps for 10 seconds before serving the source map)
2. Open Inspector
3. Reload the page while the inspector is requesting the source map file
  =&gt; CRASH, mutating data structure while iterating

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   WTFCrash + 62
1   WebCore::ScriptExecutionContext::willDestroyActiveDOMObject
2   WebCore::ActiveDOMObject::~ActiveDOMObject
3   WebCore::XMLHttpRequest::~XMLHttpRequest
4   WebCore::XMLHttpRequest::~XMLHttpRequest
5   WebCore::XMLHttpRequest::dropProtection
6   WebCore::ScriptExecutionContext::stopActiveDOMObjects
7   WebCore::Document::prepareForDestruction
8   WebCore::Frame::setView
9   WebCore::Frame::createView
10  WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage
11  WebCore::FrameLoader::transitionToCommitted
12  WebCore::FrameLoader::commitProvisionalLoad
13  WebCore::DocumentLoader::commitLoad
...

The XMLHttpRequest::dropProtection triggers ActiveObject::unsetPendingActivity which may cause its destruction:

    template&lt;class T&gt; void unsetPendingActivity(T* thisObject)
    {
        ASSERT(m_pendingActivityCount &gt; 0);
        --m_pendingActivityCount;
        thisObject-&gt;deref();
    }

So this leads to the CRASH in:

    void ScriptExecutionContext::willDestroyActiveDOMObject(ActiveDOMObject* object)
    {
        ASSERT(object);
        if (m_iteratingActiveDOMObjects)
            CRASH();
        m_activeDOMObjects.remove(object);
    }

My guess is that we will need to hold a reference to the XHR&apos;s we create in InspectorResourceAgent::loadResource to prevent the object from being deallocated inside stopActiveDOMObjects, and instead be aborted / deallocated in some other way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990170</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-13 14:56:01 -0700</bug_when>
    <thetext>Turns out, a better approach may be what Blink / Chromium do:
&lt;http://src.chromium.org/viewvc/blink?view=revision&amp;revision=152712&gt;

They moved from XMLHttpRequests to a pure DocumentThreadableLoader. This has some advantages:

  - Now that the load is backed by a non-ActiveDOM-object it can load even if the page is paused
  - We don&apos;t need to worry about this crash.

So I followed that approach with my patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990176</commentid>
    <comment_count>2</comment_count>
      <attachid>226625</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-13 15:10:59 -0700</bug_when>
    <thetext>Created attachment 226625
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990193</commentid>
    <comment_count>3</comment_count>
      <attachid>226625</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-03-13 16:02:11 -0700</bug_when>
    <thetext>Comment on attachment 226625
[PATCH] Proposed Fix

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:102
&gt; +        }
&gt; +        m_decoder = TextResourceDecoder::create(ASCIILiteral(&quot;text/plain&quot;), textEncoding, useDetector);

Nit: I like newlines between things like this.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:783
&gt; +    }
&gt; +    loader-&gt;setDefersLoading(false);

Nit: Newline.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:794
&gt; -    options.crossOriginRequestPolicy = m_sendingForInspector ? AllowCrossOriginRequests : UseAccessControl;
&gt; +    options.crossOriginRequestPolicy = UseAccessControl;

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990224</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-13 18:12:18 -0700</bug_when>
    <thetext>&lt;http://trac.webkit.org/changeset/165582&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226625</attachid>
            <date>2014-03-13 15:10:59 -0700</date>
            <delta_ts>2014-03-13 18:09:40 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>threadableloader.patch</filename>
            <type>text/plain</type>
            <size>16409</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTc2ZGUwLi5mMTA3ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTQtMDMtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrLmxvYWRSZXNvdXJjZSBYSFIgY3Jhc2ggaWYg
cGFnZSByZWxvYWRlZCB3aGlsZSByZXF1ZXN0IGlzIG9uZ29pbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDIxMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlZCBmcm9tIEJsaW5rIHdpdGggY2hh
bmdlcywgKHBhdGNoIGJ5IHZzZXZpa0BjaHJvbWl1bS5vcmcpOgorICAgICAgICBodHRwOi8vc3Jj
LmNocm9taXVtLm9yZy92aWV3dmMvYmxpbms/dmlldz1yZXZpc2lvbiZyZXZpc2lvbj0xNTI3MTIK
KworICAgICAgICBVc2luZyBhbiBYTUxIdHRwUmVxdWVzdCB0byBkb3dubG9hZCByZXNvdXJjZXMg
aGFkIGEgZmV3IGlzc3Vlcy4gQmVpbmcgYW4KKyAgICAgICAgQWN0aXZlIERPTSBPYmplY3QgdGhl
IGxvYWQgY291bGQgYmUgcGF1c2VkLiBXaXRob3V0IGFuIGV4dHJhIHJldGFpbiwKKyAgICAgICAg
d2hlbiB0aGUgbG9hZCB3YXMgY2FuY2VsbGVkIChlLmcuIGEgcGFnZSByZWxvYWQpIHRoZSBYSFIg
d291bGQgZ2V0CisgICAgICAgIGRlc3RydWN0ZWQgYW5kIGNvdWxkIGNhdXNlIGEgY3Jhc2ggaWYg
dGhlIGxpc3Qgb2YgYWN0aXZlIERPTSBvYmplY3RzCisgICAgICAgIHdhcyBhY3RpdmVseSBiZWlu
ZyBpdGVyYXRlZC4KKworICAgICAgICBTd2l0Y2ggdG8gYSBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIgdG8gbWFuYWdlIHRoZSBsb2FkIG91cnNlbHZlcy4KKyAgICAgICAgVGhpcyBzdGlsbCB1c2Vz
IHRoZSBNZW1vcnkgY2FjaGUsIGJ1dCB3ZSBoYXZlIGEgbGl0dGxlIG1vcmUgY29udHJvbC4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpsb2FkUmVzb3VyY2UpOgorICAgICAg
ICBTd2l0Y2ggZnJvbSBYSFIgdG8gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorCisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZEZvckluc3BlY3Rvcik6CisgICAgICAgIFJl
bW92ZSB0aGUgbm93IHVubmVjZXNzYXJ5IFhIUiBzZW5kRm9ySW5zcGVjdG9yIHBhdGguCisKIDIw
MTQtMDMtMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBPUyBYIFZpZXcgSW5kaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDM0MTI2MjYu
LjQyNjI5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC01OCw4ICs1OSw4IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlw
dGFibGVEb2N1bWVudFBhcnNlci5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRl
ICJYTUxIdHRwUmVxdWVzdC5oIgpAQCAtNjgsOCArNjksNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rv
ci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC03OSw2
ICs3OCwxMDEgQEAgdHlwZWRlZiBJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OkxvYWRSZXNvdXJjZUNhbGxiYWMKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCituYW1lc3BhY2UgeworCitjbGFzcyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
IGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQpOworcHVibGljOgorICAg
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQoUGFzc1JlZlB0cjxMb2FkUmVzb3VyY2VD
YWxsYmFjaz4gY2FsbGJhY2spCisgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykgeyB9CisK
KyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9taW1l
VHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgYXNz
dW1lcyB0ZXh0IG9ubHkgcmVzcG9uc2VzLiBXZSBzaG91bGQgc3VwcG9ydCBub24tdGV4dCByZXNw
b25zZXMgYXMgd2VsbC4KKyAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhyZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCkpOworICAgICAgICBib29sIHVzZURldGVjdG9yID0gZmFsc2U7
CisgICAgICAgIGlmICghdGV4dEVuY29kaW5nLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgdGV4
dEVuY29kaW5nID0gVVRGOEVuY29kaW5nKCk7CisgICAgICAgICAgICB1c2VEZXRlY3RvciA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgidGV4dC9wbGFpbiIpLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVj
dG9yKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoIWRh
dGFMZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGRhdGFMZW5ndGgg
PT0gLTEpCisgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RybGVuKGRhdGEpOworCisgICAgICAg
IG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBkYXRhTGVuZ3Ro
KSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZywgZG91YmxlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fZGVjb2RlcikKKyAg
ICAgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOworCisg
ICAgICAgIG1fY2FsbGJhY2stPnNlbmRTdWNjZXNzKG1fcmVzcG9uc2VUZXh0LnRvU3RyaW5nKCks
IG1fbWltZVR5cGUpOworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX2NhbGxiYWNrLT5zZW5kRmFpbHVyZShBU0NJSUxpdGVyYWwoIkxvYWRpbmcgcmVzb3VyY2Ug
Zm9yIGluc3BlY3RvciBmYWlsZWQiKSk7CisgICAgICAgIGRpc3Bvc2UoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgbV9jYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJMb2FkaW5nIHJlc291
cmNlIGZvciBpbnNwZWN0b3IgZmFpbGVkIHJlZGlyZWN0IGNoZWNrIikpOworICAgICAgICBkaXNw
b3NlKCk7CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsTG9hZGVyQ3JlYXRpb24oKQorICAgIHsK
KyAgICAgICAgbV9jYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qg
Y3JlYXRlIGEgbG9hZGVyIikpOworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRMb2FkZXIoUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIpCisgICAgewor
ICAgICAgICBtX2xvYWRlciA9IGxvYWRlcjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBk
aXNwb3NlKCkKKyAgICB7CisgICAgICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKKyAgICAgICAgZGVs
ZXRlIHRoaXM7CisgICAgfQorCisgICAgUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxiYWNrPiBtX2Nh
bGxiYWNrOworICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZyBtX21pbWVUeXBl
OworICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZVRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZQorCitJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclBhZ2VBZ2VudCog
cGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IEluc3BlY3RvckFnZW50
QmFzZShBU0NJSUxpdGVyYWwoIk5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKKyAgICAs
IG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1f
cmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQor
ICAgICwgbV9lbmFibGVkKGZhbHNlKQorICAgICwgbV9jYWNoZURpc2FibGVkKGZhbHNlKQorICAg
ICwgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkKKyAgICAsIG1faXNSZWNhbGN1bGF0
aW5nU3R5bGUoZmFsc2UpCit7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBmcm9udGVuZENoYW5uZWwsIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcikKIHsKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsK
QEAgLTYyNyw4OCArNzIxLDYgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlY
SFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKICAgICB4aHItPnNlbmRG
b3JJbnNwZWN0b3JYSFJSZXBsYXkoeGhyUmVwbGF5RGF0YS0+Zm9ybURhdGEoKSwgSUdOT1JFX0VY
Q0VQVElPTik7CiB9CiAKLW5hbWVzcGFjZSB7Ci0KLWNsYXNzIExvYWRSZXNvdXJjZUxpc3RlbmVy
IGZpbmFsIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExvYWRSZXNvdXJjZUxpc3RlbmVyKTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
b2FkUmVzb3VyY2VMaXN0ZW5lcj4gY3JlYXRlKFBhc3NSZWZQdHI8TG9hZFJlc291cmNlQ2FsbGJh
Y2s+IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2FkUmVz
b3VyY2VMaXN0ZW5lcihjYWxsYmFjaykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfkxvYWRSZXNv
dXJjZUxpc3RlbmVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
ID09ICZvdGhlcjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGlmICghbV9jYWxsYmFjay0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCkgewotICAg
ICAgICAgICAgbV9jYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJFcnJvciBsb2Fk
aW5nIHJlc291cmNlIikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVu
dCkgewotICAgICAgICAgICAgbV9jYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJV
bmV4cGVjdGVkIGV2ZW50IHR5cGUiKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBYTUxIdHRwUmVxdWVzdCogeGhyID0gc3RhdGljX2Nhc3Q8WE1MSHR0cFJlcXVl
c3QqPihldmVudC0+dGFyZ2V0KCkpOwotICAgICAgICBpZiAoeGhyLT5yZWFkeVN0YXRlKCkgIT0g
WE1MSHR0cFJlcXVlc3Q6OkRPTkUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9j
YWxsYmFjay0+c2VuZFN1Y2Nlc3MoeGhyLT5yZXNwb25zZVRleHRJZ25vcmluZ1Jlc3BvbnNlVHlw
ZSgpLCB4aHItPnJlc3BvbnNlTUlNRVR5cGUoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIExv
YWRSZXNvdXJjZUxpc3RlbmVyKFBhc3NSZWZQdHI8TG9hZFJlc291cmNlQ2FsbGJhY2s+IGNhbGxi
YWNrKQotICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0
ZW5lclR5cGUpCi0gICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykgeyB9Ci0KLSAgICBSZWZQ
dHI8TG9hZFJlc291cmNlQ2FsbGJhY2s+IG1fY2FsbGJhY2s7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZQotCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmxvYWRSZXNvdXJjZShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIFBhc3NSZWZQdHI8TG9hZFJlc291cmNlQ2FsbGJhY2s+IGNhbGxiYWNrKQotewotICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5hc3NlcnRGcmFtZShlcnJvclN0cmluZywgZnJh
bWVJZCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkgewotICAg
ICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIERvY3VtZW50IGluc3RhbmNlIGZv
ciB0aGUgc3BlY2lmaWVkIGZyYW1lIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoKmRvY3Vt
ZW50KTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHhoci0+b3BlbihBU0NJSUxp
dGVyYWwoIkdFVCIpLCBkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsU3RyaW5nKSwgZWMpOwotICAg
IGlmIChlYykgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVycm9yIGNy
ZWF0aW5nIHJlcXVlc3QiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxM
b2FkUmVzb3VyY2VMaXN0ZW5lcj4gbG9hZFJlc291cmNlTGlzdGVuZXIgPSBMb2FkUmVzb3VyY2VM
aXN0ZW5lcjo6Y3JlYXRlKGNhbGxiYWNrKTsKLSAgICB4aHItPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmFib3J0RXZlbnQsIGxvYWRSZXNvdXJjZUxpc3RlbmVyLCBmYWxzZSk7Ci0gICAg
eGhyLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBsb2FkUmVzb3Vy
Y2VMaXN0ZW5lciwgZmFsc2UpOwotICAgIHhoci0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50LCBsb2FkUmVzb3VyY2VMaXN0ZW5lciwgZmFsc2UpOwot
ICAgIHhoci0+c2VuZEZvckluc3BlY3RvcihlYyk7Ci0KLSAgICBpZiAoZWMpIHsKLSAgICAgICAg
KmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJFcnJvciBzZW5kaW5nIHJlcXVlc3QiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpj
YW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKIHsKICAgICAq
cmVzdWx0ID0gbV9jbGllbnQtPmNhbkNsZWFyQnJvd3NlckNhY2hlKCk7CkBAIC03MzYsNiArNzQ4
LDQ3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0Q2FjaGVEaXNhYmxlZChFcnJv
clN0cmluZyosIGJvb2wgY2FjaGVEaXNhYmxlZCkKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+ZXZp
Y3RSZXNvdXJjZXMoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpsb2FkUmVz
b3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBQYXNzUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxiYWNrPiBw
cnBDYWxsYmFjaykKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+YXNzZXJ0RnJh
bWUoZXJyb3JTdHJpbmcsIGZyYW1lSWQpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
bjsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBE
b2N1bWVudCBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZSIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxiYWNrPiBjYWxsYmFjayA9
IHBycENhbGxiYWNrOworCisgICAgVVJMIHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmxT
dHJpbmcpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CisgICAgcmVxdWVzdC5z
ZXRIVFRQTWV0aG9kKEFTQ0lJTGl0ZXJhbCgiR0VUIikpOworICAgIHJlcXVlc3Quc2V0SGlkZGVu
RnJvbUluc3BlY3Rvcih0cnVlKTsKKworICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlv
bnM7CisgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7IC8vIFNv
IHdlIHJlbW92ZSB0aGlzIGZyb20gbV9oaWRkZW5SZXF1ZXN0SWRlbnRpZmllcnMgb24gY29tcGxl
dGlvbi4KKyAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBBbGxvd1N0b3JlZENyZWRlbnRp
YWxzOworICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gQWxsb3dDcm9zc09y
aWdpblJlcXVlc3RzOworCisgICAgLy8gSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBk
ZWxldGVzIGl0c2VsZiB3aGVuIHRoZSBsb2FkIGNvbXBsZXRlcy4KKyAgICBJbnNwZWN0b3JUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50KiBpbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50ID0gbmV3
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQoY2FsbGJhY2spOworCisgICAgUmVmUHRy
PERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoKmRvY3VtZW50LCAqaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCwg
cmVxdWVzdCwgb3B0aW9ucyk7CisgICAgaWYgKCFsb2FkZXIpIHsKKyAgICAgICAgaW5zcGVjdG9y
VGhyZWFkYWJsZUxvYWRlckNsaWVudC0+ZGlkRmFpbExvYWRlckNyZWF0aW9uKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbG9hZGVyLT5zZXREZWZlcnNMb2FkaW5nKGZhbHNlKTsKKwor
ICAgIC8vIElmIHRoZSBsb2FkIGFscmVhZHkgY29tcGxldGVkLCBpbnNwZWN0b3JUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50IHdpbGwgaGF2ZSBiZWVuIGRlbGV0ZWQgYW5kIHdlIHdpbGwgaGF2ZSBhbHJl
YWR5IGNhbGxlZCB0aGUgY2FsbGJhY2suCisgICAgaWYgKCFjYWxsYmFjay0+aXNBY3RpdmUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudC0+
c2V0TG9hZGVyKGxvYWRlci5yZWxlYXNlKCkpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAg
IGlmIChtX2NhY2hlRGlzYWJsZWQpCkBAIC03NDQsMTggKzc5Nyw2IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5jbGVhcihtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVy
KSk7CiB9CiAKLUluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQotICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQot
ICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQotICAgICwgbV9jbGllbnQoY2xpZW50KQotICAg
ICwgbV9yZXNvdXJjZXNEYXRhKHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+
KCkpCi0gICAgLCBtX2VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2NhY2hlRGlzYWJsZWQoZmFsc2Up
Ci0gICAgLCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5KGZhbHNlKQotICAgICwgbV9pc1JlY2Fs
Y3VsYXRpbmdTdHlsZShmYWxzZSkKLXsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGU0M2Y3ZTkuLjVmNjU2ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApA
QCAtNTcsNyArNTcsNiBAQCBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKLWNsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CkBAIC02Niw2ICs2NSw3IEBAIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OworY2xhc3MgVVJMOwogY2xhc3MgWEhSUmVwbGF5RGF0
YTsKIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCkBAIC0xMjEsMjMgKzEyMSwyMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcih1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKLSAgICAvLyBjYWxsZWQgZnJvbSBJ
bnRlcm5hbHMgZm9yIGxheW91dCB0ZXN0IHB1cnBvc2VzLgorICAgIC8vIENhbGxlZCBmcm9tIElu
dGVybmFscyBmb3IgbGF5b3V0IHRlc3QgcHVycG9zZXMuCiAgICAgdm9pZCBzZXRSZXNvdXJjZXNE
YXRhU2l6ZUxpbWl0c0Zyb21JbnRlcm5hbHMoaW50IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6
ZSwgaW50IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKIAotICAgIC8vIENhbGxl
ZCBmcm9tIGZyb250ZW5kCisgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQuCiAgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dHJh
SFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJv
b2wqIGJhc2U2NEVuY29kZWQpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIHJlcGxheVhI
UihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBvdmVycmlkZTsKLQogICAg
IHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ29va2llcyhFcnJv
clN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2Vy
Q29va2llcyhFcnJvclN0cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWNo
ZURpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBjYWNoZURpc2FibGVkKSBvdmVycmlkZTsKLQog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxi
YWNrPikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCBkZjEwNjEzLi4zNTFmMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTE4NCw3ICsxODQsNiBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fdXBsb2FkRXZlbnRz
QWxsb3dlZCh0cnVlKQogICAgICwgbV91cGxvYWRDb21wbGV0ZShmYWxzZSkKICAgICAsIG1fc2Ft
ZU9yaWdpblJlcXVlc3QodHJ1ZSkKLSAgICAsIG1fc2VuZGluZ0Zvckluc3BlY3RvcihmYWxzZSkK
ICAgICAsIG1fcmVjZWl2ZWRMZW5ndGgoMCkKICAgICAsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKDAp
CiAgICAgLCBtX2xhc3RTZW5kQ29sdW1uTnVtYmVyKDApCkBAIC03MzgsMTIgKzczNyw2IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRCeXRlc0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgRXhjZXB0aW9uQ29kCiAgICAgY3JlYXRlUmVxdWVzdChlYyk7CiB9CiAKLXZvaWQg
WE1MSHR0cFJlcXVlc3Q6OnNlbmRGb3JJbnNwZWN0b3IoRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0g
ICAgbV9zZW5kaW5nRm9ySW5zcGVjdG9yID0gdHJ1ZTsKLSAgICBzZW5kKGVjKTsKLX0KLQogdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEZvckluc3BlY3RvclhIUlJlcGxheShQYXNzUmVmUHRyPEZv
cm1EYXRhPiBmb3JtRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgbV9yZXF1ZXN0RW50
aXR5Qm9keSA9IGZvcm1EYXRhID8gZm9ybURhdGEtPmRlZXBDb3B5KCkgOiAwOwpAQCAtNzgxLDkg
Kzc3NCw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybCk7CiAgICAgcmVxdWVz
dC5zZXRIVFRQTWV0aG9kKG1fbWV0aG9kKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHJl
cXVlc3Quc2V0SGlkZGVuRnJvbUluc3BlY3RvcihtX3NlbmRpbmdGb3JJbnNwZWN0b3IpOwotI2Vu
ZGlmCiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV9tZXRob2QsIG1fdXJsLCBtX2FzeW5jLCBtX3JlcXVl
c3RFbnRpdHlCb2R5ID8gbV9yZXF1ZXN0RW50aXR5Qm9keS0+ZGVlcENvcHkoKSA6IDAsIG1fcmVx
dWVzdEhlYWRlcnMsIG1faW5jbHVkZUNyZWRlbnRpYWxzKTsKIApAQCAtODAxLDcgKzc5MSw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBEb05vdFNuaWZmQ29udGVudDsKICAgICBvcHRpb25z
LnByZWZsaWdodFBvbGljeSA9IHVwbG9hZEV2ZW50cyA/IEZvcmNlUHJlZmxpZ2h0IDogQ29uc2lk
ZXJQcmVmbGlnaHQ7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gKG1fc2FtZU9yaWdp
blJlcXVlc3QgfHwgbV9pbmNsdWRlQ3JlZGVudGlhbHMpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKLSAgICBvcHRpb25zLmNyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeSA9IG1fc2VuZGluZ0Zvckluc3BlY3RvciA/IEFsbG93Q3Jvc3NPcmlnaW5S
ZXF1ZXN0cyA6IFVzZUFjY2Vzc0NvbnRyb2w7CisgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgPSBVc2VBY2Nlc3NDb250cm9sOwogICAgIG9wdGlvbnMuc2VjdXJpdHlPcmlnaW4g
PSBzZWN1cml0eU9yaWdpbigpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCiAgICAgb3B0
aW9ucy5pbml0aWF0b3IgPSBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkueG1saHR0
cHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDM2MmZhMjQuLjRm
NWE1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMjIsNyArMTIyLDYg
QEAgcHVibGljOgogICAgIGJvb2wgcmVzcG9uc2VDYWNoZUlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkOyB9CiAgICAgdm9pZCBkaWRDYWNoZVJlc3BvbnNlSlNP
TigpOwogCi0gICAgdm9pZCBzZW5kRm9ySW5zcGVjdG9yKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHNlbmRGb3JJbnNwZWN0b3JYSFJSZXBsYXkoUGFzc1JlZlB0cjxGb3JtRGF0YT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogICAgIC8vIEV4cG9zZSBIVFRQIHZhbGlkYXRpb24gbWV0aG9kcyBmb3Ig
b3RoZXIgdW50cnVzdGVkIHJlcXVlc3RzLgpAQCAtMjQ2LDcgKzI0NSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3VwbG9hZENvbXBsZXRlOwogCiAgICAgYm9vbCBtX3NhbWVPcmlnaW5SZXF1ZXN0
OwotICAgIGJvb2wgbV9zZW5kaW5nRm9ySW5zcGVjdG9yOwogCiAgICAgLy8gVXNlZCBmb3Igb25w
cm9ncmVzcyB0cmFja2luZwogICAgIGxvbmcgbG9uZyBtX3JlY2VpdmVkTGVuZ3RoOwo=
</data>
<flag name="review"
          id="250868"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>