<?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>182188</bug_id>
          
          <creation_ts>2018-01-26 14:48:41 -0800</creation_ts>
          <short_desc>REGRESSION(r225868): Release assert when removing an SVGUseElement from Document::m_svgUseElements</short_desc>
          <delta_ts>2018-05-02 14:42:56 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1393683</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-01-26 14:48:41 -0800</bug_when>
    <thetext>The SVGUseElement is already removed from the set Document::m_svgUseElements and we are trying to remove it again. Here is the call stack:

0   WebCore                       	0x000000018e9a8720 WebCore::Document::removeSVGUseElement(WebCore::SVGUseElement&amp;) + 44 (Document.cpp:5287)
1   WebCore                       	0x000000018e9a8710 WebCore::Document::removeSVGUseElement(WebCore::SVGUseElement&amp;) + 28 (Document.cpp:5286)
2   WebCore                       	0x000000018f1936a4 WebCore::SVGUseElement::updateShadowTree() + 124 (SVGUseElement.cpp:241)
3   WebCore                       	0x000000018e99854c WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) + 192 (Document.cpp:1799)
4   WebCore                       	0x000000018ddd5554 WebCore::Document::updateStyleIfNeeded() + 252 (Document.cpp:1965)
5   WebCore                       	0x000000018ddd10a0 WebCore::Document::finishedParsing() + 260 (Document.cpp:5390)
6   WebCore                       	0x000000018ddcfc40 WebCore::HTMLDocumentParser::prepareToStopParsing() + 172 (HTMLDocumentParser.cpp:406)
7   WebCore                       	0x000000018ddcfb54 WebCore::HTMLDocumentParser::finish() + 224 (HTMLDocumentParser.cpp:427)
8   WebCore                       	0x000000018ddcf370 WebCore::DocumentWriter::end() + 92 (DocumentWriter.cpp:276)
9   WebCore                       	0x000000018ec7aa58 WebCore::DocumentLoader::finishedLoading() + 472 (DocumentLoader.cpp:429)
10  WebCore                       	0x000000018de0111c WebCore::CachedResource::checkNotify() + 324 (CachedResource.cpp:348)
11  WebCore                       	0x000000018ecdd3bc WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*) + 364 (CachedResource.cpp:364)
12  WebCore                       	0x000000018ecb9a40 WebCore::SubresourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&amp;) + 520 (SubresourceLoader.cpp:589)
13  WebKit                        	0x00000001957bb53c WebKit::WebResourceLoader::didFinishResourceLoad(WebCore::NetworkLoadMetrics const&amp;) + 220 (WebResourceLoader.cpp:150)
14  WebKit                        	0x00000001957bc2b0 void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(WebCore::NetworkLoadMetrics const&amp;)) + 92 (HandleMessage.h:40)
15  WebKit                        	0x00000001955c85dc WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 416 (NetworkProcessConnection.cpp:69)
16  WebKit                        	0x000000019553dc38 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 164 (Connection.cpp:901)
17  WebKit                        	0x0000000195540628 IPC::Connection::dispatchOneMessage() + 232 (Connection.cpp:959)
18  JavaScriptCore                	0x000000018d27290c WTF::RunLoop::performWork() + 348 (Function.h:56)
19  JavaScriptCore                	0x000000018d272b7c WTF::RunLoop::performWork(void*) + 36 (RunLoopCF.cpp:38)
20  CoreFoundation                	0x00000001853e09f4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1982)
21  CoreFoundation                	0x00000001853e021c __CFRunLoopDoSources0 + 276 (CFRunLoop.c:2017)
22  CoreFoundation                	0x00000001853ddd8c __CFRunLoopRun + 1204 (CFRunLoop.c:2920)
23  CoreFoundation                	0x00000001852fe498 CFRunLoopRunSpecific + 552 (CFRunLoop.c:3245)
24  Foundation                    	0x0000000185d740e4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 304 (NSRunLoop.m:367)
25  Foundation                    	0x0000000185dc5d4c -[NSRunLoop(NSRunLoop) run] + 88 (NSRunLoop.m:389)
26  libxpc.dylib                  	0x00000001850aabdc _xpc_objc_main + 516 (main.m:167)
27  libxpc.dylib                  	0x00000001850accb0 xpc_main + 180 (init.c:1476)
28  com.apple.WebKit.WebContent   	0x00000001008db5ac main + 380 (XPCServiceMain.mm:148)
29  libdyld.dylib                 	0x0000000184d9dfc0 start + 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393685</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-01-26 14:49:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/36689240&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393808</commentid>
    <comment_count>2</comment_count>
      <attachid>332456</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-01-26 21:41:33 -0800</bug_when>
    <thetext>Created attachment 332456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393813</commentid>
    <comment_count>3</comment_count>
      <attachid>332456</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-26 22:21:25 -0800</bug_when>
    <thetext>Comment on attachment 332456
Patch

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

r- because I don&apos;t think this approach is desirable.

&gt; Source/WebCore/ChangeLog:30
&gt; +        An assertion will fire if Document::resolveStyle() calls updateShadowTree()
&gt; +        for an SVGUseElement and as a side effect it causes removedFromAncestor()
&gt; +        to be called for an element which is also exist in Document::m_svgUseElements
&gt; +        and has not been processed yet.

Sounds like we should be able to make a test case for this.

&gt; Source/WebCore/ChangeLog:33
&gt; +        The fix is to replace SVGUseElement::m_shadowTreeNeedsUpdate by a function
&gt; +        which checks whether the element is in Document::m_svgUseElements. By doing

This will make the removal of a SVG element a lot more expensive. I don&apos;t think we should do that.

&gt; Source/WebCore/ChangeLog:65
&gt; +        (WebCore::SVGUseElement::updateShadowTree): No need to check isConnected().
&gt; +        here. This function is called only from Document::resolveStyle(). Make the
&gt; +        call to removeShadowTreeNeedsUpdate() happens the last thing to ensure
&gt; +        no invalidate-update loops will happen.

What is a no invalidate-update loop?

&gt; Source/WebCore/dom/Document.cpp:1801
&gt; +            if (m_invalidatedSVGUseElements.contains(element.get()))
&gt; +                element-&gt;updateShadowTree();

A better fix would be for this code to be checking isConnected() &amp; shadowTreeNeedsUpdate() on each element before calling updateShadowTree().

&gt; Source/WebCore/dom/Document.cpp:5288
&gt; -    RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(result.isNewEntry);
&gt; +    auto result = m_invalidatedSVGUseElements.add(&amp;element);
&gt; +    ASSERT_UNUSED(result, result.isNewEntry);

Replacing a release assert by a debug assert would only pamper over a real issue.

&gt; Source/WebCore/dom/Document.cpp:5294
&gt; +    bool didRemove = m_invalidatedSVGUseElements.remove(&amp;element);
&gt; +    ASSERT_UNUSED(didRemove, didRemove);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394861</commentid>
    <comment_count>4</comment_count>
      <attachid>332733</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-01-30 18:04:32 -0800</bug_when>
    <thetext>Created attachment 332733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394864</commentid>
    <comment_count>5</comment_count>
      <attachid>332456</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-01-30 18:19:10 -0800</bug_when>
    <thetext>Comment on attachment 332456
Patch

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

What exactly is not desirable in this patch? Do you consider using HashSet&lt;&gt;::contains() to be a lot more expensive than accessing a data member?

&gt;&gt; Source/WebCore/ChangeLog:30
&gt;&gt; +        and has not been processed yet.
&gt; 
&gt; Sounds like we should be able to make a test case for this.

I could not find a test case for this crash.

&gt;&gt; Source/WebCore/ChangeLog:33
&gt;&gt; +        which checks whether the element is in Document::m_svgUseElements. By doing
&gt; 
&gt; This will make the removal of a SVG element a lot more expensive. I don&apos;t think we should do that.

Checking a HashSet should be O(1). and SVGDocumentExtensions has many HashMaps for animations, resource loading and SVGUseElement dependency graph.

&gt;&gt; Source/WebCore/ChangeLog:65
&gt;&gt; +        no invalidate-update loops will happen.
&gt; 
&gt; What is a no invalidate-update loop?

I meant if updating an element causes invalidating itself, this will cause an infinite loop of invalidate and update.

&gt;&gt; Source/WebCore/dom/Document.cpp:1801
&gt;&gt; +                element-&gt;updateShadowTree();
&gt; 
&gt; A better fix would be for this code to be checking isConnected() &amp; shadowTreeNeedsUpdate() on each element before calling updateShadowTree().

I added if (!shadowTreeNeedsUpdate()) at the beginning of SVGUseElement::updateShadowTree() to be the opposite of SVGUseElement::invalidateShadowTree() which starts by returning if (!isConnected() || shadowTreeNeedsUpdate()).

&gt;&gt; Source/WebCore/dom/Document.cpp:5288
&gt;&gt; +    ASSERT_UNUSED(result, result.isNewEntry);
&gt; 
&gt; Replacing a release assert by a debug assert would only pamper over a real issue.

I replaced this debug assertions with release assertions as they we were before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395099</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-31 11:40:49 -0800</bug_when>
    <thetext>This is not a security bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395398</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-01 01:55:27 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #5)
&gt; Comment on attachment 332456 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=332456&amp;action=review
&gt; 
&gt; What exactly is not desirable in this patch? Do you consider using
&gt; HashSet&lt;&gt;::contains() to be a lot more expensive than accessing a data
&gt; member?

Yes. It&apos;s considerably more expensive. Also, rewriting the way hash map works completely isn&apos;t a way to address this crash we don&apos;t even have a test case for.

We really need a more thorough analysis of what might be happening instead of rewriting the entire thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400158</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-16 22:42:01 -0800</bug_when>
    <thetext>This bug doesn&apos;t not address the root cause of the release assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419584</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-01 23:59:26 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419585</commentid>
    <comment_count>10</comment_count>
      <attachid>339285</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-01 23:59:27 -0700</bug_when>
    <thetext>Created attachment 339285
