<?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>84460</bug_id>
          
          <creation_ts>2012-04-20 09:13:29 -0700</creation_ts>
          <short_desc>[CSS Filters] Move m_filter and related fields from RenderLayer to a different structure and only allocate it when needed</short_desc>
          <delta_ts>2013-05-13 09:29:25 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82803</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>dino</cc>
    
    <cc>jchaffraix</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>606618</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-20 09:13:29 -0700</bug_when>
    <thetext>There are a growing number of fields in RenderLayer. Move that to a different rare structure and only allocate it for RenderLayers that need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608196</commentid>
    <comment_count>1</comment_count>
      <attachid>138461</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-23 16:55:54 -0700</bug_when>
    <thetext>Created attachment 138461
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608221</commentid>
    <comment_count>2</comment_count>
      <attachid>138467</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-23 17:17:41 -0700</bug_when>
    <thetext>Created attachment 138467
Patch V2

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608249</commentid>
    <comment_count>3</comment_count>
      <attachid>138467</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-04-23 17:50:48 -0700</bug_when>
    <thetext>Comment on attachment 138467
Patch V2

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

Some small questions.

&gt; Source/WebCore/rendering/RenderLayer.cpp:313
&gt;  bool RenderLayer::requiresFullLayerImageForFilters() const 
&gt;  {
&gt; -    // FIXME: This can be optimized to enlarge the repaint rect exactly with the amount that is going to be used.
&gt; -    // https://bugs.webkit.org/show_bug.cgi?id=81263
&gt; -    return paintsWithFilters() &amp;&amp; filter() &amp;&amp; filter()-&gt;hasFilterThatMovesPixels();
&gt; +    if (!paintsWithFilters())
&gt; +        return false;
&gt; +    FilterEffectRenderer* filter = filterRenderer();
&gt; +    return filter ? filter-&gt;hasFilterThatMovesPixels() : false;
&gt;  }

Why change this?  I guess because filterRenderer() is a little more complex now?

&gt; Source/WebCore/rendering/RenderLayer.h:56
&gt; -#if ENABLE(CSS_FILTERS)
&gt; -#include &quot;FilterEffectObserver.h&quot;
&gt; -#endif
&gt;  #include &quot;PaintInfo.h&quot;
&gt;  #include &quot;RenderBox.h&quot;
&gt;  #include &quot;ScrollableArea.h&quot;
&gt;  #include &lt;wtf/OwnPtr.h&gt;
&gt;  
&gt; +#if ENABLE(CSS_FILTERS)
&gt; +#include &quot;FilterEffectObserver.h&quot;
&gt; +#include &quot;RenderLayerFilterInfo.h&quot;
&gt; +#endif
&gt; +

I&apos;m not sure about the style rules here. It might not be strict. Do other files guard include blocks with ENABLE?

&gt; Source/WebCore/rendering/RenderLayerFilterInfo.h:38
&gt; +#if ENABLE(CSS_FILTERS)
&gt; +#include &quot;LayoutTypes.h&quot;
&gt; +
&gt; +#include &lt;wtf/HashMap.h&gt;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;

Typically it is a space after the ENABLE and then the includes are grouped together.

&gt; Source/WebCore/rendering/RenderLayerFilterInfo.h:55
&gt; +    void addDirtySourceRect(const LayoutRect&amp; rect) { m_dirtySourceRect.unite(rect); }

Maybe this should be expandDirtySourceRect? What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608326</commentid>
    <comment_count>4</comment_count>
      <attachid>138467</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-23 20:12:00 -0700</bug_when>
    <thetext>Comment on attachment 138467
Patch V2

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

Thanks for the r+. I will fix it and commit tomorrow.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:313
&gt;&gt;  }
&gt; 
&gt; Why change this?  I guess because filterRenderer() is a little more complex now?

Yes, filterRenderer() is doing a HashMap search, so I wanted to avoid doing it twice.

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:56
&gt;&gt; +
&gt; 
&gt; I&apos;m not sure about the style rules here. It might not be strict. Do other files guard include blocks with ENABLE?

There are other files that guard headers with ifdefs, but most that I found are in cpp files. There are some examples in headers, in general related to SVG. ie. Source/WebCore/rendering/PaintInfo.h.
There should be no difference, as the header is also guarding for the same ifdef inside it, but I suppose it makes code pre-processing faster.
Most of the other files with #include guarding have them grouped at the bottom.

&gt;&gt; Source/WebCore/rendering/RenderLayerFilterInfo.h:38
&gt;&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; 
&gt; Typically it is a space after the ENABLE and then the includes are grouped together.

Ok. Thanks.

&gt;&gt; Source/WebCore/rendering/RenderLayerFilterInfo.h:55
&gt;&gt; +    void addDirtySourceRect(const LayoutRect&amp; rect) { m_dirtySourceRect.unite(rect); }
&gt; 
&gt; Maybe this should be expandDirtySourceRect? What do you think?

Yes, thanks for the tip, &quot;expand&quot; makes more sense in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>608801</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-04-24 10:18:50 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/115079.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138461</attachid>
            <date>2012-04-23 16:55:54 -0700</date>
            <delta_ts>2012-04-23 17:17:41 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug84460.patch</filename>
            <type>text/plain</type>
            <size>26906</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkODE5YjU3Li41YTU0Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDQtMjMgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgRmlsdGVyc10gTW92ZSBtX2ZpbHRlciBhbmQgcmVsYXRlZCBmaWVsZHMg
ZnJvbSBSZW5kZXJMYXllciB0byBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgYW5kIG9ubHkgYWxsb2Nh
dGUgaXQgd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIG5ldyBSZW5kZXJMYXllckZpbHRlckluZm8gaXMgbWVhbnQgdG8gYmUgYWxs
b2NhdGVkIG9ubHkgd2hlbiBuZWVkZWQgYnkgZmlsdGVycy4gVGhlIGxpbmsgdG8gdGhlIFJlbmRl
ckxheWVyRmlsdGVySW5mbworICAgICAgICBpcyBtYWludGFpbmVkIHVzaW5nIGEgSGFzaE1hcCBh
bmQgYSBzaW5nbGUgYm9vbGVhbiBpbiB0aGUgUmVuZGVyTGF5ZXIgY2xhc3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBqdXN0IGV4dHJhY3RlZCBhIGNvdXBsZSBvZiBmaWVsZHMgaW5zaWRlIHRo
ZSBSZW5kZXJMYXllciB0byBhIHNlcGFyYXRlIGNsYXNzLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJl
bmRlcmVySGVscGVyOjpwcmVwYXJlRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRzV2l0
aEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcXVpcmVzRnVsbExh
eWVySW1hZ2VGb3JGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRG
aWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpmaWx0ZXJSZW5k
ZXJlcik6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5zdXJl
RmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlRmlsdGVy
SW5mb0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYXNGaWx0ZXJJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRIYXNGaWx0ZXJJbmZvKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5m
bzo6ZmlsdGVySW5mb0ZvclJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyRmlsdGVySW5mbzo6Y3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpyZW1vdmVGaWx0ZXJJbmZv
Rm9yUmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
OjpSZW5kZXJMYXllckZpbHRlckluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvOjp+UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyRmlsdGVySW5mbzo6c2V0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFJlbmRlckxheWVyRmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckZpbHRlckluZm86OmRpcnR5U291cmNlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckZpbHRlckluZm86OmFkZERpcnR5U291cmNlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckZpbHRlckluZm86OnJlc2V0RGlydHlTb3VyY2VSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVuZGVyZXIpOgorCiAyMDEyLTA0LTIzICBJ
YW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UHJvcGVybHkgaWdub3JlIHVuc3VwcG9ydGVkIGFuaW1hdGlvbiBkaXJlY3Rpb25zLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNzA2ODM2YS4uN2Q3ZGM3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNzc2LDYgKzM3NzYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBcCisJU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxOWFlZjA2Li5hYmEwYzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkKQEAgLTEyNTgsNiArMTI1OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
IFwKICAgICByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBcCisgICAgcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaW5l
Qm94TGlzdC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzMzYWNhZS4u
ZDFmMmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTQ0LDYgKzU0NCw3IEBACiAgICAgICAgICAg
ICAncmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmgnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllci5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlckluZm8uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0Lmgn
LAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgnLApAQCAtNDc2MSw2ICs0NzYyLDgg
QEAKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAnLAogICAgICAgICAg
ICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCcsCisgICAgICAgICAgICAncmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAnLAorICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckxpbmVCb3hMaXN0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNTBhZjIzZS4uMTA4
MDkxZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTM5MzEwLDYgKzM5MzEwLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMYXllckZpbHRlckluZm8uY3BwIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJp
bmdcUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJMaW5lQm94TGlzdC5jcHAiCiAJ
CQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI5YjYzNjkuLjg1ODE1NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE0NDksNiArMTQ0OSw4IEBACiAJCTUwQUNFMkNCMTRCNUQ3OTMwMDQ0NjY2NiAvKiBDdXN0b21G
aWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUwQUNFMkNBMTRCNUQ3OTMwMDQ0NjY2NiAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24u
aCAqLzsgfTsKIAkJNTBDQzA4OUExNEM2RTk5QzAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTBDQzA4OTkxNEM2RTk5QzAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRl
ci5oICovOyB9OwogCQk1MENDMEEzOTE0QzZGNUIxMDAxN0FCNTEgLyogQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwQ0MwQTM4MTRDNkY1QjEwMDE3QUI1MSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwICov
OyB9OworCQk1MEQxMEQ5OTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDEw
RDk3MTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3BwICovOyB9Owor
CQk1MEQxMEQ5QTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQxMEQ5ODE1NDVG
NTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTBENDAzQzcxNDc2OEM5NDAwRDMwQkI1
IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5j
cHAgKi87IH07CiAJCTUwRDQwM0M4MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDAzQzYx
NDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggKi87IH07CiAJCTUwRDQwNUY5MTQ3
RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBD
dXN0b21GaWx0ZXJNZXNoLmNwcCAqLzsgfTsKQEAgLTg0MzcsNiArODQzOSw4IEBACiAJCTUwQjQy
MTU3MTQ2OTc2OTYwMDg3RTYwNCAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MENDMDg5OTE0QzZFOTlDMDAxN0FCNTEgLyogQ3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1
c3RvbUZpbHRlck51bWJlclBhcmFtZXRlci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBDQzBBMzgx
NEM2RjVCMTAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwOyBwYXRo
ID0gZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MEQxMEQ5NzE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxheWVy
RmlsdGVySW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwRDEwRDk4MTU0
NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwRDQwM0M1MTQ3NjhDOTQwMEQzMEJCNSAvKiBGRUN1c3RvbUZpbHRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUN1c3RvbUZpbHRl
ci5jcHA7IHBhdGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTBENDAzQzYxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmg7IHBh
dGggPSBmaWx0ZXJzL0ZFQ3VzdG9tRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUwRDQwNUY3MTQ3RDMxRjMwMEQzMEJCNSAvKiBDdXN0b21GaWx0ZXJNZXNoLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2guY3BwOyBw
YXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNzIyLDYgKzIwNzI2LDggQEAKIAkJRjUyM0QyRjMwMkRFNDQzQjAxODYzNUNB
IC8qIHJlbmRlcmluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTBEMTBEOTcxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5j
cHAgKi8sCisJCQkJNTBEMTBEOTgxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVy
SW5mby5oICovLAogCQkJCTQzOTA0NkMyMTJEQTI1Q0UwMEFGODBBMiAvKiBtYXRobWwgKi8sCiAJ
CQkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovLAogCQkJCTA4OEMyRjc0MTIz
OTAwODAwMDNENjVDRSAvKiBzdmcgKi8sCkBAIC0yNDgwNCw2ICsyNDgxMCw3IEBACiAJCQkJQ0VD
QURGQzkxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFQ0FERkNFMTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk4MzFBRTRBMTU0MjI1QzkwMEZFMjY0NCAvKiBSZWZl
cnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTBEMTBEOUExNTQ1RjU3NjAwOTZEMjg4
IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNzgxNSw2ICsy
NzgyMiw3IEBACiAJCQkJQ0VDQURGQzYxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkM4MTUzNzc4RkYwMEUzNzA2OCAv
KiBEaWN0YXRpb25Db21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0FERkNEMTUzNzc5
MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTBEMTBEOTkxNTQ1RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGJlNDM5MDQuLjQwNDE2OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtMzc4LDEx
ICszNzgsMTEgQEAgTGF5b3V0UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y29tcHV0ZVNvdXJj
ZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXQKIAogYm9vbCBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckhlbHBlcjo6cHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKIHsKLSAgICBBU1NF
UlQobV9oYXZlRmlsdGVyRWZmZWN0ICYmIHJlbmRlckxheWVyLT5maWx0ZXIoKSk7CisgICAgQVNT
RVJUKG1faGF2ZUZpbHRlckVmZmVjdCAmJiByZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKSk7
CiAgICAgbV9yZW5kZXJMYXllciA9IHJlbmRlckxheWVyOwogICAgIG1fcmVwYWludFJlY3QgPSBk
aXJ0eVJlY3Q7CiAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogZmlsdGVyID0gcmVuZGVyTGF5
ZXItPmZpbHRlcigpOworICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSByZW5kZXJM
YXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKICAgICBMYXlvdXRSZWN0IGZpbHRlclNvdXJjZVJlY3Qg
PSBmaWx0ZXItPmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoZmlsdGVyQm94UmVj
dCwgZGlydHlSZWN0KTsKICAgICBtX3BhaW50T2Zmc2V0ID0gZmlsdGVyU291cmNlUmVjdC5sb2Nh
dGlvbigpOwogCkBAIC00MDgsNyArNDA4LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckhlbHBlcjo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0Kgogewog
ICAgIEFTU0VSVChtX3JlbmRlckxheWVyKTsKICAgICAKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyKCk7CisgICAgRmlsdGVyRWZmZWN0UmVu
ZGVyZXIqIGZpbHRlciA9IG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVyKCk7CiAgICAgZmls
dGVyLT5hbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgLy8gUGFpbnQgaW50byB0
aGUgY29udGV4dCB0aGF0IHJlcHJlc2VudHMgdGhlIFNvdXJjZUdyYXBoaWMgb2YgdGhlIGZpbHRl
ci4KICAgICBHcmFwaGljc0NvbnRleHQqIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGZpbHRlci0+
aW5wdXRDb250ZXh0KCk7CkBAIC00MzEsOCArNDMxLDggQEAgR3JhcGhpY3NDb250ZXh0KiBGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YmVnaW5GaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0
KgogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZp
bHRlckVmZmVjdCgpCiB7Ci0gICAgQVNTRVJUKG1faGF2ZUZpbHRlckVmZmVjdCAmJiBtX3JlbmRl
ckxheWVyLT5maWx0ZXIoKSk7Ci0gICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIqIGZpbHRlciA9IG1f
cmVuZGVyTGF5ZXItPmZpbHRlcigpOworICAgIEFTU0VSVChtX2hhdmVGaWx0ZXJFZmZlY3QgJiYg
bV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKSk7CisgICAgRmlsdGVyRWZmZWN0UmVuZGVy
ZXIqIGZpbHRlciA9IG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVyKCk7CiAgICAgZmlsdGVy
LT5pbnB1dENvbnRleHQoKS0+cmVzdG9yZSgpOwogCiAgICAgZmlsdGVyLT5hcHBseSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNjY4MTMyNy4uYjAxOTI1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNjksNiAr
MTY5LDkgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJlcikKICAgICAsIG1fbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKHRydWUpCiAjZW5kaWYK
ICAgICAsIG1fY2FuU2tpcFJlcGFpbnRSZWN0c1VwZGF0ZU9uU2Nyb2xsKHJlbmRlcmVyLT5pc1Rh
YmxlQ2VsbCgpKQorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAsIG1faGFzRmlsdGVySW5m
byhmYWxzZSkKKyNlbmRpZgogICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKICAgICAsIG1fcGFy
ZW50KDApCiAgICAgLCBtX3ByZXZpb3VzKDApCkBAIC0yMzAsNiArMjMzLDEwIEBAIFJlbmRlckxh
eWVyOjp+UmVuZGVyTGF5ZXIoKQogCiAgICAgaWYgKG1fcmVmbGVjdGlvbikKICAgICAgICAgcmVt
b3ZlUmVmbGVjdGlvbigpOworICAgIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICByZW1v
dmVGaWx0ZXJJbmZvSWZOZWVkZWQoKTsKKyNlbmRpZgogCiAgICAgLy8gQ2hpbGQgbGF5ZXJzIHdp
bGwgYmUgZGVsZXRlZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHJlbmRlciBvYmplY3RzLCBzbwog
ICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZGVsZXRlIHRoZW0gb3Vyc2VsdmVzLgpAQCAtMjg2LDIw
ICsyOTMsMjMgQEAgYm9vbCBSZW5kZXJMYXllcjo6cGFpbnRzV2l0aEZpbHRlcnMoKSBjb25zdAog
ICAgIGlmICghcmVuZGVyZXIoKS0+aGFzRmlsdGVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICghaXND
b21wb3NpdGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCFtX2JhY2tpbmcg
fHwgIW1fYmFja2luZy0+Y2FuQ29tcG9zaXRlRmlsdGVycygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAogYm9vbCBSZW5kZXJMYXll
cjo6cmVxdWlyZXNGdWxsTGF5ZXJJbWFnZUZvckZpbHRlcnMoKSBjb25zdCAKIHsKLSAgICAvLyBG
SVhNRTogVGhpcyBjYW4gYmUgb3B0aW1pemVkIHRvIGVubGFyZ2UgdGhlIHJlcGFpbnQgcmVjdCBl
eGFjdGx5IHdpdGggdGhlIGFtb3VudCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMjYzCi0gICAgcmV0dXJu
IHBhaW50c1dpdGhGaWx0ZXJzKCkgJiYgZmlsdGVyKCkgJiYgZmlsdGVyKCktPmhhc0ZpbHRlclRo
YXRNb3Zlc1BpeGVscygpOworICAgIGlmICghcGFpbnRzV2l0aEZpbHRlcnMoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSBmaWx0ZXJS
ZW5kZXJlcigpOworICAgIHJldHVybiBmaWx0ZXIgPyBmaWx0ZXItPmhhc0ZpbHRlclRoYXRNb3Zl
c1BpeGVscygpIDogZmFsc2U7CiB9CiAjZW5kaWYKIApAQCAtMTAwNCw4ICsxMDE0LDEwIEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnNldEZpbHRlckJhY2tlbmROZWVkc1JlcGFpbnRpbmdJblJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwKICAgICAgICAgcmVjdEZvclJlcGFpbnQuZXhwYW5kKGxlZnRP
dXRzZXQgKyByaWdodE91dHNldCwgdG9wT3V0c2V0ICsgYm90dG9tT3V0c2V0KTsKICAgICB9CiAj
ZW5kaWYKLSAgICAKLSAgICBtX2ZpbHRlclJlcGFpbnRSZWN0LnVuaXRlKHJlY3RGb3JSZXBhaW50
KTsKKworICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRl
ckluZm8oKTsKKyAgICBBU1NFUlQoZmlsdGVySW5mbyk7CisgICAgZmlsdGVySW5mby0+YWRkRGly
dHlTb3VyY2VSZWN0KHJlY3RGb3JSZXBhaW50KTsKICAgICAKICAgICBSZW5kZXJMYXllciogcGFy
ZW50TGF5ZXIgPSBlbmNsb3NpbmdGaWx0ZXJSZXBhaW50TGF5ZXIoKTsKICAgICBBU1NFUlQocGFy
ZW50TGF5ZXIpOwpAQCAtMjk3OCwxNCArMjk5MCwxNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyQ29udGVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KiBj
bwogICAgIHVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQotICAgIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyIGZpbHRlclBhaW50ZXIoZmlsdGVy
KCkgJiYgcGFpbnRzV2l0aEZpbHRlcnMoKSk7CisgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXIgZmlsdGVyUGFpbnRlcihmaWx0ZXJSZW5kZXJlcigpICYmIHBhaW50c1dpdGhGaWx0ZXJzKCkp
OwogICAgIGlmIChmaWx0ZXJQYWludGVyLmhhdmVGaWx0ZXJFZmZlY3QoKSAmJiAhY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKSB7CiAgICAgICAgIExheW91dFBvaW50IHJvb3RMYXllck9mZnNl
dDsKICAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCByb290TGF5ZXJPZmZz
ZXQpOwotICAgICAgICBtX2ZpbHRlclJlcGFpbnRSZWN0Lm1vdmUocm9vdExheWVyT2Zmc2V0Lngo
KSwgcm9vdExheWVyT2Zmc2V0LnkoKSk7Ci0gICAgICAgIGlmIChmaWx0ZXJQYWludGVyLnByZXBh
cmVGaWx0ZXJFZmZlY3QodGhpcywgY2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVy
LCAwKSwgcGFyZW50UGFpbnREaXJ0eVJlY3QsIG1fZmlsdGVyUmVwYWludFJlY3QpKSB7CisgICAg
ICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8o
KTsKKyAgICAgICAgQVNTRVJUKGZpbHRlckluZm8pOworICAgICAgICBMYXlvdXRSZWN0IGZpbHRl
clJlcGFpbnRSZWN0ID0gZmlsdGVySW5mby0+ZGlydHlTb3VyY2VSZWN0KCk7CisgICAgICAgIGZp
bHRlclJlcGFpbnRSZWN0Lm1vdmUocm9vdExheWVyT2Zmc2V0LngoKSwgcm9vdExheWVyT2Zmc2V0
LnkoKSk7CisgICAgICAgIGlmIChmaWx0ZXJQYWludGVyLnByZXBhcmVGaWx0ZXJFZmZlY3QodGhp
cywgY2FsY3VsYXRlTGF5ZXJCb3VuZHModGhpcywgcm9vdExheWVyLCAwKSwgcGFyZW50UGFpbnRE
aXJ0eVJlY3QsIGZpbHRlclJlcGFpbnRSZWN0KSkgewogICAgICAgICAgICAgLy8gTm93IHdlIGtu
b3cgZm9yIHN1cmUsIHRoYXQgdGhlIHNvdXJjZSBpbWFnZSB3aWxsIGJlIHVwZGF0ZWQsIHNvIHdl
IGNhbiByZXZlcnQgb3VyIHRyYWNraW5nIHJlcGFpbnQgcmVjdCBiYWNrIHRvIHplcm8uCi0gICAg
ICAgICAgICBtX2ZpbHRlclJlcGFpbnRSZWN0ID0gSW50UmVjdCgpOworICAgICAgICAgICAgZmls
dGVySW5mby0+cmVzZXREaXJ0eVNvdXJjZVJlY3QoKTsKIAogICAgICAgICAgICAgLy8gUmV3aXJl
IHRoZSBvbGQgY29udGV4dCB0byBhIG1lbW9yeSBidWZmZXIsIHNvIHRoYXQgd2UgY2FuIGNhcHR1
cmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KICAgICAgICAgICAgIC8vIE5PVEU6IFdlIHNh
dmVkIHRoZSBvbGQgY29udGV4dCBpbiB0aGUgInRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCIgbG9j
YWwgdmFyaWFibGUsIHRvIGJlIGFibGUgdG8gc3RhcnQgYSB0cmFuc3BhcmVuY3kgbGF5ZXIKQEAg
LTI5OTksNyArMzAxNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhlIGZpbHRlciBuZWVkcyB0aGUgZnVsbCBzb3VyY2UgaW1hZ2UsIHdlIG5lZWQg
dG8gYXZvaWQgdXNpbmcgdGhlIGNsaXAgcmVjdGFuZ2xlcy4KICAgICAgICAgICAgICAgICAvLyBP
dGhlcndpc2UsIGlmIGZvciBleGFtcGxlIHRoaXMgbGF5ZXIgaGFzIG92ZXJmbG93OmhpZGRlbiwg
YSBkcm9wIHNoYWRvdyB3aWxsIG5vdCBjb21wdXRlIGNvcnJlY3RseS4KICAgICAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgd2Ugd2lsbCBzdGlsbCBhcHBseSB0aGUgY2xpcHBpbmcgb24gdGhlIGZp
bmFsIHJlbmRlcmluZyBvZiB0aGUgZmlsdGVyLgotICAgICAgICAgICAgICAgIHVzZUNsaXBSZWN0
ID0gIWZpbHRlcigpLT5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKTsKKyAgICAgICAgICAgICAg
ICB1c2VDbGlwUmVjdCA9ICFmaWx0ZXJSZW5kZXJlcigpLT5oYXNGaWx0ZXJUaGF0TW92ZXNQaXhl
bHMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTQ4NTQsMTkgKzQ4Njks
MjcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUmVmbGVjdGlvblN0eWxlKCkKICNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVm
ZmVjdCgpCiB7Ci0gICAgaWYgKHBhaW50c1dpdGhGaWx0ZXJzKCkgJiYgcmVuZGVyZXIoKS0+c3R5
bGUoKS0+ZmlsdGVyKCkuc2l6ZSgpKSB7Ci0gICAgICAgIGlmICghbV9maWx0ZXIpIHsKLSAgICAg
ICAgICAgIG1fZmlsdGVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKKyAg
ICBpZiAoIWhhc0ZpbHRlcigpKSB7CisgICAgICAgIHJlbW92ZUZpbHRlckluZm9JZk5lZWRlZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChwYWludHNXaXRoRmlsdGVy
cygpKSB7CisgICAgICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3Vy
ZUZpbHRlckluZm8oKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJJbmZvLT5yZW5kZXJlcigpKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IGZpbHRlclJlbmRlcmVyID0g
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgICAgIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGlu
Z3MoKS0+YWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2Vs
ZXJhdGVkOwotICAgICAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5n
TW9kZSk7CisgICAgICAgICAgICBmaWx0ZXJSZW5kZXJlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5k
ZXJpbmdNb2RlKTsKKyAgICAgICAgICAgIGZpbHRlckluZm8tPnNldFJlbmRlcmVyKGZpbHRlclJl
bmRlcmVyLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgZmlsdGVy
IGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwg
YXR0ZW1wdCB0bwogICAgICAgICAvLyBnbyB0aHJvdWdoIHJlZ3VsYXIgcHJvY2Vzc2luZyAoZS5n
LiBjb21wb3NpdGluZyksIGJ1dCBuZXZlciBhcHBseSBhbnl0aGluZy4KLSAgICAgICAgaWYgKCFt
X2ZpbHRlci0+YnVpbGQocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSwgcmVuZGVyZXIoKS0+c3R5bGUo
KS0+ZmlsdGVyKCkpKQotICAgICAgICAgICAgbV9maWx0ZXIgPSAwOworICAgICAgICBpZiAoIWZp
bHRlckluZm8tPnJlbmRlcmVyKCktPmJ1aWxkKHJlbmRlcmVyKCktPmRvY3VtZW50KCksIHJlbmRl
cmVyKCktPnN0eWxlKCktPmZpbHRlcigpKSkKKyAgICAgICAgICAgIGZpbHRlckluZm8tPnNldFJl
bmRlcmVyKDApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fZmlsdGVyID0gMDsKKyAgICAgICAg
aWYgKFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8o
KSkKKyAgICAgICAgICAgIGZpbHRlckluZm8tPnNldFJlbmRlcmVyKDApOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA4MzU0M2JjLi43Y2ZlNWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDQsMTUgKzQ0LDE3
IEBACiAjaWZuZGVmIFJlbmRlckxheWVyX2gKICNkZWZpbmUgUmVuZGVyTGF5ZXJfaAogCi0jaWYg
RU5BQkxFKENTU19GSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCi0j
ZW5kaWYKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNp
bmNsdWRlICJTY3JvbGxCZWhhdmlvci5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorI2luY2x1
ZGUgIkZpbHRlckVmZmVjdE9ic2VydmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKENTU19G
SUxURVJTKQpAQCAtNTc3LDcgKzU3OSwyMiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIGJvb2wgcGFpbnRzV2l0aEZpbHRlcnMoKSBjb25zdDsKICAgICBib29sIHJlcXVp
cmVzRnVsbExheWVySW1hZ2VGb3JGaWx0ZXJzKCkgY29uc3Q7Ci0gICAgRmlsdGVyRWZmZWN0UmVu
ZGVyZXIqIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyLmdldCgpOyB9CisgICAgRmls
dGVyRWZmZWN0UmVuZGVyZXIqIGZpbHRlclJlbmRlcmVyKCkgY29uc3QgCisgICAgeworICAgICAg
ICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlckluZm8gPSB0aGlzLT5maWx0ZXJJbmZvKCk7
CisgICAgICAgIHJldHVybiBmaWx0ZXJJbmZvID8gZmlsdGVySW5mby0+cmVuZGVyZXIoKSA6IDA7
CisgICAgfQorICAgIAorICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbygpIGNv
bnN0IHsgcmV0dXJuIGhhc0ZpbHRlckluZm8oKSA/IFJlbmRlckxheWVyRmlsdGVySW5mbzo6Zmls
dGVySW5mb0ZvclJlbmRlckxheWVyKHRoaXMpIDogMDsgfQorICAgIFJlbmRlckxheWVyRmlsdGVy
SW5mbyogZW5zdXJlRmlsdGVySW5mbygpIHsgcmV0dXJuIFJlbmRlckxheWVyRmlsdGVySW5mbzo6
Y3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQodGhpcyk7IH0KKyAgICB2b2lk
IHJlbW92ZUZpbHRlckluZm9JZk5lZWRlZCgpIAorICAgIHsKKyAgICAgICAgaWYgKGhhc0ZpbHRl
ckluZm8oKSkKKyAgICAgICAgICAgIFJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVtb3ZlRmlsdGVy
SW5mb0ZvclJlbmRlckxheWVyKHRoaXMpOyAKKyAgICB9CisgICAgCisgICAgYm9vbCBoYXNGaWx0
ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNGaWx0ZXJJbmZvOyB9CisgICAgdm9pZCBzZXRI
YXNGaWx0ZXJJbmZvKGJvb2wgaGFzRmlsdGVySW5mbykgeyBtX2hhc0ZpbHRlckluZm8gPSBoYXNG
aWx0ZXJJbmZvOyB9CiAjZW5kaWYKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTgyNiw2ICs4
NDMsMTAgQEAgcHJvdGVjdGVkOgogICAgIC8vIHNhdmVzIGEgbG90IG9mIHRpbWUgd2hlbiBzY3Jv
bGxpbmcgb24gYSB0YWJsZS4KICAgICBib29sIG1fY2FuU2tpcFJlcGFpbnRSZWN0c1VwZGF0ZU9u
U2Nyb2xsIDogMTsKIAorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBib29sIG1faGFzRmls
dGVySW5mbyA6IDE7CisjZW5kaWYKKwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBtX3JlbmRl
cmVyOwogCiAgICAgUmVuZGVyTGF5ZXIqIG1fcGFyZW50OwpAQCAtODg2LDExICs5MDcsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgCiAgICAgLy8gTWF5IHVsdGltYXRlbHkgYmUgZXh0ZW5kZWQgdG8gbWFu
eSByZXBsaWNhcyAod2l0aCB0aGVpciBvd24gcGFpbnQgb3JkZXIpLgogICAgIFJlbmRlclJlcGxp
Y2EqIG1fcmVmbGVjdGlvbjsKLSAgCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4gbV9maWx0ZXI7Ci0gICAgTGF5b3V0UmVjdCBtX2ZpbHRl
clJlcGFpbnRSZWN0OwotI2VuZGlmCiAgICAgICAgIAogICAgIC8vIFJlbmRlcmVycyB0byBob2xk
IG91ciBjdXN0b20gc2Nyb2xsIGNvcm5lciBhbmQgcmVzaXplci4KICAgICBSZW5kZXJTY3JvbGxi
YXJQYXJ0KiBtX3Njcm9sbENvcm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMDQ3OWMyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICog
ICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgiCisKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3RSZW5kZXJlci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBSZW5kZXJMYXll
ckZpbHRlckluZm86OnNfZmlsdGVyTWFwID0gMDsKKworUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBS
ZW5kZXJMYXllckZpbHRlckluZm86OmZpbHRlckluZm9Gb3JSZW5kZXJMYXllcihjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIpCit7CisgICAgaWYgKCFzX2ZpbHRlck1hcCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwOjppdGVyYXRvciBpdGVyID0gc19maWx0
ZXJNYXAtPmZpbmQobGF5ZXIpOworICAgIHJldHVybiAoaXRlciAhPSBzX2ZpbHRlck1hcC0+ZW5k
KCkpID8gaXRlci0+c2Vjb25kIDogMDsKK30KKworUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBSZW5k
ZXJMYXllckZpbHRlckluZm86OmNyZWF0ZUZpbHRlckluZm9Gb3JSZW5kZXJMYXllcklmTmVlZGVk
KFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBpZiAoIXNfZmlsdGVyTWFwKQorICAgICAgICBz
X2ZpbHRlck1hcCA9IG5ldyBSZW5kZXJMYXllckZpbHRlckluZm9NYXAoKTsKKyAgICAKKyAgICBS
ZW5kZXJMYXllckZpbHRlckluZm9NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzX2ZpbHRlck1hcC0+Zmlu
ZChsYXllcik7CisgICAgaWYgKGl0ZXIgIT0gc19maWx0ZXJNYXAtPmVuZCgpKSB7CisgICAgICAg
IEFTU0VSVChsYXllci0+aGFzRmlsdGVySW5mbygpKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnNl
Y29uZDsKKyAgICB9CisgICAgCisgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXIgPSBu
ZXcgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKGxheWVyKTsKKyAgICBzX2ZpbHRlck1hcC0+c2V0KGxh
eWVyLCBmaWx0ZXIpOworICAgIGxheWVyLT5zZXRIYXNGaWx0ZXJJbmZvKHRydWUpOworICAgIHJl
dHVybiBmaWx0ZXI7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpyZW1vdmVGaWx0
ZXJJbmZvRm9yUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIGlmICghc19m
aWx0ZXJNYXApCisgICAgICAgIHJldHVybjsKKyAgICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZp
bHRlciA9IHNfZmlsdGVyTWFwLT50YWtlKGxheWVyKTsKKyAgICBpZiAoc19maWx0ZXJNYXAtPmlz
RW1wdHkoKSkgeworICAgICAgICBkZWxldGUgc19maWx0ZXJNYXA7CisgICAgICAgIHNfZmlsdGVy
TWFwID0gMDsKKyAgICB9CisgICAgaWYgKCFmaWx0ZXIpIHsKKyAgICAgICAgQVNTRVJUKCFsYXll
ci0+aGFzRmlsdGVySW5mbygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsYXllci0+
c2V0SGFzRmlsdGVySW5mbyhmYWxzZSk7CisgICAgZGVsZXRlIGZpbHRlcjsKK30KKworUmVuZGVy
TGF5ZXJGaWx0ZXJJbmZvOjpSZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqIGxheWVy
KQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjp+
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKCkKK3sKKyAgICAvLyBLZWVwaW5nIHRoZSBkZXN0cnVjdG9y
IGhlcmUgYmVjYXVzZSB0aGVyZSdzIGEgcmVmIHRvIEZpbHRlckVmZmVjdFJlbmRlcmVyIHRoYXQg
bWlnaHQgZ2V0IGRlbGV0ZWQuCit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpzZXRS
ZW5kZXJlcihQYXNzUmVmUHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiByZW5kZXJlcikKK3sgCisg
ICAgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyAKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYzNmYwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZW5kZXJMYXllckZpbHRlckluZm9faAorI2Rl
ZmluZSBSZW5kZXJMYXllckZpbHRlckluZm9faAorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
I2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZpbHRlckVmZmVjdFJlbmRlcmVyOworY2xhc3MgUmVu
ZGVyTGF5ZXI7CitjbGFzcyBSZW5kZXJMYXllckZpbHRlckluZm87CisKK3R5cGVkZWYgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFJlbmRlckxheWVyRmlsdGVySW5mbyo+IFJlbmRlckxheWVy
RmlsdGVySW5mb01hcDsKKyAgICAKK2NsYXNzIFJlbmRlckxheWVyRmlsdGVySW5mbyB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mb0ZvclJlbmRl
ckxheWVyKGNvbnN0IFJlbmRlckxheWVyKik7CisgICAgc3RhdGljIFJlbmRlckxheWVyRmlsdGVy
SW5mbyogY3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQoUmVuZGVyTGF5ZXIq
KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXIoUmVuZGVy
TGF5ZXIqKTsKKworICAgIGNvbnN0IExheW91dFJlY3QmIGRpcnR5U291cmNlUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlydHlTb3VyY2VSZWN0OyB9CisgICAgdm9pZCBhZGREaXJ0eVNvdXJjZVJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgeyBtX2RpcnR5U291cmNlUmVjdC51bml0ZShyZWN0
KTsgfQorICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0
ID0gTGF5b3V0UmVjdCgpOyB9CisgICAgCisgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIqIHJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0UmVu
ZGVyZXIoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlcj4pOworcHJpdmF0ZToKKyAgICBS
ZW5kZXJMYXllckZpbHRlckluZm8oUmVuZGVyTGF5ZXIqKTsKKyAgICB+UmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvKCk7CisgICAgCisgICAgUmVuZGVyTGF5ZXIqIG1fbGF5ZXI7CisgICAgCisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBtX3JlbmRlcmVyOworICAgIExheW91dFJlY3QgbV9k
aXJ0eVNvdXJjZVJlY3Q7CisgICAgCisgICAgc3RhdGljIFJlbmRlckxheWVyRmlsdGVySW5mb01h
cCogc19maWx0ZXJNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBSZW5kZXJMYXllckZpbHRlckluZm9f
aAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138467</attachid>
            <date>2012-04-23 17:17:41 -0700</date>
            <delta_ts>2013-05-13 09:29:25 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug84460_1.patch</filename>
            <type>text/plain</type>
            <size>27346</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTdkZjA5Li45NDMxM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDQtMjMgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgor
CisgICAgICAgIFtDU1MgRmlsdGVyc10gTW92ZSBtX2ZpbHRlciBhbmQgcmVsYXRlZCBmaWVsZHMg
ZnJvbSBSZW5kZXJMYXllciB0byBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgYW5kIG9ubHkgYWxsb2Nh
dGUgaXQgd2hlbiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIG5ldyBSZW5kZXJMYXllckZpbHRlckluZm8gaXMgbWVhbnQgdG8gYmUgYWxs
b2NhdGVkIG9ubHkgd2hlbiBuZWVkZWQgYnkgZmlsdGVycy4gVGhlIGxpbmsgdG8gdGhlIFJlbmRl
ckxheWVyRmlsdGVySW5mbworICAgICAgICBpcyBtYWludGFpbmVkIHVzaW5nIGEgSGFzaE1hcCBh
bmQgYSBzaW5nbGUgYm9vbGVhbiBpbiB0aGUgUmVuZGVyTGF5ZXIgY2xhc3MuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBqdXN0IGV4dHJhY3RlZCBhIGNvdXBsZSBvZiBmaWVsZHMgaW5zaWRlIHRo
ZSBSZW5kZXJMYXllciB0byBhIHNlcGFyYXRlIGNsYXNzLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJl
bmRlcmVySGVscGVyOjpwcmVwYXJlRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
On5SZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRzV2l0
aEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlcXVpcmVzRnVsbExh
eWVySW1hZ2VGb3JGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRG
aWx0ZXJCYWNrZW5kTmVlZHNSZXBhaW50aW5nSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpmaWx0ZXJSZW5k
ZXJlcik6CisgICAgICAgIChSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6ZmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5zdXJl
RmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlRmlsdGVy
SW5mb0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYXNGaWx0ZXJJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRIYXNGaWx0ZXJJbmZvKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5m
bzo6ZmlsdGVySW5mb0ZvclJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyRmlsdGVySW5mbzo6Y3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpyZW1vdmVGaWx0ZXJJbmZv
Rm9yUmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJJbmZv
OjpSZW5kZXJMYXllckZpbHRlckluZm8pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJG
aWx0ZXJJbmZvOjp+UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyRmlsdGVySW5mbzo6c2V0UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlckluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFJlbmRlckxheWVyRmlsdGVySW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckZpbHRlckluZm86OmRpcnR5U291cmNlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckZpbHRlckluZm86OmFkZERpcnR5U291cmNlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckZpbHRlckluZm86OnJlc2V0RGlydHlTb3VyY2VSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyRmlsdGVySW5mbzo6cmVuZGVyZXIpOgorCiAyMDEyLTA0LTIzICBT
aGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gVmlzdWFsaXplIGFjY2VsZXJhdGVkIGNvbXBvc2l0b3IgcmVjdHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCA3MDY4MzZhLi43ZDdkYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTM3NzYsNiArMzc3Niw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJveExpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE5YWVmMDYuLmFiYTBjN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQpAQCAtMTI1OCw2ICsxMjU4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgXAogICAg
IHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIFwKKyAgICByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMDY4MmY3Li41Zjk0YmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC01NDQsNiArNTQ0LDcgQEAKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5m
by5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaCcsCiAgICAg
ICAgICAgICAncmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgnLAogICAgICAgICAgICAgJ3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCcsCkBAIC00NzY1LDYgKzQ3NjYsOCBAQAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwJywKICAgICAgICAgICAg
ICdyZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCcsCiAgICAgICAgICAgICAncmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVySW5mby5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGluZUJv
eExpc3QuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAnLAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1MGFmMjNlLi4xMDgwOTFmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzkz
MTAsNiArMzkzMTAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAiCisJCQkJPgor
CQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5k
ZXJMYXllckZpbHRlckluZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckxpbmVCb3hMaXN0LmNwcCIKIAkJCQk+CiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjliNjM2OS4uODU4MTU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ0OSw2
ICsxNDQ5LDggQEAKIAkJNTBBQ0UyQ0IxNEI1RDc5MzAwNDQ2NjY2IC8qIEN1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTBBQ0UyQ0ExNEI1RDc5MzAwNDQ2NjY2IC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyB9
OwogCQk1MENDMDg5QTE0QzZFOTlDMDAxN0FCNTEgLyogQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1l
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEND
MDg5OTE0QzZFOTlDMDAxN0FCNTEgLyogQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmggKi87
IH07CiAJCTUwQ0MwQTM5MTRDNkY1QjEwMDE3QUI1MSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBDQzBB
MzgxNEM2RjVCMTAwMTdBQjUxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgKi87IH07CisJ
CTUwRDEwRDk5MTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBEMTBEOTcxNTQ1
RjU3NjAwOTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5jcHAgKi87IH07CisJCTUwRDEw
RDlBMTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwRDEwRDk4MTU0NUY1NzYwMDk2
RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MEQ0MDNDNzE0NzY4Qzk0MDBEMzBCQjUgLyogRkVD
dXN0b21GaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAqLzsg
fTsKIAkJNTBENDAzQzgxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEQ0MDNDNjE0NzY4Qzk0
MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLzsgfTsKIAkJNTBENDA1RjkxNDdEMzFGMzAw
RDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTBENDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZp
bHRlck1lc2guY3BwICovOyB9OwpAQCAtODQzNyw2ICs4NDM5LDggQEAKIAkJNTBCNDIxNTcxNDY5
NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUwQ0MwODk5MTRDNkU5OUMwMDE3QUI1MSAvKiBDdXN0b21GaWx0ZXJOdW1i
ZXJQYXJhbWV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck51bWJlclBh
cmFtZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MENDMEEzODE0QzZGNUIx
MDAxN0FCNTEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA7IHBhdGggPSBmaWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUwRDEwRDk3MTU0NUY1NzYwMDk2RDI4OCAvKiBSZW5kZXJMYXllckZpbHRlckluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTGF5ZXJGaWx0ZXJJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTBEMTBEOTgxNTQ1RjU3NjAw
OTZEMjg4IC8qIFJlbmRlckxheWVyRmlsdGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJMYXllckZpbHRlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTBENDAzQzUxNDc2OEM5NDAwRDMwQkI1IC8qIEZFQ3VzdG9tRmlsdGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZFQ3VzdG9tRmlsdGVyLmNwcDsg
cGF0aCA9IGZpbHRlcnMvRkVDdXN0b21GaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MEQ0MDNDNjE0NzY4Qzk0MDBEMzBCQjUgLyogRkVDdXN0b21GaWx0ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRkVDdXN0b21GaWx0ZXIuaDsgcGF0aCA9IGZp
bHRlcnMvRkVDdXN0b21GaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBE
NDA1RjcxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaC5jcHA7IHBhdGggPSBm
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjA3MjIsNiArMjA3MjYsOCBAQAogCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVu
ZGVyaW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MEQxMEQ5NzE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCAqLywK
KwkJCQk1MEQxMEQ5ODE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgg
Ki8sCiAJCQkJNDM5MDQ2QzIxMkRBMjVDRTAwQUY4MEEyIC8qIG1hdGhtbCAqLywKIAkJCQlCQzhD
OEZBQTBERENEMkYyMDBCNTkyRjQgLyogc3R5bGUgKi8sCiAJCQkJMDg4QzJGNzQxMjM5MDA4MDAw
M0Q2NUNFIC8qIHN2ZyAqLywKQEAgLTI0ODA0LDYgKzI0ODEwLDcgQEAKIAkJCQlDRUNBREZDOTE1
Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0VDQURGQ0UxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTgzMUFFNEExNTQyMjVDOTAwRkUyNjQ0IC8qIFJlZmVycmVyUG9s
aWN5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MEQxMEQ5QTE1NDVGNTc2MDA5NkQyODggLyogUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3ODE1LDYgKzI3ODIyLDcg
QEAKIAkJCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQzgxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3Rh
dGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDQURGQ0QxNTM3NzkxRDAwRTM3
MDY4IC8qIFRleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MEQxMEQ5OTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RS
ZW5kZXJlci5jcHAKaW5kZXggYmU0MzkwNC4uNDA0MTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0zNzgsMTEgKzM3OCwx
MSBAQCBMYXlvdXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpjb21wdXRlU291cmNlSW1hZ2VS
ZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dAogCiBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVy
SGVscGVyOjpwcmVwYXJlRmlsdGVyRWZmZWN0KFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgY29u
c3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQogewotICAgIEFTU0VSVChtX2hh
dmVGaWx0ZXJFZmZlY3QgJiYgcmVuZGVyTGF5ZXItPmZpbHRlcigpKTsKKyAgICBBU1NFUlQobV9o
YXZlRmlsdGVyRWZmZWN0ICYmIHJlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKICAgICBt
X3JlbmRlckxheWVyID0gcmVuZGVyTGF5ZXI7CiAgICAgbV9yZXBhaW50UmVjdCA9IGRpcnR5UmVj
dDsKIAotICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSByZW5kZXJMYXllci0+Zmls
dGVyKCk7CisgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIqIGZpbHRlciA9IHJlbmRlckxheWVyLT5m
aWx0ZXJSZW5kZXJlcigpOwogICAgIExheW91dFJlY3QgZmlsdGVyU291cmNlUmVjdCA9IGZpbHRl
ci0+Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChmaWx0ZXJCb3hSZWN0LCBkaXJ0
eVJlY3QpOwogICAgIG1fcGFpbnRPZmZzZXQgPSBmaWx0ZXJTb3VyY2VSZWN0LmxvY2F0aW9uKCk7
CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRl
cmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqCiB7CiAgICAgQVNT
RVJUKG1fcmVuZGVyTGF5ZXIpOwogICAgIAotICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0
ZXIgPSBtX3JlbmRlckxheWVyLT5maWx0ZXIoKTsKKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciog
ZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKICAgICBmaWx0ZXItPmFs
bG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKICAgICAvLyBQYWludCBpbnRvIHRoZSBjb250
ZXh0IHRoYXQgcmVwcmVzZW50cyB0aGUgU291cmNlR3JhcGhpYyBvZiB0aGUgZmlsdGVyLgogICAg
IEdyYXBoaWNzQ29udGV4dCogc291cmNlR3JhcGhpY3NDb250ZXh0ID0gZmlsdGVyLT5pbnB1dENv
bnRleHQoKTsKQEAgLTQzMSw4ICs0MzEsOCBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVj
dFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqCiAKIEdy
YXBoaWNzQ29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZm
ZWN0KCkKIHsKLSAgICBBU1NFUlQobV9oYXZlRmlsdGVyRWZmZWN0ICYmIG1fcmVuZGVyTGF5ZXIt
PmZpbHRlcigpKTsKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJM
YXllci0+ZmlsdGVyKCk7CisgICAgQVNTRVJUKG1faGF2ZUZpbHRlckVmZmVjdCAmJiBtX3JlbmRl
ckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogZmls
dGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKICAgICBmaWx0ZXItPmlucHV0
Q29udGV4dCgpLT5yZXN0b3JlKCk7CiAKICAgICBmaWx0ZXItPmFwcGx5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA2NjgxMzI3Li4yZTAxOGE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE2OSw2ICsxNjksOSBA
QCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVy
KQogICAgICwgbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQodHJ1ZSkKICNlbmRpZgogICAgICwg
bV9jYW5Ta2lwUmVwYWludFJlY3RzVXBkYXRlT25TY3JvbGwocmVuZGVyZXItPmlzVGFibGVDZWxs
KCkpCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICwgbV9oYXNGaWx0ZXJJbmZvKGZhbHNl
KQorI2VuZGlmCiAgICAgLCBtX3JlbmRlcmVyKHJlbmRlcmVyKQogICAgICwgbV9wYXJlbnQoMCkK
ICAgICAsIG1fcHJldmlvdXMoMCkKQEAgLTIzMCw2ICsyMzMsMTAgQEAgUmVuZGVyTGF5ZXI6On5S
ZW5kZXJMYXllcigpCiAKICAgICBpZiAobV9yZWZsZWN0aW9uKQogICAgICAgICByZW1vdmVSZWZs
ZWN0aW9uKCk7CisgICAgCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIHJlbW92ZUZpbHRl
ckluZm9JZk5lZWRlZCgpOworI2VuZGlmCiAKICAgICAvLyBDaGlsZCBsYXllcnMgd2lsbCBiZSBk
ZWxldGVkIGJ5IHRoZWlyIGNvcnJlc3BvbmRpbmcgcmVuZGVyIG9iamVjdHMsIHNvCiAgICAgLy8g
d2UgZG9uJ3QgbmVlZCB0byBkZWxldGUgdGhlbSBvdXJzZWx2ZXMuCkBAIC0yODYsMjAgKzI5Mywy
MyBAQCBib29sIFJlbmRlckxheWVyOjpwYWludHNXaXRoRmlsdGVycygpIGNvbnN0CiAgICAgaWYg
KCFyZW5kZXJlcigpLT5oYXNGaWx0ZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKCFpc0NvbXBvc2l0
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIW1fYmFja2luZyB8fCAhbV9i
YWNraW5nLT5jYW5Db21wb3NpdGVGaWx0ZXJzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBib29sIFJlbmRlckxheWVyOjpyZXF1
aXJlc0Z1bGxMYXllckltYWdlRm9yRmlsdGVycygpIGNvbnN0IAogewotICAgIC8vIEZJWE1FOiBU
aGlzIGNhbiBiZSBvcHRpbWl6ZWQgdG8gZW5sYXJnZSB0aGUgcmVwYWludCByZWN0IGV4YWN0bHkg
d2l0aCB0aGUgYW1vdW50IHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZC4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEyNjMKLSAgICByZXR1cm4gcGFpbnRz
V2l0aEZpbHRlcnMoKSAmJiBmaWx0ZXIoKSAmJiBmaWx0ZXIoKS0+aGFzRmlsdGVyVGhhdE1vdmVz
UGl4ZWxzKCk7CisgICAgaWYgKCFwYWludHNXaXRoRmlsdGVycygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgRmlsdGVyRWZmZWN0UmVuZGVyZXIqIGZpbHRlciA9IGZpbHRlclJlbmRlcmVy
KCk7CisgICAgcmV0dXJuIGZpbHRlciA/IGZpbHRlci0+aGFzRmlsdGVyVGhhdE1vdmVzUGl4ZWxz
KCkgOiBmYWxzZTsKIH0KICNlbmRpZgogCkBAIC0xMDA0LDggKzEwMTQsMTAgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6c2V0RmlsdGVyQmFja2VuZE5lZWRzUmVwYWludGluZ0luUmVjdChjb25zdCBMYXlv
dXRSZWN0JiByZWN0LAogICAgICAgICByZWN0Rm9yUmVwYWludC5leHBhbmQobGVmdE91dHNldCAr
IHJpZ2h0T3V0c2V0LCB0b3BPdXRzZXQgKyBib3R0b21PdXRzZXQpOwogICAgIH0KICNlbmRpZgot
ICAgIAotICAgIG1fZmlsdGVyUmVwYWludFJlY3QudW5pdGUocmVjdEZvclJlcGFpbnQpOworCisg
ICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygp
OworICAgIEFTU0VSVChmaWx0ZXJJbmZvKTsKKyAgICBmaWx0ZXJJbmZvLT5hZGREaXJ0eVNvdXJj
ZVJlY3QocmVjdEZvclJlcGFpbnQpOwogICAgIAogICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXll
ciA9IGVuY2xvc2luZ0ZpbHRlclJlcGFpbnRMYXllcigpOwogICAgIEFTU0VSVChwYXJlbnRMYXll
cik7CkBAIC0yOTc4LDE0ICsyOTkwLDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50cyhSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvCiAgICAg
dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0g
ICAgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIgZmlsdGVyUGFpbnRlcihmaWx0ZXIoKSAmJiBw
YWludHNXaXRoRmlsdGVycygpKTsKKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciBmaWx0
ZXJQYWludGVyKGZpbHRlclJlbmRlcmVyKCkgJiYgcGFpbnRzV2l0aEZpbHRlcnMoKSk7CiAgICAg
aWYgKGZpbHRlclBhaW50ZXIuaGF2ZUZpbHRlckVmZmVjdCgpICYmICFjb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpIHsKICAgICAgICAgTGF5b3V0UG9pbnQgcm9vdExheWVyT2Zmc2V0OwogICAg
ICAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIHJvb3RMYXllck9mZnNldCk7Ci0g
ICAgICAgIG1fZmlsdGVyUmVwYWludFJlY3QubW92ZShyb290TGF5ZXJPZmZzZXQueCgpLCByb290
TGF5ZXJPZmZzZXQueSgpKTsKLSAgICAgICAgaWYgKGZpbHRlclBhaW50ZXIucHJlcGFyZUZpbHRl
ckVmZmVjdCh0aGlzLCBjYWxjdWxhdGVMYXllckJvdW5kcyh0aGlzLCByb290TGF5ZXIsIDApLCBw
YXJlbnRQYWludERpcnR5UmVjdCwgbV9maWx0ZXJSZXBhaW50UmVjdCkpIHsKKyAgICAgICAgUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvID0gdGhpcy0+ZmlsdGVySW5mbygpOworICAg
ICAgICBBU1NFUlQoZmlsdGVySW5mbyk7CisgICAgICAgIExheW91dFJlY3QgZmlsdGVyUmVwYWlu
dFJlY3QgPSBmaWx0ZXJJbmZvLT5kaXJ0eVNvdXJjZVJlY3QoKTsKKyAgICAgICAgZmlsdGVyUmVw
YWludFJlY3QubW92ZShyb290TGF5ZXJPZmZzZXQueCgpLCByb290TGF5ZXJPZmZzZXQueSgpKTsK
KyAgICAgICAgaWYgKGZpbHRlclBhaW50ZXIucHJlcGFyZUZpbHRlckVmZmVjdCh0aGlzLCBjYWxj
dWxhdGVMYXllckJvdW5kcyh0aGlzLCByb290TGF5ZXIsIDApLCBwYXJlbnRQYWludERpcnR5UmVj
dCwgZmlsdGVyUmVwYWludFJlY3QpKSB7CiAgICAgICAgICAgICAvLyBOb3cgd2Uga25vdyBmb3Ig
c3VyZSwgdGhhdCB0aGUgc291cmNlIGltYWdlIHdpbGwgYmUgdXBkYXRlZCwgc28gd2UgY2FuIHJl
dmVydCBvdXIgdHJhY2tpbmcgcmVwYWludCByZWN0IGJhY2sgdG8gemVyby4KLSAgICAgICAgICAg
IG1fZmlsdGVyUmVwYWludFJlY3QgPSBJbnRSZWN0KCk7CisgICAgICAgICAgICBmaWx0ZXJJbmZv
LT5yZXNldERpcnR5U291cmNlUmVjdCgpOwogCiAgICAgICAgICAgICAvLyBSZXdpcmUgdGhlIG9s
ZCBjb250ZXh0IHRvIGEgbWVtb3J5IGJ1ZmZlciwgc28gdGhhdCB3ZSBjYW4gY2FwdHVyZSB0aGUg
Y29udGVudHMgb2YgdGhlIGxheWVyLgogICAgICAgICAgICAgLy8gTk9URTogV2Ugc2F2ZWQgdGhl
IG9sZCBjb250ZXh0IGluIHRoZSAidHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0IiBsb2NhbCB2YXJp
YWJsZSwgdG8gYmUgYWJsZSB0byBzdGFydCBhIHRyYW5zcGFyZW5jeSBsYXllcgpAQCAtMjk5OSw3
ICszMDE0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgZmlsdGVyIG5lZWRzIHRoZSBmdWxsIHNvdXJjZSBpbWFnZSwgd2UgbmVlZCB0byBhdm9p
ZCB1c2luZyB0aGUgY2xpcCByZWN0YW5nbGVzLgogICAgICAgICAgICAgICAgIC8vIE90aGVyd2lz
ZSwgaWYgZm9yIGV4YW1wbGUgdGhpcyBsYXllciBoYXMgb3ZlcmZsb3c6aGlkZGVuLCBhIGRyb3Ag
c2hhZG93IHdpbGwgbm90IGNvbXB1dGUgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCB3ZSB3aWxsIHN0aWxsIGFwcGx5IHRoZSBjbGlwcGluZyBvbiB0aGUgZmluYWwgcmVu
ZGVyaW5nIG9mIHRoZSBmaWx0ZXIuCi0gICAgICAgICAgICAgICAgdXNlQ2xpcFJlY3QgPSAhZmls
dGVyKCktPmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOworICAgICAgICAgICAgICAgIHVzZUNs
aXBSZWN0ID0gIWZpbHRlclJlbmRlcmVyKCktPmhhc0ZpbHRlclRoYXRNb3Zlc1BpeGVscygpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDg1NCwyMCArNDg2OSwzMSBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVSZWZsZWN0aW9uU3R5bGUoKQogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU9yUmVtb3ZlRmlsdGVyRWZmZWN0KCkK
IHsKLSAgICBpZiAocGFpbnRzV2l0aEZpbHRlcnMoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5m
aWx0ZXIoKS5zaXplKCkpIHsKLSAgICAgICAgaWYgKCFtX2ZpbHRlcikgewotICAgICAgICAgICAg
bV9maWx0ZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6Y3JlYXRlKHRoaXMpOwotICAgICAgICAg
ICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFn
ZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBBY2NlbGVyYXRl
ZCA6IFVuYWNjZWxlcmF0ZWQ7Ci0gICAgICAgICAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9k
ZShyZW5kZXJpbmdNb2RlKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBmaWx0ZXIg
ZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBh
dHRlbXB0IHRvCi0gICAgICAgIC8vIGdvIHRocm91Z2ggcmVndWxhciBwcm9jZXNzaW5nIChlLmcu
IGNvbXBvc2l0aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFueXRoaW5nLgotICAgICAgICBpZiAoIW1f
ZmlsdGVyLT5idWlsZChyZW5kZXJlcigpLT5kb2N1bWVudCgpLCByZW5kZXJlcigpLT5zdHlsZSgp
LT5maWx0ZXIoKSkpCi0gICAgICAgICAgICBtX2ZpbHRlciA9IDA7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9maWx0ZXIgPSAwOworICAgIGlmICghaGFzRmlsdGVyKCkpIHsKKyAgICAgICAgcmVt
b3ZlRmlsdGVySW5mb0lmTmVlZGVkKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKCFwYWludHNXaXRoRmlsdGVycygpKSB7CisgICAgICAgIC8vIERvbid0IGRlbGV0ZSB0
aGUgd2hvbGUgZmlsdGVyIGluZm8gaGVyZSwgYmVjYXVzZSB3ZSBtaWdodCB1c2UgaXQKKyAgICAg
ICAgLy8gZm9yIGxvYWRpbmcgQ1NTIHNoYWRlciBmaWxlcy4KKyAgICAgICAgaWYgKFJlbmRlckxh
eWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8oKSkKKyAgICAgICAg
ICAgIGZpbHRlckluZm8tPnNldFJlbmRlcmVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVySW5mbyA9IGVuc3VyZUZpbHRl
ckluZm8oKTsKKyAgICBpZiAoIWZpbHRlckluZm8tPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpjcmVhdGUodGhpcyk7CisgICAgICAgIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSA9IHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWRG
aWx0ZXJzRW5hYmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkOworICAgICAgICBm
aWx0ZXJSZW5kZXJlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKKyAgICAgICAg
ZmlsdGVySW5mby0+c2V0UmVuZGVyZXIoZmlsdGVyUmVuZGVyZXIucmVsZWFzZSgpKTsKKyAgICB9
CisKKyAgICAvLyBJZiB0aGUgZmlsdGVyIGZhaWxzIHRvIGJ1aWxkLCByZW1vdmUgaXQgZnJvbSB0
aGUgbGF5ZXIuIEl0IHdpbGwgc3RpbGwgYXR0ZW1wdCB0bworICAgIC8vIGdvIHRocm91Z2ggcmVn
dWxhciBwcm9jZXNzaW5nIChlLmcuIGNvbXBvc2l0aW5nKSwgYnV0IG5ldmVyIGFwcGx5IGFueXRo
aW5nLgorICAgIGlmICghZmlsdGVySW5mby0+cmVuZGVyZXIoKS0+YnVpbGQocmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZmlsdGVyKCkpKQorICAgICAgICBmaWx0
ZXJJbmZvLT5zZXRSZW5kZXJlcigwKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6ZmlsdGVyTmVl
ZHNSZXBhaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggOWI3
YjJjNC4uY2JlNDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTQ0LDE0ICs0NCwxNiBAQAogI2lmbmRlZiBSZW5kZXJMYXllcl9oCiAjZGVmaW5lIFJlbmRlckxh
eWVyX2gKIAotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3RP
YnNlcnZlci5oIgotI2VuZGlmCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
T2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckZpbHRlckluZm8uaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC01NzYs
NyArNTc4LDIyIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgYm9vbCBw
YWludHNXaXRoRmlsdGVycygpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNGdWxsTGF5ZXJJbWFn
ZUZvckZpbHRlcnMoKSBjb25zdDsKLSAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogZmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7IH0KKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJl
ciogZmlsdGVyUmVuZGVyZXIoKSBjb25zdCAKKyAgICB7CisgICAgICAgIFJlbmRlckxheWVyRmls
dGVySW5mbyogZmlsdGVySW5mbyA9IHRoaXMtPmZpbHRlckluZm8oKTsKKyAgICAgICAgcmV0dXJu
IGZpbHRlckluZm8gPyBmaWx0ZXJJbmZvLT5yZW5kZXJlcigpIDogMDsKKyAgICB9CisgICAgCisg
ICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gaGFz
RmlsdGVySW5mbygpID8gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpmaWx0ZXJJbmZvRm9yUmVuZGVy
TGF5ZXIodGhpcykgOiAwOyB9CisgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBlbnN1cmVGaWx0
ZXJJbmZvKCkgeyByZXR1cm4gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpjcmVhdGVGaWx0ZXJJbmZv
Rm9yUmVuZGVyTGF5ZXJJZk5lZWRlZCh0aGlzKTsgfQorICAgIHZvaWQgcmVtb3ZlRmlsdGVySW5m
b0lmTmVlZGVkKCkgCisgICAgeworICAgICAgICBpZiAoaGFzRmlsdGVySW5mbygpKQorICAgICAg
ICAgICAgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvOjpyZW1vdmVGaWx0ZXJJbmZvRm9yUmVuZGVyTGF5
ZXIodGhpcyk7IAorICAgIH0KKyAgICAKKyAgICBib29sIGhhc0ZpbHRlckluZm8oKSBjb25zdCB7
IHJldHVybiBtX2hhc0ZpbHRlckluZm87IH0KKyAgICB2b2lkIHNldEhhc0ZpbHRlckluZm8oYm9v
bCBoYXNGaWx0ZXJJbmZvKSB7IG1faGFzRmlsdGVySW5mbyA9IGhhc0ZpbHRlckluZm87IH0KICNl
bmRpZgogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtODI1LDYgKzg0MiwxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gc2F2ZXMgYSBsb3Qgb2YgdGltZSB3aGVuIHNjcm9sbGluZyBvbiBhIHRhYmxl
LgogICAgIGJvb2wgbV9jYW5Ta2lwUmVwYWludFJlY3RzVXBkYXRlT25TY3JvbGwgOiAxOwogCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgIGJvb2wgbV9oYXNGaWx0ZXJJbmZvIDogMTsKKyNl
bmRpZgorCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG1fcmVuZGVyZXI7CiAKICAgICBSZW5k
ZXJMYXllciogbV9wYXJlbnQ7CkBAIC04ODUsMTEgKzkwNiw2IEBAIHByb3RlY3RlZDoKICAgICAK
ICAgICAvLyBNYXkgdWx0aW1hdGVseSBiZSBleHRlbmRlZCB0byBtYW55IHJlcGxpY2FzICh3aXRo
IHRoZWlyIG93biBwYWludCBvcmRlcikuCiAgICAgUmVuZGVyUmVwbGljYSogbV9yZWZsZWN0aW9u
OwotICAKLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVyPiBtX2ZpbHRlcjsKLSAgICBMYXlvdXRSZWN0IG1fZmlsdGVyUmVwYWludFJlY3Q7Ci0j
ZW5kaWYKICAgICAgICAgCiAgICAgLy8gUmVuZGVyZXJzIHRvIGhvbGQgb3VyIGN1c3RvbSBzY3Jv
bGwgY29ybmVyIGFuZCByZXNpemVyLgogICAgIFJlbmRlclNjcm9sbGJhclBhcnQqIG1fc2Nyb2xs
Q29ybmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
RmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDc5YzJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVySW5mby5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNs
dWRlICJSZW5kZXJMYXllckZpbHRlckluZm8uaCIKKworI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJl
bmRlcmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZW5kZXJMYXllckZpbHRlckluZm9NYXAqIFJlbmRlckxheWVyRmlsdGVySW5mbzo6c19m
aWx0ZXJNYXAgPSAwOworCitSZW5kZXJMYXllckZpbHRlckluZm8qIFJlbmRlckxheWVyRmlsdGVy
SW5mbzo6ZmlsdGVySW5mb0ZvclJlbmRlckxheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikK
K3sKKyAgICBpZiAoIXNfZmlsdGVyTWFwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBSZW5kZXJM
YXllckZpbHRlckluZm9NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBzX2ZpbHRlck1hcC0+ZmluZChsYXll
cik7CisgICAgcmV0dXJuIChpdGVyICE9IHNfZmlsdGVyTWFwLT5lbmQoKSkgPyBpdGVyLT5zZWNv
bmQgOiAwOworfQorCitSZW5kZXJMYXllckZpbHRlckluZm8qIFJlbmRlckxheWVyRmlsdGVySW5m
bzo6Y3JlYXRlRmlsdGVySW5mb0ZvclJlbmRlckxheWVySWZOZWVkZWQoUmVuZGVyTGF5ZXIqIGxh
eWVyKQoreworICAgIGlmICghc19maWx0ZXJNYXApCisgICAgICAgIHNfZmlsdGVyTWFwID0gbmV3
IFJlbmRlckxheWVyRmlsdGVySW5mb01hcCgpOworICAgIAorICAgIFJlbmRlckxheWVyRmlsdGVy
SW5mb01hcDo6aXRlcmF0b3IgaXRlciA9IHNfZmlsdGVyTWFwLT5maW5kKGxheWVyKTsKKyAgICBp
ZiAoaXRlciAhPSBzX2ZpbHRlck1hcC0+ZW5kKCkpIHsKKyAgICAgICAgQVNTRVJUKGxheWVyLT5o
YXNGaWx0ZXJJbmZvKCkpOworICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgIH0KKyAg
ICAKKyAgICBSZW5kZXJMYXllckZpbHRlckluZm8qIGZpbHRlciA9IG5ldyBSZW5kZXJMYXllckZp
bHRlckluZm8obGF5ZXIpOworICAgIHNfZmlsdGVyTWFwLT5zZXQobGF5ZXIsIGZpbHRlcik7Cisg
ICAgbGF5ZXItPnNldEhhc0ZpbHRlckluZm8odHJ1ZSk7CisgICAgcmV0dXJuIGZpbHRlcjsKK30K
Kwordm9pZCBSZW5kZXJMYXllckZpbHRlckluZm86OnJlbW92ZUZpbHRlckluZm9Gb3JSZW5kZXJM
YXllcihSZW5kZXJMYXllciogbGF5ZXIpCit7CisgICAgaWYgKCFzX2ZpbHRlck1hcCkKKyAgICAg
ICAgcmV0dXJuOworICAgIFJlbmRlckxheWVyRmlsdGVySW5mbyogZmlsdGVyID0gc19maWx0ZXJN
YXAtPnRha2UobGF5ZXIpOworICAgIGlmIChzX2ZpbHRlck1hcC0+aXNFbXB0eSgpKSB7CisgICAg
ICAgIGRlbGV0ZSBzX2ZpbHRlck1hcDsKKyAgICAgICAgc19maWx0ZXJNYXAgPSAwOworICAgIH0K
KyAgICBpZiAoIWZpbHRlcikgeworICAgICAgICBBU1NFUlQoIWxheWVyLT5oYXNGaWx0ZXJJbmZv
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxheWVyLT5zZXRIYXNGaWx0ZXJJbmZv
KGZhbHNlKTsKKyAgICBkZWxldGUgZmlsdGVyOworfQorCitSZW5kZXJMYXllckZpbHRlckluZm86
OlJlbmRlckxheWVyRmlsdGVySW5mbyhSZW5kZXJMYXllciogbGF5ZXIpCisgICAgOiBtX2xheWVy
KGxheWVyKQoreworfQorCitSZW5kZXJMYXllckZpbHRlckluZm86On5SZW5kZXJMYXllckZpbHRl
ckluZm8oKQoreworICAgIC8vIEtlZXBpbmcgdGhlIGRlc3RydWN0b3IgaGVyZSBiZWNhdXNlIHRo
ZXJlJ3MgYSByZWYgdG8gRmlsdGVyRWZmZWN0UmVuZGVyZXIgdGhhdCBtaWdodCBnZXQgZGVsZXRl
ZC4KK30KKwordm9pZCBSZW5kZXJMYXllckZpbHRlckluZm86OnNldFJlbmRlcmVyKFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0UmVuZGVyZXI+IHJlbmRlcmVyKQoreyAKKyAgICBtX3JlbmRlcmVyID0g
cmVuZGVyZXI7IAorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM2ZjAy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlckluZm8uaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJlbmRlckxheWVyRmlsdGVySW5mb19oCisjZGVmaW5lIFJlbmRlckxheWVy
RmlsdGVySW5mb19oCisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSAiTGF5b3V0
VHlwZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXI7CitjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNz
IFJlbmRlckxheWVyRmlsdGVySW5mbzsKKwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckxh
eWVyKiwgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKj4gUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwOwor
ICAgIAorY2xhc3MgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvRm9yUmVuZGVyTGF5ZXIoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKKyAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvKiBjcmVhdGVGaWx0
ZXJJbmZvRm9yUmVuZGVyTGF5ZXJJZk5lZWRlZChSZW5kZXJMYXllciopOworICAgIHN0YXRpYyB2
b2lkIHJlbW92ZUZpbHRlckluZm9Gb3JSZW5kZXJMYXllcihSZW5kZXJMYXllciopOworCisgICAg
Y29uc3QgTGF5b3V0UmVjdCYgZGlydHlTb3VyY2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXJ0
eVNvdXJjZVJlY3Q7IH0KKyAgICB2b2lkIGFkZERpcnR5U291cmNlUmVjdChjb25zdCBMYXlvdXRS
ZWN0JiByZWN0KSB7IG1fZGlydHlTb3VyY2VSZWN0LnVuaXRlKHJlY3QpOyB9CisgICAgdm9pZCBy
ZXNldERpcnR5U291cmNlUmVjdCgpIHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7
IH0KKyAgICAKKyAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogcmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRSZW5kZXJlcihQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdFJlbmRlcmVyPik7Citwcml2YXRlOgorICAgIFJlbmRlckxheWVyRmlsdGVy
SW5mbyhSZW5kZXJMYXllciopOworICAgIH5SZW5kZXJMYXllckZpbHRlckluZm8oKTsKKyAgICAK
KyAgICBSZW5kZXJMYXllciogbV9sYXllcjsKKyAgICAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
UmVuZGVyZXI+IG1fcmVuZGVyZXI7CisgICAgTGF5b3V0UmVjdCBtX2RpcnR5U291cmNlUmVjdDsK
KyAgICAKKyAgICBzdGF0aWMgUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvTWFwKiBzX2ZpbHRlck1hcDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShDU1NfRklM
VEVSUykKKworI2VuZGlmIC8vIFJlbmRlckxheWVyRmlsdGVySW5mb19oCg==
</data>
<flag name="review"
          id="143828"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="143829"
          type_id="3"
          status="-"
          setter="achicu"
    />
          </attachment>
      

    </bug>

</bugzilla>