Removes the release assert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419586</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-02 00:01:02 -0700</bug_when>
    <thetext>Attachment 339285 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:23:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: use-after-free  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419587</commentid>
    <comment_count>12</comment_count>
      <attachid>339286</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-02 00:01:13 -0700</bug_when>
    <thetext>Created attachment 339286
Fixed typos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419588</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-02 00:04:13 -0700</bug_when>
    <thetext>Attachment 339286 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:22:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: use-after-free  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1419870</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-05-02 14:42:56 -0700</bug_when>
    <thetext>Committed r231267: &lt;https://trac.webkit.org/changeset/231267&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332456</attachid>
            <date>2018-01-26 21:41:33 -0800</date>
            <delta_ts>2018-01-30 18:04:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182188-20180126214132.patch</filename>
            <type>text/plain</type>
            <size>13046</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzcxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDE4LTAxLTI2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMjI1ODY4KTogUmVsZWFzZSBhc3NlcnQgd2hlbiByZW1vdmluZyBhbiBTVkdVc2VFbGVtZW50
IGZyb20gRG9jdW1lbnQ6Om1fc3ZnVXNlRWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyMjU4NjgsIGEgbmV3IG1lbWJlciBEb2N1bWVu
dDo6bV9zdmdVc2VFbGVtZW50cyB3YXMgYWRkZWQgdG8ga2VlcCB0cmFjaworICAgICAgICBvZiB0
aGUgaW52YWxpZGF0ZWQgU1ZHVXNlRWxlbWVudHMuIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoKSBs
b29wcyB0aHJvdWdoCisgICAgICAgIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhpcyBIYXNoU2V0IGFu
ZCBjYWxscyB1cGRhdGVTaGFkb3dUcmVlKCkgZm9yIGVhY2guCisKKyAgICAgICAgVHdvIHByb2Js
ZW1zIHdpdGggdGhpcyBwYXRjaDoKKyAgICAgICAgLS0gVGhlcmUgaXMgYSBjb21tZW50IGluIERv
Y3VtZW50OjpyZXNvbHZlU3R5bGUoKSBzYXlpbmcgdGhhdCB3ZSBuZWVkIHRvCisgICAgICAgIG1h
a2UgYSBjb3B5IG9mIG1fc3ZnVXNlRWxlbWVudHMgYmVjYXVzZSBuZXcgaXRlbXMgbWlnaHQgYmUg
YWRkZWQgb3IgZXhpc3RpbmcKKyAgICAgICAgZWxlbWVudHMgbWlnaHQgZ2V0IGRlbGV0ZWQuIEJ1
dCB3ZSBjYWxsIHVwZGF0ZVNoYWRvd1RyZWUoKSBmb3IgYWxsIHRoZQorICAgICAgICBlbGVtZW50
cyBldmVuIGlmIG9uZSBvZiB0aGVtIGdldHMgZGVsZXRlZCB3aGlsZSBjYWxsaW5nIHVwZGF0ZVNo
YWRvd1RyZWUoKQorICAgICAgICBvZiBhIHByZXZpb3VzIG9uZS4KKyAgICAgICAgLS0gVGhlIGxp
ZmUgY3ljbGUgb2YgdGhlIGVsZW1lbnRzIGluc2lkZSBtX3N2Z1VzZUVsZW1lbnRzIGhhcyB0byBj
b25mb3JtCisgICAgICAgIHdpdGggdGhlIHN0YXRlIG9mIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRl
IGFuZCBpc0Nvbm5lY3RlZCgpIG9mIHRoZSBlbGVtZW50LgorICAgICAgICBBbmQgdGhpcyBjYW4n
dCBiZSBndWFyYW50ZWVkIGJ5IHRoZSBzdGF0ZSBvZiB0aGlzIGNvZGUuCisKKyAgICAgICAgSSB0
aGluayB0aGUgcmVhbCBidWcgaXMgaW4gU1ZHVXNlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rv
cigpIHdoZXJlIAorICAgICAgICB3ZSBjYWxsIERvY3VtZW50OjpyZW1vdmVTVkdVc2VFbGVtZW50
KCkgZm9yIHRoZSBlbGVtZW50IHdpdGhvdXQgY2hlY2tpbmcKKyAgICAgICAgaXNDb25uZWN0ZWQo
KS4gQWxzbyB3ZSBkbyBub3QgcmVzZXQgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgdG8gZmFsc2Ug
YWZ0ZXIKKyAgICAgICAgY2FsbGluZyBEb2N1bWVudDo6cmVtb3ZlU1ZHVXNlRWxlbWVudCgpLgor
CisgICAgICAgIEFuIGFzc2VydGlvbiB3aWxsIGZpcmUgaWYgRG9jdW1lbnQ6OnJlc29sdmVTdHls
ZSgpIGNhbGxzIHVwZGF0ZVNoYWRvd1RyZWUoKQorICAgICAgICBmb3IgYW4gU1ZHVXNlRWxlbWVu
dCBhbmQgYXMgYSBzaWRlIGVmZmVjdCBpdCBjYXVzZXMgcmVtb3ZlZEZyb21BbmNlc3RvcigpCisg
ICAgICAgIHRvIGJlIGNhbGxlZCBmb3IgYW4gZWxlbWVudCB3aGljaCBpcyBhbHNvIGV4aXN0IGlu
IERvY3VtZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAgIGFuZCBoYXMgbm90IGJlZW4gcHJv
Y2Vzc2VkIHlldC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIHJlcGxhY2UgU1ZHVXNlRWxlbWVu
dDo6bV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgYnkgYSBmdW5jdGlvbgorICAgICAgICB3aGljaCBj
aGVja3Mgd2hldGhlciB0aGUgZWxlbWVudCBpcyBpbiBEb2N1bWVudDo6bV9zdmdVc2VFbGVtZW50
cy4gQnkgZG9pbmcKKyAgICAgICAgdGhhdCB3ZSBtYWtlIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBl
bGVtZW50cyBpbiBEb2N1bWVudDo6bV9zdmdVc2VFbGVtZW50cworICAgICAgICBjb250cm9sbGVk
IGJ5IGl0c2VsZi4KKyAgICAgICAgLS0gYWRkaW5nIGFuIGVsZW1lbnQgd2lsbCBoYXBwZW4gaW4g
aW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KKyAgICAgICAgLS0gcmVtb3ZpbmcgYW4gZWxlbWVudCB3
aWxsIGhhcHBlbiBpbiB1cGRhdGVTaGFkb3dUcmVlKCkgYW5kCisgICAgICAgIHJlbW92ZWRGcm9t
QW5jZXN0b3IoKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KTogQ2hhbmdlIHRoZSBtZW1iZXIncyBuYW1lIHRvIGNs
YXJpZnkgdGhlIAorICAgICAgICBwdXJwb3NlIG9mIGFkZGluZyBpdCB0byB0aGUgZG9jdW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKTogRG9uJ3QgY2FsbCBh
biBTVkdVc2VFbGVtZW50IGZyb20gdGhlCisgICAgICAgIGNvcHkgdmVjdG9yIHVubGVzcyBpdCBk
b2VzIGV4aXN0IGluIHRoZSBtX2ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudHMuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWRkSW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50KTogQ2hhbmdlIHRo
ZSBtZXRob2QncyBuYW1lCisgICAgICAgIGFuZCBjaGFuZ2UgdGhlIHJlbGVhc2UgYXNzZXJ0IHRv
IGEgbm9ybWFsIGFzc2VydCBzaW5jZSB0aGlzIHBhdGNoIGd1YXJhbnRlZXMKKyAgICAgICAgdGhp
cyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGV4
aXN0IGluCisgICAgICAgIG1faW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50cy4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpyZW1vdmVJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRTVkdVc2VFbGVtZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVTVkdVc2VFbGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojppc0ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudCBjb25zdCk6IEFkZCBhIGZ1bmN0aW9uIHRvCisg
ICAgICAgIGNoZWNrIHdoZXRoZXIgYW4gZWxlbWVudCBleGlzdHMgaW4gbV9pbnZhbGlkYXRlZFNW
R1VzZUVsZW1lbnRzIG9yIG5vdC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdmdVc2VF
bGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3Ip
OiBObyBuZWVkIGZvciBhZGRpbmcgdGhlIAorICAgICAgICBlbGVtZW50IHRvIHRoZSBkb2N1bWVu
dCBpbiB0aGlzIGZ1bmN0aW9uLiBJdCBpcyBnb2luZyB0byBiZSBhZGRlZCB0bworICAgICAgICBp
bnZhbGlkYXRlU2hhZG93VHJlZSgpIGlmIHdlIG5lZWQgdG8uCisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKTogQ2hhbmdlIGEgY29tbWVudCBhbmQg
Y2FsbCAKKyAgICAgICAgdGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpTVkdV
c2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKTogTm8gbmVlZCB0byBjaGVjayBpc0Nvbm5lY3Rl
ZCgpLgorICAgICAgICBoZXJlLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gRG9j
dW1lbnQ6OnJlc29sdmVTdHlsZSgpLiBNYWtlIHRoZQorICAgICAgICBjYWxsIHRvIHJlbW92ZVNo
YWRvd1RyZWVOZWVkc1VwZGF0ZSgpIGhhcHBlbnMgdGhlIGxhc3QgdGhpbmcgdG8gZW5zdXJlCisg
ICAgICAgIG5vIGludmFsaWRhdGUtdXBkYXRlIGxvb3BzIHdpbGwgaGFwcGVuLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUpOiBJZiB0aGUgZWxl
bWVudCBpcyBub3QKKyAgICAgICAgY29ubmVjdGVkIHRvIGEgZG9jdW1lbnQsIGp1c3QgcmV0dXJu
LgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisKIDIwMTgtMDEtMjYgIFJpY2t5IE1v
bmRlbGxvICA8cm1vbmRlbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGhlIHN0YW5kYXJk
IC13ZWJraXQtYXV0b2ZpbGwgY29sb3Igb24gaU9TCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDIyNzY4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzNCw3ICs2MzQsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkK
IAogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9saXN0c0lu
dmFsaWRhdGVkQXREb2N1bWVudC5pc0VtcHR5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04obV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudC5p
c0VtcHR5KCkpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
bV9zdmdVc2VFbGVtZW50cy5pc0VtcHR5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04obV9pbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnRzLmlzRW1wdHkoKSk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGNvdW50IDogbV9ub2RlTGlzdEFuZENvbGxlY3Rpb25Db3Vu
dHMpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY291bnQsICFjb3VudCk7CkBAIC0xNzkzLDExICsx
NzkzLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGUKIAogICAg
IC8vIEZJWE1FOiBEbyB0aGlzIHVwZGF0ZSBwZXIgdHJlZSBzY29wZS4KICAgICB7Ci0gICAgICAg
IGF1dG8gZWxlbWVudHMgPSBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8U1ZHVXNlRWxlbWVudD4+KG1f
c3ZnVXNlRWxlbWVudHMpOwotICAgICAgICAvLyBXZSBjYW4ndCBjbGVhciBtX3N2Z1VzZUVsZW1l
bnRzIGhlcmUgYmVjYXVzZSB1cGRhdGVTaGFkb3dUcmVlIG1heSBlbmQgdXAgZXhlY3V0aW5nIGFy
Yml0cmFyeSBzY3JpcHRzCisgICAgICAgIGF1dG8gZWxlbWVudHMgPSBjb3B5VG9WZWN0b3JPZjxS
ZWZQdHI8U1ZHVXNlRWxlbWVudD4+KG1faW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50cyk7CisgICAg
ICAgIC8vIFdlIGNhbid0IGNsZWFyIG1faW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50cyBoZXJlIGJl
Y2F1c2UgdXBkYXRlU2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4ZWN1dGluZyBhcmJpdHJhcnkgc2Ny
aXB0cwogICAgICAgICAvLyB3aGljaCBtYXkgaW5zZXJ0IG5ldyBTVkcgdXNlIGVsZW1lbnRzIG9y
IHJlbW92ZSBleGlzdGluZyBvbmVzIGluc2lkZSBzeW5jIElQQyB2aWEgSW1hZ2VMb2FkZXI6OnVw
ZGF0ZUZyb21FbGVtZW50LgotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykK
LSAgICAgICAgICAgIGVsZW1lbnQtPnVwZGF0ZVNoYWRvd1RyZWUoKTsKKyAgICAgICAgZm9yIChh
dXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKKyAgICAgICAgICAgIGlmIChtX2ludmFsaWRhdGVk
U1ZHVXNlRWxlbWVudHMuY29udGFpbnMoZWxlbWVudC5nZXQoKSkpCisgICAgICAgICAgICAgICAg
ZWxlbWVudC0+dXBkYXRlU2hhZG93VHJlZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCB1cGRhdGUgc3R5bGUgb24gb3VyIGFuY2VzdG9yIGNoYWluIGJlZm9y
ZSBwcm9jZWVkaW5nIChlc3BlY2lhbGx5IGZvciBzZWFtbGVzcyksCkBAIC01MjgwLDE2ICs1Mjgy
LDE2IEBAIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyYgRG9jdW1lbnQ6OmFjY2Vzc1MKICAgICByZXR1
cm4gKm1fc3ZnRXh0ZW5zaW9uczsKIH0KIAotdm9pZCBEb2N1bWVudDo6YWRkU1ZHVXNlRWxlbWVu
dChTVkdVc2VFbGVtZW50JiBlbGVtZW50KQordm9pZCBEb2N1bWVudDo6YWRkSW52YWxpZGF0ZWRT
VkdVc2VFbGVtZW50KFNWR1VzZUVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBtX3N2Z1VzZUVsZW1lbnRzLmFkZCgmZWxlbWVudCk7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgYXV0byByZXN1
bHQgPSBtX2ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudHMuYWRkKCZlbGVtZW50KTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIERvY3VtZW50
OjpyZW1vdmVTVkdVc2VFbGVtZW50KFNWR1VzZUVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIERvY3Vt
ZW50OjpyZW1vdmVJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnQoU1ZHVXNlRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICBib29sIGRpZFJlbW92ZSA9IG1fc3ZnVXNlRWxlbWVudHMucmVtb3ZlKCZlbGVt
ZW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGRpZFJl
bW92ZSk7CisgICAgYm9vbCBkaWRSZW1vdmUgPSBtX2ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudHMu
cmVtb3ZlKCZlbGVtZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGRpZFJlbW92ZSwgZGlkUmVtb3Zl
KTsKIH0KIAogYm9vbCBEb2N1bWVudDo6aGFzU1ZHUm9vdE5vZGUoKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIyNzY4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgxLDkgKzEwODEsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBzdmdFeHRlbnNp
b25zKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBhY2Nlc3NT
VkdFeHRlbnNpb25zKCk7CiAKLSAgICB2b2lkIGFkZFNWR1VzZUVsZW1lbnQoU1ZHVXNlRWxlbWVu
dCYpOwotICAgIHZvaWQgcmVtb3ZlU1ZHVXNlRWxlbWVudChTVkdVc2VFbGVtZW50Jik7Ci0gICAg
SGFzaFNldDxTVkdVc2VFbGVtZW50Kj4gY29uc3Qgc3ZnVXNlRWxlbWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX3N2Z1VzZUVsZW1lbnRzOyB9CisgICAgdm9pZCBhZGRJbnZhbGlkYXRlZFNWR1VzZUVs
ZW1lbnQoU1ZHVXNlRWxlbWVudCYpOworICAgIHZvaWQgcmVtb3ZlSW52YWxpZGF0ZWRTVkdVc2VF
bGVtZW50KFNWR1VzZUVsZW1lbnQmKTsKKyAgICBib29sIGlzSW52YWxpZGF0ZWRTVkdVc2VFbGVt
ZW50KFNWR1VzZUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxpZGF0ZWRT
VkdVc2VFbGVtZW50cy5jb250YWlucygmZWxlbWVudCk7IH0KIAogICAgIHZvaWQgaW5pdFNlY3Vy
aXR5Q29udGV4dCgpOwogICAgIHZvaWQgaW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwpAQCAt
MTYyNiw3ICsxNjI2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8WFBhdGhFdmFsdWF0b3I+IG1f
eHBhdGhFdmFsdWF0b3I7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRG9jdW1lbnRFeHRlbnNp
b25zPiBtX3N2Z0V4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTVkdVc2VFbGVtZW50Kj4gbV9zdmdV
c2VFbGVtZW50czsKKyAgICBIYXNoU2V0PFNWR1VzZUVsZW1lbnQqPiBtX2ludmFsaWRhdGVkU1ZH
VXNlRWxlbWVudHM7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVjdG9y
PEFubm90YXRlZFJlZ2lvblZhbHVlPiBtX2Fubm90YXRlZFJlZ2lvbnM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjc2ODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4ICsxMDgs
NiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdVc2VFCiB7CiAgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJl
bnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1
bWVudCkgewotICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUpCi0gICAgICAgICAg
ICBkb2N1bWVudCgpLmFkZFNWR1VzZUVsZW1lbnQoKnRoaXMpOwogICAgICAgICBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppbnNlcnRlZEludG9Eb2N1bWVudCh0aGlzKTsKICAgICAgICAg
aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICAgICAgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgp
OwpAQCAtMTE5LDExICsxMTcsMTEgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
U1ZHVXNlRQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3Zh
bFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUp
CiB7Ci0gICAgLy8gQ2hlY2sgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgYmVmb3JlIGNhbGxpbmcg
U1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvciB3aGljaCBjYWxscyBTVkdFbGVtZW50Ojpp
bnZhbGlkYXRlSW5zdGFuY2VzCi0gICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVy
bmFsRG9jdW1lbnQgd2hpY2ggY2FsbHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KKyAgICAvLyBD
aGVjayBzaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBiZWZvcmUgY2FsbGluZyBTVkdFbGVtZW50Ojpy
ZW1vdmVkRnJvbUFuY2VzdG9yKCkKKyAgICAvLyBiZWNhdXNlIGl0IG1pZ2h0IGRpc2Nvbm5lY3Qg
dGhpcyBlbGVtZW50IGZyb20gaXRzIGRvY3VtZW50LgogICAgIGlmIChyZW1vdmFsVHlwZS5kaXNj
b25uZWN0ZWRGcm9tRG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKG1fc2hhZG93VHJlZU5lZWRzVXBk
YXRlKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVTVkdVc2VFbGVtZW50KCp0aGlzKTsK
KyAgICAgICAgaWYgKHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpKQorICAgICAgICAgICAgcmVtb3Zl
U2hhZG93VHJlZU5lZWRzVXBkYXRlKCk7CiAgICAgfQogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6
cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7
CiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkgewpAQCAtMjMx
LDIzICsyMjksMjMgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZQog
CiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUoKQogewotICAgIG1fc2hhZG93
VHJlZU5lZWRzVXBkYXRlID0gZmFsc2U7CisgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOworICAg
IEFTU0VSVChzaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSk7CiAKICAgICAvLyBGSVhNRTogSXQncyBl
eHBlbnNpdmUgdG8gcmUtY2xvbmUgdGhlIGVudGlyZSB0cmVlIGV2ZXJ5IHRpbWUuIFdlIHNob3Vs
ZCBmaW5kIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIGhhbmRsZSB0aGlzLgogICAgIGNsZWFyU2hh
ZG93VHJlZSgpOwogCi0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgZG9jdW1lbnQoKS5yZW1vdmVTVkdVc2VFbGVtZW50KCp0aGlzKTsKLQogICAgIC8vIEZJWE1F
OiBFbmFibGUgU1ZHIHVzZSBlbGVtZW50cyBpbiBzaGFkb3cgdHJlZXMuCi0gICAgaWYgKGlzSW5T
aGFkb3dUcmVlKCkpCisgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgcmVtb3Zl
U2hhZG93VHJlZU5lZWRzVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBT
dHJpbmcgdGFyZ2V0SUQ7CiAgICAgYXV0byogdGFyZ2V0ID0gZmluZFRhcmdldCgmdGFyZ2V0SUQp
OwogICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLmFkZFBlbmRpbmdSZXNvdXJjZSh0YXJnZXRJRCwgdGhpcyk7CisgICAgICAgIHJlbW92
ZVNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
NjIsMTMgKzI2MCwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUoKQog
ICAgIHRyYW5zZmVyRXZlbnRMaXN0ZW5lcnNUb1NoYWRvd1RyZWUoKTsKIAogICAgIC8vIFdoZW4g
d2UgaW52YWxpZGF0ZSB0aGUgb3RoZXIgc2hhZG93IHRyZWVzLCBpdCdzIGltcG9ydGFudCB0aGF0
IHdlIGRvbid0Ci0gICAgLy8gZm9sbG93IGFueSBjeWNsZXMgYW5kIGludmFsaWRhdGUgb3Vyc2Vs
dmVzLiBUbyBhdm9pZCB0aGF0LCB3ZSB0ZW1wb3JhcmlseQotICAgIC8vIHNldCBtX3NoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSB0byB0cnVlIHNvIGludmFsaWRhdGVTaGFkb3dUcmVlIHdpbGwKLSAgICAv
LyBxdWlja2x5IHJldHVybiBhbmQgZG8gbm90aGluZy4KLSAgICBBU1NFUlQoIW1fc2hhZG93VHJl
ZU5lZWRzVXBkYXRlKTsKLSAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IHRydWU7CisgICAg
Ly8gZm9sbG93IGFueSBjeWNsZXMgYW5kIGludmFsaWRhdGUgb3Vyc2VsdmVzLiBUbyBhdm9pZCB0
aGF0LCB3ZSBtdXN0IGNhbGwKKyAgICAvLyByZW1vdmVTaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBh
ZnRlciBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKS4KICAgICBpbnZhbGlkYXRlRGVw
ZW5kZW50U2hhZG93VHJlZXMoKTsKLSAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNl
OworICAgIHJlbW92ZVNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOwogfQogCiBSZWZQdHI8U1ZHRWxl
bWVudD4gU1ZHVXNlRWxlbWVudDo6dGFyZ2V0Q2xvbmUoKSBjb25zdApAQCAtNTI3LDEzICs1MjIs
MTEgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlckV2ZW50TGlzdGVuZQogCiB2b2lkIFNW
R1VzZUVsZW1lbnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKIHsKLSAgICBpZiAobV9zaGFkb3dU
cmVlTmVlZHNVcGRhdGUpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpIHx8IHNoYWRvd1RyZWVOZWVk
c1VwZGF0ZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUg
PSB0cnVlOworICAgIHNldFNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOwogICAgIGludmFsaWRhdGVT
dHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKICAgICBpbnZhbGlkYXRlRGVwZW5kZW50U2hh
ZG93VHJlZXMoKTsKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5h
ZGRTVkdVc2VFbGVtZW50KCp0aGlzKTsKIH0KIAogdm9pZCBTVkdVc2VFbGVtZW50OjppbnZhbGlk
YXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCShyZXZpc2lvbiAyMjc2ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TVkdVc2VFbGVtZW50KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7Ci0g
ICAgYm9vbCBzaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZTsgfQogICAgIHZvaWQgdXBkYXRlU2hhZG93VHJlZSgpOwogCiAgICAgUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25zdDsKQEAgLTc0LDYgKzczLDEwIEBA
IHByaXZhdGU6CiAgICAgVGltZXIqIHN2Z0xvYWRFdmVudFRpbWVyKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCisgICAgYm9vbCBz
aGFkb3dUcmVlTmVlZHNVcGRhdGUoKSB7IHJldHVybiBpc0Nvbm5lY3RlZCgpICYmIGRvY3VtZW50
KCkuaXNJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnQoKnRoaXMpOyB9CisgICAgdm9pZCBzZXRTaGFk
b3dUcmVlTmVlZHNVcGRhdGUoKSB7IGRvY3VtZW50KCkuYWRkSW52YWxpZGF0ZWRTVkdVc2VFbGVt
ZW50KCp0aGlzKTsgfQorICAgIHZvaWQgcmVtb3ZlU2hhZG93VHJlZU5lZWRzVXBkYXRlKCkgeyBk
b2N1bWVudCgpLnJlbW92ZUludmFsaWRhdGVkU1ZHVXNlRWxlbWVudCgqdGhpcyk7IH0KKwogICAg
IERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVFeHRl
cm5hbERvY3VtZW50KCk7CiAKQEAgLTkxLDcgKzk0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpOwogCiAgICAgYm9vbCBtX2hhdmVGaXJlZExv
YWRFdmVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSB7IHRy
dWUgfTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTVkdEb2N1bWVudD4gbV9leHRl
cm5hbERvY3VtZW50OwogICAgIFRpbWVyIG1fc3ZnTG9hZEV2ZW50VGltZXI7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332733</attachid>
            <date>2018-01-30 18:04:32 -0800</date>
            <delta_ts>2018-05-01 23:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182188-20180130180432.patch</filename>
            <type>text/plain</type>
            <size>17307</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzg2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDE4LTAxLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMjI1ODY4KTogUmVsZWFzZSBhc3NlcnQgd2hlbiByZW1vdmluZyBhbiBTVkdVc2VFbGVtZW50
IGZyb20gRG9jdW1lbnQ6Om1fc3ZnVXNlRWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHIyMjU4NjgsIGEgbmV3IG1lbWJlciBEb2N1bWVu
dDo6bV9zdmdVc2VFbGVtZW50cyB3YXMgYWRkZWQgdG8ga2VlcCB0cmFjaworICAgICAgICBvZiB0
aGUgaW52YWxpZGF0ZWQgU1ZHVXNlRWxlbWVudHMuIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoKSBs
b29wcyB0aHJvdWdoCisgICAgICAgIGFsbCB0aGUgZWxlbWVudHMgaW4gdGhpcyBIYXNoU2V0IGFu
ZCBjYWxscyB1cGRhdGVTaGFkb3dUcmVlKCkgZm9yIGVhY2guCisKKyAgICAgICAgVGhyZWUgcHJv
YmxlbXMgd2l0aCB0aGlzIHBhdGNoOgorICAgICAgICAtLSBUaGVyZSBpcyBhIGNvbW1lbnQgaW4g
RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSgpIHNheWluZyB0aGF0IHdlIG5lZWQgdG8KKyAgICAgICAg
bWFrZSBhIGNvcHkgb2YgbV9zdmdVc2VFbGVtZW50cyBiZWNhdXNlIG5ldyBpdGVtcyBtaWdodCBi
ZSBhZGRlZCBvciBleGlzdGluZworICAgICAgICBlbGVtZW50cyBtaWdodCBnZXQgZGVsZXRlZC4g
QnV0IHdlIGNhbGwgdXBkYXRlU2hhZG93VHJlZSgpIGZvciBhbGwgdGhlCisgICAgICAgIGVsZW1l
bnRzIGV2ZW4gaWYgb25lIG9mIHRoZW0gZ2V0cyBkZWxldGVkIHdoaWxlIGNhbGxpbmcgdXBkYXRl
U2hhZG93VHJlZSgpCisgICAgICAgIG9mIGEgcHJldmlvdXMgb25lLgorICAgICAgICAtLSBUaGUg
bGlmZSBjeWNsZSBvZiB0aGUgZWxlbWVudHMgaW5zaWRlIG1fc3ZnVXNlRWxlbWVudHMgaGFzIHRv
IGNvbmZvcm0KKyAgICAgICAgd2l0aCB0aGUgc3RhdGUgb2YgbV9zaGFkb3dUcmVlTmVlZHNVcGRh
dGUgYW5kIGlzQ29ubmVjdGVkKCkgb2YgdGhlIGVsZW1lbnQuCisgICAgICAgIEFuZCB0aGlzIGNh
bid0IGJlIGd1YXJhbnRlZWQgYnkgdGhlIHN0YXRlIG9mIHRoaXMgY29kZS4KKyAgICAgICAgLS0g
VGhlIEhhc2hTZXQgb2YgdGhlIGludmFsaWRhdGVkIFNWR1VzZUVsZW1lbnRzIHdhcyBhZGRlZCB0
byB0aGUgRG9jdW1lbnQKKyAgICAgICAgY2xhc3MgYWx0aG91Z2ggdGhlIGNsYXNzIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucyBtYW5hZ2VzIHNpbWlsYXIgZGF0YSBzdHJ1Y3R1cmVzCisgICAgICAgIGVz
cGVjaWFsbHkgdGhlIGdyYXBoIG9mIHRoZSBTVkdVc2VFbGVtZW50cycgZGVwZW5kZW5jeS4KKwor
ICAgICAgICBJIHRoaW5rIHRoZSByZWFsIGJ1ZyBpcyBpbiBTVkdVc2VFbGVtZW50OjpyZW1vdmVk
RnJvbUFuY2VzdG9yKCkgd2hlcmUgCisgICAgICAgIHdlIGNhbGwgRG9jdW1lbnQ6OnJlbW92ZVNW
R1VzZUVsZW1lbnQoKSBmb3IgdGhlIGVsZW1lbnQgd2l0aG91dCBjaGVja2luZworICAgICAgICBp
c0Nvbm5lY3RlZCgpLiBBbHNvIHdlIGRvIG5vdCByZXNldCBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0
ZSB0byBmYWxzZSBhZnRlcgorICAgICAgICBjYWxsaW5nIERvY3VtZW50OjpyZW1vdmVTVkdVc2VF
bGVtZW50KCkuCisKKyAgICAgICAgQW4gYXNzZXJ0aW9uIHdpbGwgZmlyZSBpZiBEb2N1bWVudDo6
cmVzb2x2ZVN0eWxlKCkgY2FsbHMgdXBkYXRlU2hhZG93VHJlZSgpCisgICAgICAgIGZvciBhbiBT
VkdVc2VFbGVtZW50IGFuZCBhcyBhIHNpZGUgZWZmZWN0IGl0IGNhdXNlcyByZW1vdmVkRnJvbUFu
Y2VzdG9yKCkKKyAgICAgICAgdG8gYmUgY2FsbGVkIGZvciBhbiBlbGVtZW50IHdoaWNoIGlzIGFs
c28gZXhpc3QgaW4gRG9jdW1lbnQ6Om1fc3ZnVXNlRWxlbWVudHMKKyAgICAgICAgYW5kIGhhcyBu
b3QgYmVlbiBwcm9jZXNzZWQgeWV0LgorCisgICAgICAgIFRoZSBmaXggaXMgdG8gcmVwbGFjZSBT
VkdVc2VFbGVtZW50OjptX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSBieSBhIGZ1bmN0aW9uCisgICAg
ICAgIHdoaWNoIGNoZWNrcyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGluIERvY3VtZW50OjptX3N2
Z1VzZUVsZW1lbnRzLiBCeSBkb2luZworICAgICAgICB0aGF0IHdlIG1ha2UgdGhlIGxpZmUgY3lj
bGUgb2YgdGhlIGVsZW1lbnRzIGluIERvY3VtZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAg
IGNvbnRyb2xsZWQgYnkgaXRzZWxmLgorICAgICAgICAtLSBhZGRpbmcgYW4gZWxlbWVudCB3aWxs
IGhhcHBlbiBpbiBpbnZhbGlkYXRlU2hhZG93VHJlZSgpLgorICAgICAgICAtLSByZW1vdmluZyBh
biBlbGVtZW50IHdpbGwgaGFwcGVuIGluIHVwZGF0ZVNoYWRvd1RyZWUoKSBhbmQKKyAgICAgICAg
cmVtb3ZlZEZyb21BbmNlc3RvcigpLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOiBtX3N2Z1VzZUVsZW1lbnRzIGlz
IG5vdyBtb3ZlZCB0byAKKyAgICAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6IENhbGwgdGhlIGZ1bmN0aW9uIAorICAg
ICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVwZGF0ZUludmFsaWRhdGVkU1ZHVXNlRWxlbWVu
dHMoKSB3aGljaCByZXBsYWNlcworICAgICAgICB0aGUgZXhpc3RpbmcgbG9vcC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjphZGRTVkdVc2VFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVTVkdVc2VFbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjogY29uc3Qg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp+U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKTogVGhpcyBjb2RlCisgICAgICAgIHdhcyBtb3ZlZCBmcm9tIHRoZSBjbGFzcyBE
b2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkSW52
YWxpZGF0ZWRTVkdVc2VFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1
bWVudEV4dGVuc2lvbnM6OnJlbW92ZUludmFsaWRhdGVkU1ZHVXNlRWxlbWVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1cGRhdGVJbnZhbGlkYXRl
ZFNWR1VzZUVsZW1lbnRzKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5z
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjppc0ludmFs
aWRhdGVkU1ZHVXNlRWxlbWVudCBjb25zdCk6CisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGNo
ZWNrIHdoZXRoZXIgYW4gZWxlbWVudCBleGlzdHMgaW4gbV9pbnZhbGlkYXRlZFNWR1VzZUVsZW1l
bnRzCisgICAgICAgIG9yIG5vdC4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcik6IE5v
IG5lZWQgZm9yIGFkZGluZyB0aGUgCisgICAgICAgIGVsZW1lbnQgdG8gdGhlIFNWR0RvY3VtZW50
RXh0ZW5zaW9uczo6bV9pbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnRzIGluIHRoaXMKKyAgICAgICAg
ZnVuY3Rpb24uIEl0IGlzIGdvaW5nIHRvIGJlIGFkZGVkIHRvIGludmFsaWRhdGVTaGFkb3dUcmVl
KCkgaWYgd2UgbmVlZCB0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnJlbW92
ZWRGcm9tQW5jZXN0b3IpOiBDaGFuZ2UgYSBjb21tZW50IGFuZCBjYWxsIAorICAgICAgICB0aGUg
bmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnNoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSk6IFRoaXMgaXMgYSB3cmFwcGVyIGZvciBhCisgICAgICAgIGZ1bmN0aW9u
IGluIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6OnNldFNoYWRvd1RyZWVOZWVkc1VwZGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVXNlRWxlbWVudDo6cmVtb3ZlU2hhZG93VHJlZU5lZWRzVXBkYXRlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlKTogUmV0dXJuIGlm
IHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpCisgICAgICAgIGlzIGZhbHNlLiBUaGUgZWxlbWVudCBt
aWdodCBiZSBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudC4gTWFrZQorICAgICAg
ICB0aGUgY2FsbCB0byByZW1vdmVTaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBoYXBwZW5zIHRoZSBs
YXN0IHRoaW5nIHRvIGVuc3VyZQorICAgICAgICBubyBpbnZhbGlkYXRlLXVwZGF0ZSBsb29wcyB3
aWxsIGhhcHBlbi4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVT
aGFkb3dUcmVlKTogSWYgdGhlIGVsZW1lbnQgaXMgbm90CisgICAgICAgIGNvbm5lY3RlZCB0byBh
IGRvY3VtZW50LCBqdXN0IHJldHVybi4KKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgor
CiAyMDE4LTAxLTMwICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAg
ICAgICAgSlNFeHBvcnRzLmggc2hvdWxkIGJlIGluY2x1ZGVkIGFzIDxKYXZhU2NyaXB0Q29yZS9K
U0V4cG9ydE1hY3Jvcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
Mjc4NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsNyArMTYxLDYgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUaXRsZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJT
VkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCiAjaW5jbHVkZSAiU1dD
bGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTYzNCw3
ICs2MzMsNiBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9saXN0c0ludmFsaWRhdGVkQXREb2N1bWVudC5pc0Vt
cHR5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9j
b2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudC5pc0VtcHR5KCkpOwotICAgIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9zdmdVc2VFbGVtZW50cy5pc0VtcHR5
KCkpOwogCiAgICAgZm9yICh1bnNpZ25lZCBjb3VudCA6IG1fbm9kZUxpc3RBbmRDb2xsZWN0aW9u
Q291bnRzKQogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvdW50LCAhY291bnQpOwpAQCAtMTc5Miwx
MyArMTc5MCw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGUKICAg
ICBBbmltYXRpb25VcGRhdGVCbG9jayBhbmltYXRpb25VcGRhdGVCbG9jaygmbV9mcmFtZS0+YW5p
bWF0aW9uKCkpOwogCiAgICAgLy8gRklYTUU6IERvIHRoaXMgdXBkYXRlIHBlciB0cmVlIHNjb3Bl
LgotICAgIHsKLSAgICAgICAgYXV0byBlbGVtZW50cyA9IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxT
VkdVc2VFbGVtZW50Pj4obV9zdmdVc2VFbGVtZW50cyk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGNs
ZWFyIG1fc3ZnVXNlRWxlbWVudHMgaGVyZSBiZWNhdXNlIHVwZGF0ZVNoYWRvd1RyZWUgbWF5IGVu
ZCB1cCBleGVjdXRpbmcgYXJiaXRyYXJ5IHNjcmlwdHMKLSAgICAgICAgLy8gd2hpY2ggbWF5IGlu
c2VydCBuZXcgU1ZHIHVzZSBlbGVtZW50cyBvciByZW1vdmUgZXhpc3Rpbmcgb25lcyBpbnNpZGUg
c3luYyBJUEMgdmlhIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudC4KLSAgICAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCi0gICAgICAgICAgICBlbGVtZW50LT51cGRhdGVT
aGFkb3dUcmVlKCk7Ci0gICAgfQorICAgIGlmIChzdmdFeHRlbnNpb25zKCkpCisgICAgICAgIGFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS51cGRhdGVJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnRzKCk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSBzdHlsZSBvbiBvdXIgYW5jZXN0b3IgY2hh
aW4gYmVmb3JlIHByb2NlZWRpbmcgKGVzcGVjaWFsbHkgZm9yIHNlYW1sZXNzKSwKICAgICAvLyBo
b3dldmVyIGRvaW5nIHNvIGN1cnJlbnRseSBjYXVzZXMgc2V2ZXJhbCB0ZXN0cyB0byBjcmFzaCwg
YXMgRnJhbWU6OnNldERvY3VtZW50IGNhbGxzIERvY3VtZW50OjphdHRhY2gKQEAgLTUyODEsMTgg
KzUyNzQsNiBAQCBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIERvY3VtZW50OjphY2Nlc3NTCiAgICAg
cmV0dXJuICptX3N2Z0V4dGVuc2lvbnM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmFkZFNWR1VzZUVs
ZW1lbnQoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc3Zn
VXNlRWxlbWVudHMuYWRkKCZlbGVtZW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6
cmVtb3ZlU1ZHVXNlRWxlbWVudChTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewotICAgIGJvb2wg
ZGlkUmVtb3ZlID0gbV9zdmdVc2VFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQpOwotICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZGlkUmVtb3ZlKTsKLX0KLQogYm9v
bCBEb2N1bWVudDo6aGFzU1ZHUm9vdE5vZGUoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVu
dEVsZW1lbnQoKSAmJiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3Zn
VGFnKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMjc4NDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw2
IEBAIGNsYXNzIFJlbmRlclZpZXc7CiBjbGFzcyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
azsKIGNsYXNzIFNWR0RvY3VtZW50RXh0ZW5zaW9uczsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci1j
bGFzcyBTVkdVc2VFbGVtZW50OwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU2Ny
aXB0RWxlbWVudERhdGE7CiBjbGFzcyBTY3JpcHRNb2R1bGVMb2FkZXI7CkBAIC0xMDgxLDEwICsx
MDgwLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFNWR0RvY3VtZW50RXh0
ZW5zaW9ucyogc3ZnRXh0ZW5zaW9ucygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNWR0RvY3VtZW50
RXh0ZW5zaW9ucyYgYWNjZXNzU1ZHRXh0ZW5zaW9ucygpOwogCi0gICAgdm9pZCBhZGRTVkdVc2VF
bGVtZW50KFNWR1VzZUVsZW1lbnQmKTsKLSAgICB2b2lkIHJlbW92ZVNWR1VzZUVsZW1lbnQoU1ZH
VXNlRWxlbWVudCYpOwotICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVudCo+IGNvbnN0IHN2Z1VzZUVs
ZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdmdVc2VFbGVtZW50czsgfQotCiAgICAgdm9pZCBp
bml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgdm9pZCBpbml0Q29udGVudFNlY3VyaXR5UG9saWN5
KCk7CiAKQEAgLTE2MzAsNyArMTYyNSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFhQYXRoRXZh
bHVhdG9yPiBtX3hwYXRoRXZhbHVhdG9yOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucz4gbV9zdmdFeHRlbnNpb25zOwotICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVu
dCo+IG1fc3ZnVXNlRWxlbWVudHM7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAg
ICAgVmVjdG9yPEFubm90YXRlZFJlZ2lvblZhbHVlPiBtX2Fubm90YXRlZFJlZ2lvbnM7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAkocmV2aXNp
b24gMjI3ODQ1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTVkdSZXNvdXJj
ZXNDYWNoZS5oIgogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZH
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAi
WExpbmtOYW1lcy5oIgpAQCAtNDcsNyArNDgsMTAgQEAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpT
VkdEb2N1bWVudEV4dGVucwogewogfQogCi1TVkdEb2N1bWVudEV4dGVuc2lvbnM6On5TVkdEb2N1
bWVudEV4dGVuc2lvbnMoKSA9IGRlZmF1bHQ7CitTVkdEb2N1bWVudEV4dGVuc2lvbnM6On5TVkdE
b2N1bWVudEV4dGVuc2lvbnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04obV9pbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnRzLmlzRW1wdHkoKSk7Cit9CiAK
IHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1l
bnQqIGVsZW1lbnQpCiB7CkBAIC0zNTksNiArMzYzLDI3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpyZWJ1aWxkQWxsRWwKICAgICAgICAgZWxlbWVudC0+c3ZnQXR0cmlidXRlQ2hhbmdl
ZChYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKK3ZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjphZGRJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnQoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBhdXRvIHJlc3VsdCA9IG1faW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50cy5hZGQoJmVsZW1l
bnQpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVzdWx0
LmlzTmV3RW50cnkpOworfQorCit2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlSW52
YWxpZGF0ZWRTVkdVc2VFbGVtZW50KFNWR1VzZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYm9v
bCBkaWRSZW1vdmUgPSBtX2ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudHMucmVtb3ZlKCZlbGVtZW50
KTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGRpZFJlbW92
ZSk7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1cGRhdGVJbnZhbGlkYXRlZFNW
R1VzZUVsZW1lbnRzKCkKK3sKKyAgICBhdXRvIGVsZW1lbnRzID0gY29weVRvVmVjdG9yT2Y8UmVm
UHRyPFNWR1VzZUVsZW1lbnQ+PihtX2ludmFsaWRhdGVkU1ZHVXNlRWxlbWVudHMpOworICAgIC8v
IFdlIGNhbid0IGNsZWFyIG1faW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50cyBoZXJlIGJlY2F1c2Ug
dXBkYXRlU2hhZG93VHJlZSBtYXkgZW5kIHVwIGV4ZWN1dGluZyBhcmJpdHJhcnkgc2NyaXB0cwor
ICAgIC8vIHdoaWNoIG1heSBpbnNlcnQgbmV3IFNWRyB1c2UgZWxlbWVudHMgb3IgcmVtb3ZlIGV4
aXN0aW5nIG9uZXMgaW5zaWRlIHN5bmMgSVBDIHZpYSBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVs
ZW1lbnQuCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCisgICAgICAgIGVsZW1l
bnQtPnVwZGF0ZVNoYWRvd1RyZWUoKTsKK30KKwogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KFNWR0VsZW1lbnQqIHJlZmVyZW5j
ZWRFbGVtZW50KQogewogICAgIG1fZWxlbWVudERlcGVuZGVuY2llcy5yZW1vdmUocmVmZXJlbmNl
ZEVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaAkocmV2aXNpb24gMjI3ODQ1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFNWR0Zv
bnRGYWNlRWxlbWVudDsKIGNsYXNzIFNWR1Jlc291cmNlc0NhY2hlOwogY2xhc3MgU1ZHU01JTEVs
ZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50OworY2xhc3MgU1ZHVXNlRWxlbWVudDsKIAogY2xh
c3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdE
b2N1bWVudEV4dGVuc2lvbnMpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY3LDYgKzY4
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYnVpbGRBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRh
cmdldChTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVBbGxFbGVtZW50UmVmZXJlbmNlc0Zv
clRhcmdldChTVkdFbGVtZW50Kik7CiAKKyAgICB2b2lkIGFkZEludmFsaWRhdGVkU1ZHVXNlRWxl
bWVudChTVkdVc2VFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVJbnZhbGlkYXRlZFNWR1VzZUVs
ZW1lbnQoU1ZHVXNlRWxlbWVudCYpOworICAgIGJvb2wgaXNJbnZhbGlkYXRlZFNWR1VzZUVsZW1l
bnQoU1ZHVXNlRWxlbWVudCYgZWxlbWVudCkgY29uc3QgeyByZXR1cm4gbV9pbnZhbGlkYXRlZFNW
R1VzZUVsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50KTsgfQorICAgIHZvaWQgdXBkYXRlSW52YWxp
ZGF0ZWRTVkdVc2VFbGVtZW50cygpOworCiAgICAgdm9pZCBjbGVhclRhcmdldERlcGVuZGVuY2ll
cyhTVkdFbGVtZW50Jik7CiAgICAgdm9pZCByZWJ1aWxkRWxlbWVudHMoKTsKIApAQCAtODcsNiAr
OTMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8UGVuZGluZ0VsZW1lbnRzPj4gbV9wZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbDsgLy8gUmVz
b3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KICAgICBI
YXNoTWFwPFNWR0VsZW1lbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4+
PiBtX2VsZW1lbnREZXBlbmRlbmNpZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1Jlc291cmNl
c0NhY2hlPiBtX3Jlc291cmNlc0NhY2hlOworICAgIEhhc2hTZXQ8U1ZHVXNlRWxlbWVudCo+IG1f
aW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50czsKIAogICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4gbV9y
ZWJ1aWxkRWxlbWVudHM7CiAgICAgYm9vbCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjc4NDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4
ICsxMDgsNiBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBTVkdVc2VFCiB7CiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBl
LCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVk
VG9Eb2N1bWVudCkgewotICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUpCi0gICAg
ICAgICAgICBkb2N1bWVudCgpLmFkZFNWR1VzZUVsZW1lbnQoKnRoaXMpOwogICAgICAgICBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppbnNlcnRlZEludG9Eb2N1bWVudCh0aGlzKTsKICAg
ICAgICAgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKICAgICAgICAgdXBkYXRlRXh0ZXJuYWxEb2N1
bWVudCgpOwpAQCAtMTE5LDExICsxMTcsMTEgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JS
ZXN1bHQgU1ZHVXNlRQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3Io
UmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3Zl
ZFRyZWUpCiB7Ci0gICAgLy8gQ2hlY2sgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgYmVmb3JlIGNh
bGxpbmcgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvciB3aGljaCBjYWxscyBTVkdFbGVt
ZW50OjppbnZhbGlkYXRlSW5zdGFuY2VzCi0gICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0
ZUV4dGVybmFsRG9jdW1lbnQgd2hpY2ggY2FsbHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KKyAg
ICAvLyBDaGVjayBzaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBiZWZvcmUgY2FsbGluZyBTVkdFbGVt
ZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKCkKKyAgICAvLyBiZWNhdXNlIGl0IG1pZ2h0IGRpc2Nv
bm5lY3QgdGhpcyBlbGVtZW50IGZyb20gaXRzIGRvY3VtZW50LgogICAgIGlmIChyZW1vdmFsVHlw
ZS5kaXNjb25uZWN0ZWRGcm9tRG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKG1fc2hhZG93VHJlZU5l
ZWRzVXBkYXRlKQotICAgICAgICAgICAgZG9jdW1lbnQoKS5yZW1vdmVTVkdVc2VFbGVtZW50KCp0
aGlzKTsKKyAgICAgICAgaWYgKHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpKQorICAgICAgICAgICAg
cmVtb3ZlU2hhZG93VHJlZU5lZWRzVXBkYXRlKCk7CiAgICAgfQogICAgIFNWR0dyYXBoaWNzRWxl
bWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVk
VHJlZSk7CiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkgewpA
QCAtMTMyLDYgKzEzMCwyMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IoCiAgICAgfQogfQogCitib29sIFNWR1VzZUVsZW1lbnQ6OnNoYWRvd1RyZWVOZWVkc1VwZGF0
ZSgpCit7CisgICAgcmV0dXJuIGlzQ29ubmVjdGVkKCkgJiYgZG9jdW1lbnQoKS5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkuaXNJbnZhbGlkYXRlZFNWR1VzZUVsZW1lbnQoKnRoaXMpOworfQorCit2b2lk
IFNWR1VzZUVsZW1lbnQ6OnNldFNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpCit7CisgICAgZG9jdW1l
bnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkSW52YWxpZGF0ZWRTVkdVc2VFbGVtZW50KCp0
aGlzKTsKK30KKwordm9pZCBTVkdVc2VFbGVtZW50OjpyZW1vdmVTaGFkb3dUcmVlTmVlZHNVcGRh
dGUoKQoreworICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUludmFs
aWRhdGVkU1ZHVXNlRWxlbWVudCgqdGhpcyk7Cit9CisKIGlubGluZSBEb2N1bWVudCogU1ZHVXNl
RWxlbWVudDo6ZXh0ZXJuYWxEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZXh0ZXJu
YWxEb2N1bWVudCA/IG1fZXh0ZXJuYWxEb2N1bWVudC0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CkBA
IC0yMzEsMjMgKzI0NCwyMyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291
cmNlCiAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSgpCiB7Ci0gICAgbV9z
aGFkb3dUcmVlTmVlZHNVcGRhdGUgPSBmYWxzZTsKKyAgICBpZiAoIXNoYWRvd1RyZWVOZWVkc1Vw
ZGF0ZSgpKQorICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogSXQncyBleHBlbnNpdmUg
dG8gcmUtY2xvbmUgdGhlIGVudGlyZSB0cmVlIGV2ZXJ5IHRpbWUuIFdlIHNob3VsZCBmaW5kIGEg
bW9yZSBlZmZpY2llbnQgd2F5IHRvIGhhbmRsZSB0aGlzLgogICAgIGNsZWFyU2hhZG93VHJlZSgp
OwogCi0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1l
bnQoKS5yZW1vdmVTVkdVc2VFbGVtZW50KCp0aGlzKTsKLQogICAgIC8vIEZJWE1FOiBFbmFibGUg
U1ZHIHVzZSBlbGVtZW50cyBpbiBzaGFkb3cgdHJlZXMuCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVl
KCkpCisgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgcmVtb3ZlU2hhZG93VHJl
ZU5lZWRzVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBTdHJpbmcgdGFy
Z2V0SUQ7CiAgICAgYXV0byogdGFyZ2V0ID0gZmluZFRhcmdldCgmdGFyZ2V0SUQpOwogICAgIGlm
ICghdGFyZ2V0KSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLmFk
ZFBlbmRpbmdSZXNvdXJjZSh0YXJnZXRJRCwgdGhpcyk7CisgICAgICAgIHJlbW92ZVNoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNjIsMTMgKzI3
NSwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZVNoYWRvd1RyZWUoKQogICAgIHRyYW5z
ZmVyRXZlbnRMaXN0ZW5lcnNUb1NoYWRvd1RyZWUoKTsKIAogICAgIC8vIFdoZW4gd2UgaW52YWxp
ZGF0ZSB0aGUgb3RoZXIgc2hhZG93IHRyZWVzLCBpdCdzIGltcG9ydGFudCB0aGF0IHdlIGRvbid0
Ci0gICAgLy8gZm9sbG93IGFueSBjeWNsZXMgYW5kIGludmFsaWRhdGUgb3Vyc2VsdmVzLiBUbyBh
dm9pZCB0aGF0LCB3ZSB0ZW1wb3JhcmlseQotICAgIC8vIHNldCBtX3NoYWRvd1RyZWVOZWVkc1Vw
ZGF0ZSB0byB0cnVlIHNvIGludmFsaWRhdGVTaGFkb3dUcmVlIHdpbGwKLSAgICAvLyBxdWlja2x5
IHJldHVybiBhbmQgZG8gbm90aGluZy4KLSAgICBBU1NFUlQoIW1fc2hhZG93VHJlZU5lZWRzVXBk
YXRlKTsKLSAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IHRydWU7CisgICAgLy8gZm9sbG93
IGFueSBjeWNsZXMgYW5kIGludmFsaWRhdGUgb3Vyc2VsdmVzLiBUbyBhdm9pZCB0aGF0LCB3ZSBt
dXN0IGNhbGwKKyAgICAvLyByZW1vdmVTaGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBhZnRlciBpbnZh
bGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKS4KICAgICBpbnZhbGlkYXRlRGVwZW5kZW50U2hh
ZG93VHJlZXMoKTsKLSAgICBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSA9IGZhbHNlOworICAgIHJl
bW92ZVNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOwogfQogCiBSZWZQdHI8U1ZHRWxlbWVudD4gU1ZH
VXNlRWxlbWVudDo6dGFyZ2V0Q2xvbmUoKSBjb25zdApAQCAtNTI3LDEzICs1MzcsMTEgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlckV2ZW50TGlzdGVuZQogCiB2b2lkIFNWR1VzZUVsZW1l
bnQ6OmludmFsaWRhdGVTaGFkb3dUcmVlKCkKIHsKLSAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNV
cGRhdGUpCisgICAgaWYgKCFpc0Nvbm5lY3RlZCgpIHx8IHNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgPSB0cnVlOwor
ICAgIHNldFNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOwogICAgIGludmFsaWRhdGVTdHlsZUFuZFJl
bmRlcmVyc0ZvclN1YnRyZWUoKTsKICAgICBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMo
KTsKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS5hZGRTVkdVc2VF
bGVtZW50KCp0aGlzKTsKIH0KIAogdm9pZCBTVkdVc2VFbGVtZW50OjppbnZhbGlkYXRlRGVwZW5k
ZW50U2hhZG93VHJlZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZp
c2lvbiAyMjc4NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdVc2VF
bGVtZW50KCk7CiAKICAgICB2b2lkIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7Ci0gICAgYm9vbCBz
aGFkb3dUcmVlTmVlZHNVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd1RyZWVOZWVkc1Vw
ZGF0ZTsgfQogICAgIHZvaWQgdXBkYXRlU2hhZG93VHJlZSgpOwogCiAgICAgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25zdDsKQEAgLTc0LDYgKzczLDEwIEBAIHByaXZhdGU6
CiAgICAgVGltZXIqIHN2Z0xvYWRFdmVudFRpbWVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwogCisgICAgYm9vbCBzaGFkb3dUcmVl
TmVlZHNVcGRhdGUoKTsKKyAgICB2b2lkIHNldFNoYWRvd1RyZWVOZWVkc1VwZGF0ZSgpOworICAg
IHZvaWQgcmVtb3ZlU2hhZG93VHJlZU5lZWRzVXBkYXRlKCk7CisKICAgICBEb2N1bWVudCogZXh0
ZXJuYWxEb2N1bWVudCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgp
OwogCkBAIC05MSw3ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5k
ZW50U2hhZG93VHJlZXMoKTsKIAogICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkRXZlbnQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgeyB0cnVlIH07CiAgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkU1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxEb2N1bWVudDsK
ICAgICBUaW1lciBtX3N2Z0xvYWRFdmVudFRpbWVyOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339285</attachid>
            <date>2018-05-01 23:59:27 -0700</date>
            <delta_ts>2018-05-02 00:01:11 -0700</delta_ts>
            <desc>Removes the release assert</desc>
            <filename>bug-182188-20180501235927.patch</filename>
            <type>text/plain</type>
            <size>2961</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA1LTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIyNTg2OCk6
IFJlbGVhc2UgYXNzZXJ0IHdoZW4gcmVtb3ZpbmcgYW4gU1ZHVXNlRWxlbWVudCBmcm9tIERvY3Vt
ZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODIxODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2Njg5MjQwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHRo
ZSBjcmFzaCBieSByZW1vdmluZyB1cCB0aGUgcmVsZWFzZSBhc3NlcnQuCisKKyAgICAgICAgVGhl
IGNyYXNoIGlzIGxpa2VseSBjYXVzZWQgYnkgcmUtZW50cmFuY3kgdG8gRG9jdW1lbnQ6OnJlc29s
dmVTdHlsZSBkdXJpbmcgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZS4KKyAgICAgICAg
QmVjYXVzZSBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlIGludm9rZXMgdXBkYXRlU2hhZG93VHJlZSBv
biBTVkcgdXNlIGVsZW1lbnRzIGluIERvY3VtZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAg
IHdpdGhvdXQgY2xlYXJpbmcgdGhlIG1hcCwgdGhlIG5lc3RlZCBjYWxsIHRvIHJlc29sdmVTdHls
ZSBlbmRzIHVwIGNhbGxpbmcgdXBkYXRlU2hhZG93VHJlZSgpIGZvciBhbGwgZWxlbWVudHMKKyAg
ICAgICAgaW4gbV9zdmdVc2VFbGVtZW50cyBhbmQgcmVtb3ZpbmcgdGhlbSBhbGwgZnJvbSB0aGUg
bWFwLiBXaGVuIHRoZSBzdGFjayBmcmFtZSBldmVudHVhbGx5IGNvbWVzIGJhY2sgdG8gdGhlIG91
dGVyCisgICAgICAgIGludm9jYXRpb24gb2YgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZSwgdXBkYXRl
U2hhZG93VHJlZSBnZXRzIGludm9rZWQgZm9yIHRoZSBzZWNvbmQgdGltZSBvbiBTVkcgdXNlIGVs
ZW1lbnRzCisgICAgICAgIHdoaWNoIHdob3NlIHNoYWRvdyB0cmVlIGhhZCBhbHJlYWR5IGJlZW4g
dXBkYXRlZCB3aXRoaW4gdGhlIGlubmVyIGludm9jYXRpb24gdG8gdXBkYXRlU2hhZG93VHJlZSwg
YW5kIGhpdHMKKyAgICAgICAgdGhlIHJlbGVhc2UgYXNzZXJ0aW9uLgorCisgICAgICAgIFRoZXJl
IGlzIGFuIGFsdGVybmF0aXZlIGZpeDogYXZvaWQgY2FsbGluZyB1cGRhdGVTaGFkb3dUcmVlIG9u
IGEgc3ZnIGVsZW1lbnQgd2hlbiBzaGFkb3dUcmVlTmVlZHNVcGRhdGUgcmV0dXJucworICAgICAg
ICB0cnVlIG9uIHRoZSBlbGVtZW50IGluIHJlc29sdmVTdHlsZS4gSG93ZXZlciwgcmVtb3Zpbmcg
dGhlIHJlbGVzZSBhc3NlcnQgaXMgYSBzdXJlIHdheSB0byBmaXggdGhlIGNyYXNoIHNvCisgICAg
ICAgIHRoaXMgcGF0Y2ggb3B0cyBmb3IgdGhhdCBmaXggaW5zdGVhZCBlc3BlY2lhbGx5IHNpbmNl
IHdlIGRvbid0IGhhdmUgYW55IHJlcHJvZHVjaWJsZSB0ZXN0IGNhc2UgZm9yIHRoaXMgY3Jhc2gu
CisKKyAgICAgICAgVGhpcyByZWxlYXNlIGFzc2VydGlvbiB3YXMgYWRkZWQgaW4gcjIyNTg2OCBh
cyBhIGNhdXRpb3VzIG1lYXN1cmUgdG8gY2F0Y2ggYW55IHVzZS1hZnRlci1mcmVlcyBvZiBTVkdV
c2VFbGVtZW50J3MKKyAgICAgICAgc2luY2UgbV9zdmdVc2VFbGVtZW50cyBzdG9yZWQgcmF3IHBv
aW50ZXMgdG8gU1ZHIHVzZSBlbGVtZW50cyBidXQgdGhpcyBjcmFzaCBpcyBub3QgYW4gaW5kaWNh
dGl2ZSBvZiBhbnkgVUFGLAorICAgICAgICBhbmQgdGhlcmUgaXMgbm8gZXZpZGVuY2UgdGhhdCBy
MjI1ODY4IGhhcyBsZWQgdG8gbmV3IFVBRnMgZXZlbiBhZnRlciBmaXZlIG1vbnRocy4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIEkgY291bGRuJ3QgZmluZCBhIHdheSB0byB0cmlnZ2VyIGEgbmVz
dGVkIHN0eWxlIHVwZGF0ZSBpbnNpZGUgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cmVtb3ZlU1ZHVXNlRWxlbWVudCk6CisKIDIwMTgtMDUtMDEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVXNlIGRlZmF1bHQgc3RkOjpvcHRpb25h
bCBpZiBpdCBpcyBwcm92aWRlZApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyMzEyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzIyLDggKzUzMjIsOCBAQCB2b2lkIERvY3VtZW50OjphZGRTVkdVc2VFbGVtZW50
KFNWR1VzZUVsCiAKIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZVNWR1VzZUVsZW1lbnQoU1ZHVXNlRWxl
bWVudCYgZWxlbWVudCkKIHsKLSAgICBib29sIGRpZFJlbW92ZSA9IG1fc3ZnVXNlRWxlbWVudHMu
cmVtb3ZlKCZlbGVtZW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGRpZFJlbW92ZSk7CisgICAgbV9zdmdVc2VFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQp
OworICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhhdCBlbGVtZW50IHdhcyBpbiBtX3N2Z1VzZUVsZW1l
bnRzIG9uY2UgcmUtZW50cmFuY3kgdG8gdXBkYXRlIHN0eWxlIGFuZCBsYXlvdXQgaGF2ZSBiZWVu
IHJlbW92ZWQuCiB9CiAKIGJvb2wgRG9jdW1lbnQ6Omhhc1NWR1Jvb3ROb2RlKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339286</attachid>
            <date>2018-05-02 00:01:13 -0700</date>
            <delta_ts>2018-05-02 06:26:55 -0700</delta_ts>
            <desc>Fixed typos</desc>
            <filename>bug-182188-20180502000112.patch</filename>
            <type>text/plain</type>
            <size>2936</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzMTIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA1LTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIyNTg2OCk6
IFJlbGVhc2UgYXNzZXJ0IHdoZW4gcmVtb3ZpbmcgYW4gU1ZHVXNlRWxlbWVudCBmcm9tIERvY3Vt
ZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODIxODgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2Njg5MjQwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIHRo
ZSBjcmFzaCBieSByZW1vdmluZyB1cCB0aGUgcmVsZWFzZSBhc3NlcnQuCisKKyAgICAgICAgVGhl
IGNyYXNoIGlzIGxpa2VseSBjYXVzZWQgYnkgcmUtZW50cmFuY3kgdG8gRG9jdW1lbnQ6OnJlc29s
dmVTdHlsZSBkdXJpbmcgU1ZHVXNlRWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZS4KKyAgICAgICAg
QmVjYXVzZSBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlIGludm9rZXMgdXBkYXRlU2hhZG93VHJlZSBv
biBTVkcgdXNlIGVsZW1lbnRzIGluIERvY3VtZW50OjptX3N2Z1VzZUVsZW1lbnRzCisgICAgICAg
IHdpdGhvdXQgY2xlYXJpbmcgdGhlIG1hcCwgdGhlIG5lc3RlZCBjYWxsIHRvIHJlc29sdmVTdHls
ZSBlbmRzIHVwIGNhbGxpbmcgdXBkYXRlU2hhZG93VHJlZSgpIGZvciBhbGwgZWxlbWVudHMKKyAg
ICAgICAgaW4gbV9zdmdVc2VFbGVtZW50cyBhbmQgcmVtb3ZpbmcgdGhlbSBhbGwgZnJvbSB0aGUg
bWFwLiBXaGVuIHRoZSBzdGFjayBmcmFtZSBldmVudHVhbGx5IGNvbWVzIGJhY2sgdG8gdGhlIG91
dGVyCisgICAgICAgIGludm9jYXRpb24gb2YgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZSwgdXBkYXRl
U2hhZG93VHJlZSBnZXRzIGludm9rZWQgZm9yIHRoZSBzZWNvbmQgdGltZSBvbiBTVkcgdXNlIGVs
ZW1lbnRzCisgICAgICAgIHdob3NlIHNoYWRvdyB0cmVlIGhhZCBhbHJlYWR5IGJlZW4gdXBkYXRl
ZCB3aXRoaW4gdGhlIGlubmVyIGludm9jYXRpb24gdG8gdXBkYXRlU2hhZG93VHJlZSwgYW5kIHJl
bGVhc2UtYXNzZXJ0cy4KKworICAgICAgICBUaGVyZSBpcyBhbiBhbHRlcm5hdGl2ZSBmaXg6IGF2
b2lkIGNhbGxpbmcgdXBkYXRlU2hhZG93VHJlZSBvbiBhIHN2ZyBlbGVtZW50IHdoZW4gc2hhZG93
VHJlZU5lZWRzVXBkYXRlIHJldHVybnMKKyAgICAgICAgdHJ1ZSBvbiB0aGUgZWxlbWVudCBpbiBy
ZXNvbHZlU3R5bGUuIEhvd2V2ZXIsIHJlbW92aW5nIHRoZSByZWxlYXNlIGFzc2VydCBpcyBhIHN1
cmUgd2F5IHRvIGZpeCB0aGUgY3Jhc2ggc28KKyAgICAgICAgdGhpcyBwYXRjaCBvcHRzIGZvciB0
aGF0IGZpeCBpbnN0ZWFkIGVzcGVjaWFsbHkgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgcmVwcm9k
dWNpYmxlIHRlc3QgY2FzZSBmb3IgdGhpcyBjcmFzaC4KKworICAgICAgICBUaGlzIHJlbGVhc2Ug
YXNzZXJ0aW9uIHdhcyBhZGRlZCBpbiByMjI1ODY4IGFzIGEgY2F1dGlvdXMgbWVhc3VyZSB0byBj
YXRjaCBhbnkgdXNlLWFmdGVyLWZyZWVzIG9mIFNWR1VzZUVsZW1lbnQncworICAgICAgICBzaW5j
ZSBtX3N2Z1VzZUVsZW1lbnRzIHN0b3JlZCByYXcgcG9pbnRlcyB0byBTVkcgdXNlIGVsZW1lbnRz
IGJ1dCB0aGlzIGNyYXNoIGlzIG5vdCBhbiBpbmRpY2F0aXZlIG9mIGFueSBVQUYsCisgICAgICAg
IGFuZCB0aGVyZSBpcyBubyBldmlkZW5jZSB0aGF0IHIyMjU4NjggaGFzIGxlZCB0byBuZXcgVUFG
cyBldmVuIGFmdGVyIGZpdmUgbW9udGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gSSBjb3Vs
ZG4ndCBmaW5kIGEgd2F5IHRvIHRyaWdnZXIgYSBuZXN0ZWQgc3R5bGUgdXBkYXRlIGluc2lkZSBT
VkdVc2VFbGVtZW50Ojp1cGRhdGVTaGFkb3dUcmVlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVTVkdVc2VFbGVtZW50KToK
KwogMjAxOC0wNS0wMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVc2UgZGVmYXVsdCBzdGQ6Om9wdGlvbmFsIGlmIGl0IGlzIHByb3ZpZGVkCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDIzMTIyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMjIsOCArNTMyMiw4IEBA
IHZvaWQgRG9jdW1lbnQ6OmFkZFNWR1VzZUVsZW1lbnQoU1ZHVXNlRWwKIAogdm9pZCBEb2N1bWVu
dDo6cmVtb3ZlU1ZHVXNlRWxlbWVudChTVkdVc2VFbGVtZW50JiBlbGVtZW50KQogewotICAgIGJv
b2wgZGlkUmVtb3ZlID0gbV9zdmdVc2VFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQpOwotICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZGlkUmVtb3ZlKTsKKyAgICBt
X3N2Z1VzZUVsZW1lbnRzLnJlbW92ZSgmZWxlbWVudCk7CisgICAgLy8gRklYTUU6IEFzc2VydCB0
aGF0IGVsZW1lbnQgd2FzIGluIG1fc3ZnVXNlRWxlbWVudHMgb25jZSByZS1lbnRyYW5jeSB0byB1
cGRhdGUgc3R5bGUgYW5kIGxheW91dCBoYXZlIGJlZW4gcmVtb3ZlZC4KIH0KIAogYm9vbCBEb2N1
bWVudDo6aGFzU1ZHUm9vdE5vZGUoKSBjb25zdAo=
</data>
<flag name="review"
          id="357524"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>