<?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>37741</bug_id>
          
          <creation_ts>2010-04-16 18:24:12 -0700</creation_ts>
          <short_desc>Clean up RenderPart/RenderPartObject/RenderFrame/RenderEmbeddedObject</short_desc>
          <delta_ts>2010-04-20 11:24:05 -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>All</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>37864</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alex</cc>
    
    <cc>cmarrin</cc>
    
    <cc>eric</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213547</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-16 18:24:12 -0700</bug_when>
    <thetext>The class hierarchy for these renders is whacko:

           RenderPart
                |
       -------------------
      |                   |
      v                   V
RenderPartObject       RenderFrame
      |
      v
RenderEmbeddedObject

RenderEmbeddedObject is instantiated for plugins.
RenderFrame is instantiated for &lt;frame&gt;
RenderPartObject is instantiated for &lt;iframe&gt;

&lt;frame&gt; and &lt;iframe&gt; share some code in RenderPart, namely RenderPart::layoutWithFlattening(), but this does not apply to plug-ins. Also, most of the code in RenderPartObject only applies to iframes.

I think it should be:

           RenderPart
                |
       ----------------------
      |                      |
      v                      V
RenderEmbeddedObject    RenderFrameBase
                             |
                     ------------------
                    |                  |
                RenderFrame        RenderIFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214391</commentid>
    <comment_count>1</comment_count>
      <attachid>53752</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-19 17:54:05 -0700</bug_when>
    <thetext>Created attachment 53752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214399</commentid>
    <comment_count>2</comment_count>
      <attachid>53752</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-19 18:01:27 -0700</bug_when>
    <thetext>Comment on attachment 53752
Patch

&gt; -// Renderer for embeds and objects.
&gt; +// Renderer for embeds and objects (whose content may not necessarily be rendered via a plug-in, e.g. &lt;embed src=&quot;foo.html&gt;).

There&apos;s a missing close quote mark here.

I think this comment would be clearer as a second sentence. And I think it would be clearer if you could word it as a positive rather than a negative.

&gt; + * Copyright (C) 2010 Apple Computer, Inc.  All rights reserved.

Should be &quot;Copyright (C) 2010 Apple Inc. All rights reserved.&quot; with one space and no &quot;Computer ,&quot;.

&gt; +using namespace HTMLNames;
&gt; +    

I noticed a trailing space here.

&gt; +RenderFrameBase::~RenderFrameBase()
&gt; +{
&gt; +}

Can we just leave this out and let the compiler generate it?

&gt; +void RenderFrameBase::layoutWithFlattening(bool fixedWidth, bool fixedHeight)

It would be nice to use &quot;svn copy&quot; so that we can see the history of this code instead of it seeming all new.

&gt; +class RenderFrameBase : public RenderPart {
&gt; +public:
&gt; +    RenderFrameBase(Element*);

Constructor should be protected.

&gt; +    virtual ~RenderFrameBase();

This destructor should just be omitted.

&gt; +    void layoutWithFlattening(bool fixedWidth, bool fixedHeight);

This function should be protected rather than public, I think.

&gt; +RenderIFrame::~RenderIFrame()
&gt; +{
&gt; +}

Same comment as above. Please omit this.

&gt; +// Base class for RenderFrame and RenderIFrame
&gt; +class RenderIFrame : public RenderFrameBase {

That comment is wrong.

&gt; +public:
&gt; +    RenderIFrame(Element*);
&gt; +    virtual ~RenderIFrame();

You should omit this destructor.

&gt; +    virtual void calcHeight();
&gt; +    virtual void calcWidth();
&gt; +
&gt; +    virtual void layout();

Can these virtual functions all be private?

review+ but I&apos;d like to see a version that preserves history and keeps things more private as mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214465</commentid>
    <comment_count>3</comment_count>
      <attachid>53752</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-19 21:11:10 -0700</bug_when>
    <thetext>Comment on attachment 53752
Patch

Landed in http://trac.webkit.org/changeset/57866 with svn moves, and comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214467</commentid>
    <comment_count>4</comment_count>
      <attachid>53768</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-19 21:19:57 -0700</bug_when>
    <thetext>Created attachment 53768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214468</commentid>
    <comment_count>5</comment_count>
      <attachid>53768</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-19 21:21:16 -0700</bug_when>
    <thetext>Comment on attachment 53768
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214470</commentid>
    <comment_count>6</comment_count>
      <attachid>53768</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-19 21:23:31 -0700</bug_when>
    <thetext>Comment on attachment 53768
Patch

http://trac.webkit.org/changeset/57867</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214476</commentid>
    <comment_count>7</comment_count>
      <attachid>53770</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-19 21:55:19 -0700</bug_when>
    <thetext>Created attachment 53770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214477</commentid>
    <comment_count>8</comment_count>
      <attachid>53770</attachid>
    <who name="">mitz</who>
    <bug_when>2010-04-19 22:03:32 -0700</bug_when>
    <thetext>Comment on attachment 53770
Patch

&gt; +inline RenderFrameBase* toRenderFrameBase(RenderObject* object)
&gt; +{
&gt; +    ASSERT(!object || object-&gt;isRenderFrameBase());
&gt; +    return static_cast&lt;RenderFrameBase*&gt;(object);
&gt; +}

Typically there’s also a const version of these.

&gt; +
&gt; +// This will catch anyone doing an unnecessary cast.
&gt; +void toRenderPart(const RenderFrameBase*);

This is should be toRenderFrameBase(const RenderFrameBase*)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214667</commentid>
    <comment_count>9</comment_count>
      <attachid>53770</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-20 08:06:53 -0700</bug_when>
    <thetext>Comment on attachment 53770
Patch

http://trac.webkit.org/changeset/57892</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214694</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-20 08:56:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57892 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214744</commentid>
    <comment_count>11</comment_count>
      <attachid>53770</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-20 10:27:42 -0700</bug_when>
    <thetext>Comment on attachment 53770
Patch

This patch was backed out, since it causes an assertion. Frame::ownerRenderer() can be a RenderEmbeddedObject for an &lt;object&gt; containing HTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214767</commentid>
    <comment_count>12</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-04-20 10:51:19 -0700</bug_when>
    <thetext>The patch also caused 4 tests to launch an assertion in the gtk+ bots, the stacks are all like this one:

http://webkit-bots.igalia.com/amd64/svn_57893.core-when_1271781421-_-who_DumpRenderTree-_-why_11.10660.trace.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214784</commentid>
    <comment_count>13</comment_count>
      <attachid>53850</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-20 11:15:41 -0700</bug_when>
    <thetext>Created attachment 53850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214788</commentid>
    <comment_count>14</comment_count>
      <attachid>53850</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 11:18:58 -0700</bug_when>
    <thetext>Comment on attachment 53850
Patch

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214792</commentid>
    <comment_count>15</comment_count>
      <attachid>53850</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-20 11:23:48 -0700</bug_when>
    <thetext>Comment on attachment 53850
Patch

http://trac.webkit.org/changeset/57900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214794</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-04-20 11:24:05 -0700</bug_when>
    <thetext>I think this will do for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53752</attachid>
            <date>2010-04-19 17:54:05 -0700</date>
            <delta_ts>2010-04-19 21:11:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37741-20100419175404.patch</filename>
            <type>text/plain</type>
            <size>31942</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA0ZDM4NDg5Li44YWI1MTM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC01NzMsOCArNTczLDEwIEBAIExPQ0FMX1NSQ19GSUxFUyA6
PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCXJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAg
XAogCXJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcCBcCiAJcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmNwcCBcCisJcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgXAogCXJlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBc
CisJcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgXAogCXJlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAgXAogCXJlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwIFwKIAlyZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcxMTZkODMuLmI4OTM1MDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAK
KzIwMTAtMDQtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgUmVu
ZGVyUGFydC9SZW5kZXJQYXJ0T2JqZWN0L1JlbmRlckZyYW1lL1JlbmRlckVtYmVkZGVkT2JqZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0MQor
CisgICAgICAgIEFkZCBhIG5ldyByZW5kZXJlciBmb3IgaWZyYW1lcywgbmFtZWQgUmVuZGVySUZy
YW1lLiBBZGQgYSBuZXcgc2hhcmVkIGJhc2UgY2xhc3MKKyAgICAgICAgYmV0d2VlbiB0aGlzIGFu
ZCBSZW5kZXJGcmFtZSwgY2FsbGVkIFJlbmRlckZyYW1lQmFzZSAoZm9sbG93aW5nIHRoZSBleGlz
dGluZyBIVE1MRnJhbWVFbGVtZW50QmFzZSksCisgICAgICAgIGFuZCBtb3ZlIGNvZGUgZnJvbSBS
ZW5kZXJQYXJ0IGFuZCBSZW5kZXJQYXJ0T2JqZWN0IGludG8gdGhlc2UgbmV3IGNsYXNzZXMuCisg
ICAgICAgIAorICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gZnVuY3Rpb25hbGl0eSBkaWZmZXJl
bmNlIHdpdGggdGhpcyBjaGFuZ2UsIHNvIG5vIG5ldyB0ZXN0cy4KKyAgICAgICAgCisgICAgICAg
IEZpeGluZyB1cCByZW5kZXJlciBuYW1lcyBpbiB0aGUgbGF5b3V0IHRlc3RzIHdpbGwgYmUgZG9u
ZSBpbiBhIGxhdGVyIHBhc3MuCisgICAgICAgIAorICAgICAgICBGaXggYnVpbGQgc3lzdGVtcyB0
byBpbmNsdWRlIHRoZSBuZXcgZmlsZXMuCisgICAgICAgIAorICAgICAgICAqIEFuZHJvaWQubWs6
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
RnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lOjpSZW5kZXJGcmFtZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpSZW5k
ZXJGcmFtZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjp+UmVuZGVy
RnJhbWVCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6bGF5b3V0V2l0
aEZsYXR0ZW5pbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDogQWRk
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySUZyYW1lOjp+UmVuZGVySUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cklGcmFtZTo6Y2FsY0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmNh
bGNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJRnJhbWU6OmxheW91dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlcklGcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklG
cmFtZTo6cmVuZGVyTmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclBhcnRPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0
Lmg6CisKIDIwMTAtMDQtMTkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQ2hyb21pdW0gYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYjM1
YWJjNC4uNjRiOTgwMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xODQ4LDEwICsxODQ4LDE0IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBcCiAJV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZS5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIFwKKwlX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5o
IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBcCiAJV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
RnJhbWUuY3BwIFwKKwlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAJV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQu
Y3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNTkzMzY3Ny4uOTY2MjIzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTMwOTYsMTAgKzMwOTYsMTQgQEAK
ICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyRnJhbWUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5j
cHAnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaCcs
CisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAnLAorICAgICAgICAgICAg
J3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlckltYWdlLmgnLAogICAg
ICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJJbWFnZUdlbmVyYXRlZENvbnRlbnQuY3BwJywKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IDUyM2FhZGQuLjZlZjZmOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTI0LDggKzkyNCwxMCBAQCBTT1VSQ0VTICs9IFwKICAg
ICByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIFwKICAgICByZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwIFwK
KyAgICByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
ckZyYW1lU2V0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIFwKKyAg
ICByZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgXAog
ICAgIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIFwKQEAgLTE2OTAsOCArMTY5MiwxMCBAQCBI
RUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckZyYW1l
LmggXAorICAgIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBcCiAgICAgcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmggXAorICAg
IHJlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBcCiAgICAgcmVuZGVyaW5nL1JlbmRlckltYWdlR2Vu
ZXJhdGVkQ29udGVudC5oIFwKICAgICByZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBcCiAgICAgcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CmluZGV4IDVjZDQxODUuLmI0MWVhZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtMjc1NTMsNiArMjc1NTMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckZyYW1lQmFzZS5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxy
ZW5kZXJpbmdcUmVuZGVyRnJhbWVCYXNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyRnJhbWVTZXQuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTI3NTY5LDYgKzI3NTc3LDE0IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5k
ZXJJRnJhbWUuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlcklGcmFtZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXFJlbmRlckltYWdl
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDhhZWU4MDUuLmE4NWNjZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDIsNiArMjAyLDEwIEBACiAJCTBGQ0YzMzJE
MEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2Vi
VGlsZWRMYXllci5oICovOyB9OwogCQkwRkNGMzMyRTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNG
MzMyQTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJGMEYy
QjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMkIwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLmgg
Ki87IH07CisJCTBGRDMwODBFMTE3Q0Y3RTcwMEE3OTFGNyAvKiBSZW5kZXJGcmFtZUJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMzA4MEMx
MTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5jcHAgKi87IH07CisJCTBGRDMwODBG
MTE3Q0Y3RTcwMEE3OTFGNyAvKiBSZW5kZXJGcmFtZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDMwODBEMTE3Q0Y3RTcwMEE3OTFGNyAvKiBS
ZW5kZXJGcmFtZUJhc2UuaCAqLzsgfTsKKwkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5MUY3IC8qIFJl
bmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQzMDhEMzExN0QxNjg0MDBBNzkxRjcgLyogUmVuZGVySUZyYW1lLmNwcCAqLzsgfTsK
KwkJMEZEMzA4RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMzA4RDQxMTdEMTY4NDAwQTc5
MUY3IC8qIFJlbmRlcklGcmFtZS5oICovOyB9OwogCQkwRkQ3MjM4MjBFQzhCRDkzMDBDQTVERDcg
LyogRmxvYXRRdWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQ3MjM4MDBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZENzIzODMwRUM4QkQ5MzAw
Q0E1REQ3IC8qIEZsb2F0UXVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkQ3MjM4MTBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmNwcCAq
LzsgfTsKIAkJMEZGNTAyNUIxMDJCQTkwMTAwNjZGMzlBIC8qIERPTU1lZGlhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY1MDI1OTEwMkJBOTAxMDA2
NkYzOUEgLyogRE9NTWVkaWEuaCAqLzsgfTsKQEAgLTU1NzUsNiArNTU3OSwxMCBAQAogCQkwRkNG
MzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJUaWxlZExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGQ0YzMzJBMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkxheWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTGF5ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEZEMzA4MEMxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1l
QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGcmFt
ZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkQzMDgwRDExN0NGN0U3
MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlckZyYW1lQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RkQzMDhEMzExN0QxNjg0MDBBNzkxRjcgLyogUmVuZGVySUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcklGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGRDMwOEQ0MTE3RDE2ODQwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVySUZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcyMzgwMEVDOEJEOTMwMENBNURENyAvKiBGbG9h
dFF1YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRRdWFkLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDcyMzgxMEVDOEJEOTMwMENBNURENyAvKiBG
bG9hdFF1YWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRR
dWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNTAyNTkxMDJCQTkwMTAw
NjZGMzlBIC8qIERPTU1lZGlhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TU1lZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTg5MiwxMCArMTU5MDAs
MTQgQEAKIAkJCQk4NTNDQTlFQjBBRUVDNjNDMDAyMzcyREMgLyogUmVuZGVyRm9yZWlnbk9iamVj
dC5oICovLAogCQkJCUE4NzFERUNDMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5jcHAg
Ki8sCiAJCQkJQTg3MURFQ0IwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lLmggKi8sCisJ
CQkJMEZEMzA4MEMxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5jcHAgKi8sCisJ
CQkJMEZEMzA4MEQxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5oICovLAogCQkJ
CUE4NzFERUNBMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZVNldC5jcHAgKi8sCiAJCQkJ
QTg3MURFQzkwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lU2V0LmggKi8sCiAJCQkJQkNF
QTQ4MkEwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckhUTUxDYW52YXMuY3BwICovLAogCQkJCUJD
RUE0ODJCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJIVE1MQ2FudmFzLmggKi8sCisJCQkJMEZE
MzA4RDMxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgKi8sCisJCQkJMEZEMzA4
RDQxMTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovLAogCQkJCUJDRUE0ODM2MDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5jcHAgKi8sCiAJCQkJQkNFQTQ4MzcwOTdEOTMw
MjAwOTRDOUU0IC8qIFJlbmRlckltYWdlLmggKi8sCiAJCQkJQkNCNEY4OTIwREIyOEU1MzAwMzkx
MzlCIC8qIFJlbmRlckltYWdlR2VuZXJhdGVkQ29udGVudC5jcHAgKi8sCkBAIC0xODg2NSw2ICsx
ODg3Nyw4IEBACiAJCQkJODk1MjUzREQxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk1MjUzREYxMTZDNEYwNjAwQ0FCRjAwIC8qIEZpbGVU
aHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUY0MThDRjExNzk2NzhDMDA5RDExMkMg
LyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDMwODBGMTE3Q0Y3
RTcwMEE3OTFGNyAvKiBSZW5kZXJGcmFtZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGRDMw
OEQ2MTE3RDE2ODUwMEE3OTFGNyAvKiBSZW5kZXJJRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MjExMDEsNiArMjExMTUsOCBAQAogCQkJCTlGQTM3RUZDMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1Nj
cmlwdFByb2ZpbGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5NTI1M0RDMTE2QzRFRjUw
MENBQkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VGNDE4
Q0UxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGRDMwODBFMTE3Q0Y3RTcwMEE3OTFGNyAvKiBSZW5kZXJGcmFtZUJhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEZEMzA4RDUxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDgw
MjFiMjkuLmNjZTM5ZGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIlJlbmRlclBhcnRPYmpl
Y3QuaCIKKyNpbmNsdWRlICJSZW5kZXJJRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBIVE1MSUZyYW1lRWxlbWVudDo6cmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiAKIFJlbmRlck9iamVjdCogSFRNTElGcmFtZUVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewot
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJQYXJ0T2JqZWN0KHRoaXMpOworICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJJRnJhbWUodGhpcyk7CiB9CiAKIHZvaWQgSFRNTElGcmFtZUVs
ZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5oCmluZGV4IDY2MDk1YzcuLjM2NTRlODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIFJlbmRlcmVyIGZvciBlbWJlZHMgYW5kIG9iamVjdHMuCisvLyBSZW5kZXJl
ciBmb3IgZW1iZWRzIGFuZCBvYmplY3RzICh3aG9zZSBjb250ZW50IG1heSBub3QgbmVjZXNzYXJp
bHkgYmUgcmVuZGVyZWQgdmlhIGEgcGx1Zy1pbiwgZS5nLiA8ZW1iZWQgc3JjPSJmb28uaHRtbD4p
LgogY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMgUmVuZGVyUGFydE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoRWxlbWVudCopOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWUuY3BwCmluZGV4IDVmODc0MTcuLmIwNWVhMzkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVu
ZGVyRnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQqIGZyYW1lKQotICAgIDogUmVu
ZGVyUGFydChmcmFtZSkKKyAgICA6IFJlbmRlckZyYW1lQmFzZShmcmFtZSkKIHsKICAgICBzZXRJ
bmxpbmUoZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmgKaW5kZXggNTg3YThiZC4uYzg5
NWEwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5oCkBAIC0yMywxNCArMjMsMTQgQEAKICNpZm5k
ZWYgUmVuZGVyRnJhbWVfaAogI2RlZmluZSBSZW5kZXJGcmFtZV9oCiAKLSNpbmNsdWRlICJSZW5k
ZXJQYXJ0LmgiCisjaW5jbHVkZSAiUmVuZGVyRnJhbWVCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhbWVTZXQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRnJhbWVFbGVt
ZW50OwogCi1jbGFzcyBSZW5kZXJGcmFtZSA6IHB1YmxpYyBSZW5kZXJQYXJ0IHsKK2NsYXNzIFJl
bmRlckZyYW1lIDogcHVibGljIFJlbmRlckZyYW1lQmFzZSB7CiBwdWJsaWM6CiAgICAgUmVuZGVy
RnJhbWUoSFRNTEZyYW1lRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWYyZjYxCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMCww
ICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUmVuZGVyRnJhbWVCYXNlLmgiCisKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworICAgIAor
UmVuZGVyRnJhbWVCYXNlOjpSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCogZWxlbWVudCkKKyAgICA6
IFJlbmRlclBhcnQoZWxlbWVudCkKK3sKK30KKworUmVuZGVyRnJhbWVCYXNlOjp+UmVuZGVyRnJh
bWVCYXNlKCkKK3sKK30KKwordm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVu
aW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhlaWdodCkKK3sKKyAgICBGcmFtZVZpZXcq
IGNoaWxkRnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KCkpOworICAg
IFJlbmRlclZpZXcqIGNoaWxkUm9vdCA9IGNoaWxkRnJhbWVWaWV3ID8gc3RhdGljX2Nhc3Q8UmVu
ZGVyVmlldyo+KGNoaWxkRnJhbWVWaWV3LT5mcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkgOiAw
OworCisgICAgLy8gRG8gbm90IGV4cGFuZCBmcmFtZXMgd2hpY2ggaGFzIHplcm8gd2lkdGggb3Ig
aGVpZ2h0CisgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSB8fCAhY2hpbGRSb290KSB7Cisg
ICAgICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CisgICAgICAgIGlmIChjaGlsZEZyYW1lVmll
dykKKyAgICAgICAgICAgIGNoaWxkRnJhbWVWaWV3LT5sYXlvdXQoKTsKKyAgICAgICAgc2V0TmVl
ZHNMYXlvdXQoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gbmVlZCB0
byB1cGRhdGUgdG8gY2FsY3VsYXRlIG1pbi9tYXggY29ycmVjdGx5CisgICAgdXBkYXRlV2lkZ2V0
UG9zaXRpb24oKTsKKyAgICBpZiAoY2hpbGRSb290LT5wcmVmV2lkdGhzRGlydHkoKSkKKyAgICAg
ICAgY2hpbGRSb290LT5jYWxjUHJlZldpZHRocygpOworCisgICAgLy8gaWYgc2Nyb2xsYmFycyBh
cmUgb2ZmLCBhbmQgdGhlIHdpZHRoIG9yIGhlaWdodCBhcmUgZml4ZWQKKyAgICAvLyB3ZSBvYmV5
IHRoZW0gYW5kIGRvIG5vdCBleHBhbmQuIFdpdGggZnJhbWUgZmxhdHRlbmluZworICAgIC8vIG5v
IHN1YmZyYW1lIG11Y2ggZXZlciBiZWNvbWUgc2Nyb2xsYWJsZS4KKworICAgIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihu
b2RlKCkpOworICAgIGJvb2wgaXNTY3JvbGxhYmxlID0gZWxlbWVudC0+c2Nyb2xsaW5nTW9kZSgp
ICE9IFNjcm9sbGJhckFsd2F5c09mZjsKKworICAgIC8vIGNvbnNpZGVyIGlmcmFtZSBpbnNldCBi
b3JkZXIKKyAgICBpbnQgaEJvcmRlciA9IGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7Cisg
ICAgaW50IHZCb3JkZXIgPSBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpOworCisgICAgLy8g
bWFrZSBzdXJlIG1pbmltdW0gcHJlZmVycmVkIHdpZHRoIGlzIGVuZm9yY2VkCisgICAgaWYgKGlz
U2Nyb2xsYWJsZSB8fCAhZml4ZWRXaWR0aCkgeworICAgICAgICBzZXRXaWR0aChtYXgod2lkdGgo
KSwgY2hpbGRSb290LT5taW5QcmVmV2lkdGgoKSArIGhCb3JkZXIpKTsKKyAgICAgICAgLy8gdXBk
YXRlIGFnYWluIHRvIHBhc3MgdGhlIG5ldyB3aWR0aCB0byB0aGUgY2hpbGQgZnJhbWUKKyAgICAg
ICAgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgY2hpbGRGcmFtZVZpZXctPmxheW91
dCgpOworICAgIH0KKworICAgIC8vIGV4cGFuZCB0aGUgZnJhbWUgYnkgc2V0dGluZyBmcmFtZSBo
ZWlnaHQgPSBjb250ZW50IGhlaWdodAorICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWZpeGVkSGVp
Z2h0IHx8IGNoaWxkUm9vdC0+aXNGcmFtZVNldCgpKQorICAgICAgICBzZXRIZWlnaHQobWF4KGhl
aWdodCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSArIHZCb3JkZXIpKTsKKyAg
ICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFmaXhlZFdpZHRoIHx8IGNoaWxkUm9vdC0+aXNGcmFtZVNl
dCgpKQorICAgICAgICBzZXRXaWR0aChtYXgod2lkdGgoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRl
bnRzV2lkdGgoKSArIGhCb3JkZXIpKTsKKworICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CisK
KyAgICBBU1NFUlQoIWNoaWxkRnJhbWVWaWV3LT5sYXlvdXRQZW5kaW5nKCkpOworICAgIEFTU0VS
VCghY2hpbGRSb290LT5uZWVkc0xheW91dCgpKTsKKyAgICBBU1NFUlQoIWNoaWxkUm9vdC0+Zmly
c3RDaGlsZCgpIHx8ICFjaGlsZFJvb3QtPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpIHx8ICFj
aGlsZFJvb3QtPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5uZWVkc0xheW91dCgpKTsKKwor
ICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDFiODZlCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBSZW5kZXJGcmFtZUJhc2Vf
aAorI2RlZmluZSBSZW5kZXJGcmFtZUJhc2VfaAorCisjaW5jbHVkZSAiUmVuZGVyUGFydE9iamVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEJhc2UgY2xhc3MgZm9yIFJlbmRlckZy
YW1lIGFuZCBSZW5kZXJJRnJhbWUKK2NsYXNzIFJlbmRlckZyYW1lQmFzZSA6IHB1YmxpYyBSZW5k
ZXJQYXJ0IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCopOworICAgIHZp
cnR1YWwgflJlbmRlckZyYW1lQmFzZSgpOworCisgICAgdm9pZCBsYXlvdXRXaXRoRmxhdHRlbmlu
Zyhib29sIGZpeGVkV2lkdGgsIGJvb2wgZml4ZWRIZWlnaHQpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUmVuZGVyRnJhbWVCYXNlX2gKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNTE2NzIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCkBA
IC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIENvbXB1dGVy
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVuZGVySUZyYW1lLmgiCisKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNp
bmNsdWRlICJTZXR0aW5ncy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisgICAgCitSZW5kZXJJRnJhbWU6OlJlbmRlcklGcmFtZShFbGVtZW50
KiBlbGVtZW50KQorICAgIDogUmVuZGVyRnJhbWVCYXNlKGVsZW1lbnQpCit7Cit9CisKK1JlbmRl
cklGcmFtZTo6flJlbmRlcklGcmFtZSgpCit7Cit9CisKK3ZvaWQgUmVuZGVySUZyYW1lOjpjYWxj
SGVpZ2h0KCkKK3sKKyAgICBSZW5kZXJQYXJ0OjpjYWxjSGVpZ2h0KCk7CisgICAgaWYgKCFmbGF0
dGVuRnJhbWUoKSkKKyAgICAgICAgIHJldHVybjsKKworICAgIEhUTUxJRnJhbWVFbGVtZW50KiBm
cmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBib29s
IGlzU2Nyb2xsYWJsZSA9IGZyYW1lLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlz
T2ZmOworCisgICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAhc3R5bGUoKS0+aGVpZ2h0KCkuaXNGaXhl
ZCgpKSB7CisgICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+
KHdpZGdldCgpKTsKKyAgICAgICAgaW50IGJvcmRlciA9IGJvcmRlclRvcCgpICsgYm9yZGVyQm90
dG9tKCk7CisgICAgICAgIHNldEhlaWdodChtYXgoaGVpZ2h0KCksIHZpZXctPmNvbnRlbnRzSGVp
Z2h0KCkgKyBib3JkZXIpKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVySUZyYW1lOjpjYWxjV2lk
dGgoKQoreworICAgIFJlbmRlclBhcnQ6OmNhbGNXaWR0aCgpOworICAgIGlmICghZmxhdHRlbkZy
YW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEhUTUxJRnJhbWVFbGVtZW50KiBmcmFtZSA9
IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBib29sIGlzU2Ny
b2xsYWJsZSA9IGZyYW1lLT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwor
CisgICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAhc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCkpIHsK
KyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0
KCkpOworICAgICAgICBpbnQgYm9yZGVyID0gYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsK
KyAgICAgICAgc2V0V2lkdGgobWF4KHdpZHRoKCksIHZpZXctPmNvbnRlbnRzV2lkdGgoKSArIGJv
cmRlcikpOworICAgIH0KK30KKworYm9vbCBSZW5kZXJJRnJhbWU6OmZsYXR0ZW5GcmFtZSgpCit7
CisgICAgaWYgKCFub2RlKCkgfHwgIW5vZGUoKS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBIVE1MSUZyYW1lRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKKyAgICBib29sIGlzU2Nyb2xs
YWJsZSA9IGVsZW1lbnQtPnNjcm9sbGluZ01vZGUoKSAhPSBTY3JvbGxiYXJBbHdheXNPZmY7CisK
KyAgICBpZiAoIWlzU2Nyb2xsYWJsZSAmJiBzdHlsZSgpLT53aWR0aCgpLmlzRml4ZWQoKQorICAg
ICAgICAmJiBzdHlsZSgpLT5oZWlnaHQoKS5pc0ZpeGVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCk7Cisg
ICAgYm9vbCBlbmFibGVkID0gZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCktPmZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQoKTsKKworICAgIGlmICghZW5hYmxlZCB8fCAhZnJhbWUtPnBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIERvIG5vdCBmbGF0dGVuIG9mZnNjcmVlbiBpbm5lciBmcmFtZXMgZHVy
aW5nIGZyYW1lIGZsYXR0ZW5pbmcuCisgICAgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0
KCkuaW50ZXJzZWN0cyhJbnRSZWN0KEludFBvaW50KDAsIDApLCB2aWV3LT5jb250ZW50c1NpemUo
KSkpOworfQorCit2b2lkIFJlbmRlcklGcmFtZTo6bGF5b3V0KCkKK3sKKyAgICBBU1NFUlQobmVl
ZHNMYXlvdXQoKSk7CisKKyAgICBSZW5kZXJQYXJ0OjpjYWxjV2lkdGgoKTsKKyAgICBSZW5kZXJQ
YXJ0OjpjYWxjSGVpZ2h0KCk7CisKKyAgICBpZiAoZmxhdHRlbkZyYW1lKCkpIHsKKyAgICAgICAg
bGF5b3V0V2l0aEZsYXR0ZW5pbmcoc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCksIHN0eWxlKCkt
PmhlaWdodCgpLmlzRml4ZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZW5k
ZXJQYXJ0OjpsYXlvdXQoKTsKKworICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsKKyAgICBhZGRTaGFk
b3dPdmVyZmxvdygpOworCisgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOworfQorCit9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdi
OGYzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUu
aApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlbmRlcklG
cmFtZV9oCisjZGVmaW5lIFJlbmRlcklGcmFtZV9oCisKKyNpbmNsdWRlICJSZW5kZXJGcmFtZUJh
c2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBCYXNlIGNsYXNzIGZvciBSZW5kZXJG
cmFtZSBhbmQgUmVuZGVySUZyYW1lCitjbGFzcyBSZW5kZXJJRnJhbWUgOiBwdWJsaWMgUmVuZGVy
RnJhbWVCYXNlIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJJRnJhbWUoRWxlbWVudCopOworICAgIHZp
cnR1YWwgflJlbmRlcklGcmFtZSgpOworCisgICAgdmlydHVhbCB2b2lkIGNhbGNIZWlnaHQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY1dpZHRoKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0
KCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3QgeyByZXR1cm4gIlJlbmRlclBhcnRPYmplY3QiOyB9IC8vIEx5aW5nIGZvciBub3cgdG8gYXZv
aWQgYnJlYWtpbmcgdGVzdHMKKworICAgIGJvb2wgZmxhdHRlbkZyYW1lKCk7CisKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJlbmRlcklGcmFtZV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhcnQuY3BwCmluZGV4IDc0YjQ2N2YuLmVhOWZhNDUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhcnQuY3BwCkBAIC01Niw2MCArNTYsNiBAQCB2b2lkIFJlbmRlclBhcnQ6OnNldFdpZGdldChQ
YXNzUmVmUHRyPFdpZGdldD4gd2lkZ2V0KQogICAgIHZpZXdDbGVhcmVkKCk7CiB9CiAKLXZvaWQg
UmVuZGVyUGFydDo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZp
eGVkSGVpZ2h0KQotewotICAgIEZyYW1lVmlldyogY2hpbGRGcmFtZVZpZXcgPSBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPih3aWRnZXQoKSk7Ci0gICAgUmVuZGVyVmlldyogY2hpbGRSb290ID0gY2hp
bGRGcmFtZVZpZXcgPyBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4oY2hpbGRGcmFtZVZpZXctPmZy
YW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSA6IDA7Ci0KLSAgICAvLyBEbyBub3QgZXhwYW5kIGZy
YW1lcyB3aGljaCBoYXMgemVybyB3aWR0aCBvciBoZWlnaHQKLSAgICBpZiAoIXdpZHRoKCkgfHwg
IWhlaWdodCgpIHx8ICFjaGlsZFJvb3QpIHsKLSAgICAgICAgdXBkYXRlV2lkZ2V0UG9zaXRpb24o
KTsKLSAgICAgICAgaWYgKGNoaWxkRnJhbWVWaWV3KQotICAgICAgICAgICAgY2hpbGRGcmFtZVZp
ZXctPmxheW91dCgpOwotICAgICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBuZWVkIHRvIHVwZGF0ZSB0byBjYWxjdWxhdGUgbWluL21h
eCBjb3JyZWN0bHkKLSAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbigpOwotICAgIGlmIChjaGlsZFJv
b3QtPnByZWZXaWR0aHNEaXJ0eSgpKQotICAgICAgICBjaGlsZFJvb3QtPmNhbGNQcmVmV2lkdGhz
KCk7Ci0KLSAgICAvLyBpZiBzY3JvbGxiYXJzIGFyZSBvZmYsIGFuZCB0aGUgd2lkdGggb3IgaGVp
Z2h0IGFyZSBmaXhlZAotICAgIC8vIHdlIG9iZXkgdGhlbSBhbmQgZG8gbm90IGV4cGFuZC4gV2l0
aCBmcmFtZSBmbGF0dGVuaW5nCi0gICAgLy8gbm8gc3ViZnJhbWUgbXVjaCBldmVyIGJlY29tZSBz
Y3JvbGxhYmxlLgotCi0gICAgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG5vZGUoKSk7Ci0gICAgYm9vbCBpc1Njcm9sbGFi
bGUgPSBlbGVtZW50LT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwotCi0g
ICAgLy8gY29uc2lkZXIgaWZyYW1lIGluc2V0IGJvcmRlcgotICAgIGludCBoQm9yZGVyID0gYm9y
ZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKLSAgICBpbnQgdkJvcmRlciA9IGJvcmRlclRvcCgp
ICsgYm9yZGVyQm90dG9tKCk7Ci0KLSAgICAvLyBtYWtlIHN1cmUgbWluaW11bSBwcmVmZXJyZWQg
d2lkdGggaXMgZW5mb3JjZWQKLSAgICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFmaXhlZFdpZHRoKSB7
Ci0gICAgICAgIHNldFdpZHRoKG1heCh3aWR0aCgpLCBjaGlsZFJvb3QtPm1pblByZWZXaWR0aCgp
ICsgaEJvcmRlcikpOwotICAgICAgICAvLyB1cGRhdGUgYWdhaW4gdG8gcGFzcyB0aGUgbmV3IHdp
ZHRoIHRvIHRoZSBjaGlsZCBmcmFtZQotICAgICAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbigpOwot
ICAgICAgICBjaGlsZEZyYW1lVmlldy0+bGF5b3V0KCk7Ci0gICAgfQotCi0gICAgLy8gZXhwYW5k
IHRoZSBmcmFtZSBieSBzZXR0aW5nIGZyYW1lIGhlaWdodCA9IGNvbnRlbnQgaGVpZ2h0Ci0gICAg
aWYgKGlzU2Nyb2xsYWJsZSB8fCAhZml4ZWRIZWlnaHQgfHwgY2hpbGRSb290LT5pc0ZyYW1lU2V0
KCkpCi0gICAgICAgIHNldEhlaWdodChtYXgoaGVpZ2h0KCksIGNoaWxkRnJhbWVWaWV3LT5jb250
ZW50c0hlaWdodCgpICsgdkJvcmRlcikpOwotICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWZpeGVk
V2lkdGggfHwgY2hpbGRSb290LT5pc0ZyYW1lU2V0KCkpCi0gICAgICAgIHNldFdpZHRoKG1heCh3
aWR0aCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNXaWR0aCgpICsgaEJvcmRlcikpOwotCi0g
ICAgdXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKLQotICAgIEFTU0VSVCghY2hpbGRGcmFtZVZpZXct
PmxheW91dFBlbmRpbmcoKSk7Ci0gICAgQVNTRVJUKCFjaGlsZFJvb3QtPm5lZWRzTGF5b3V0KCkp
OwotICAgIEFTU0VSVCghY2hpbGRSb290LT5maXJzdENoaWxkKCkgfHwgIWNoaWxkUm9vdC0+Zmly
c3RDaGlsZCgpLT5maXJzdENoaWxkKCkgfHwgIWNoaWxkUm9vdC0+Zmlyc3RDaGlsZCgpLT5maXJz
dENoaWxkKCktPm5lZWRzTGF5b3V0KCkpOwotCi0gICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwot
fQotCi0KIHZvaWQgUmVuZGVyUGFydDo6dmlld0NsZWFyZWQoKQogewogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UGFydC5oCmluZGV4IGVmNGI1ZTEuLmI1NTg2MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhcnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmgKQEAg
LTQxLDggKzQxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRXaWRnZXQoUGFzc1Jl
ZlB0cjxXaWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgdmlld0NsZWFyZWQoKTsKIAotICAgIHZv
aWQgbGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0
KTsKLQogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oYXNGYWxsYmFja0NvbnRlbnQ7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5jcHAKaW5kZXggMDk1ODk0Mi4uNzY2MWZmYyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5jcHAKQEAgLTUxLDg0ICs1MSw2IEBAIFJl
bmRlclBhcnRPYmplY3Q6OlJlbmRlclBhcnRPYmplY3QoRWxlbWVudCogZWxlbWVudCkKIHsKIH0K
IAotYm9vbCBSZW5kZXJQYXJ0T2JqZWN0OjpmbGF0dGVuRnJhbWUoKQotewotICAgIGlmICghbm9k
ZSgpIHx8ICFub2RlKCktPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgSFRNTElGcmFtZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgYm9vbCBpc1Njcm9sbGFibGUgPSBlbGVtZW50
LT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwotCi0gICAgaWYgKCFpc1Nj
cm9sbGFibGUgJiYgc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCkKLSAgICAgICAgJiYgc3R5bGUo
KS0+aGVpZ2h0KCkuaXNGaXhlZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBGcmFt
ZSogZnJhbWUgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpOwotICAgIGJvb2wgZW5hYmxl
ZCA9IGZyYW1lICYmIGZyYW1lLT5zZXR0aW5ncygpLT5mcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCk7
Ci0KLSAgICBpZiAoIWVuYWJsZWQgfHwgIWZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgp
LT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBEbyBub3QgZmxhdHRlbiBvZmZzY3JlZW4gaW5uZXIgZnJhbWVzIGR1cmluZyBmcmFtZSBmbGF0
dGVuaW5nLgotICAgIHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLmludGVyc2VjdHMo
SW50UmVjdChJbnRQb2ludCgwLCAwKSwgdmlldy0+Y29udGVudHNTaXplKCkpKTsKLX0KLQotdm9p
ZCBSZW5kZXJQYXJ0T2JqZWN0OjpjYWxjSGVpZ2h0KCkKLXsKLSAgICBSZW5kZXJQYXJ0OjpjYWxj
SGVpZ2h0KCk7Ci0gICAgaWYgKCFmbGF0dGVuRnJhbWUoKSkKLSAgICAgICAgIHJldHVybjsKLQot
ICAgIEhUTUxJRnJhbWVFbGVtZW50KiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVt
ZW50Kj4obm9kZSgpKTsKLSAgICBib29sIGlzU2Nyb2xsYWJsZSA9IGZyYW1lLT5zY3JvbGxpbmdN
b2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwotCi0gICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAh
c3R5bGUoKS0+aGVpZ2h0KCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9
IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKLSAgICAgICAgaW50IGJvcmRlciA9
IGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCk7Ci0gICAgICAgIHNldEhlaWdodChtYXgoaGVp
Z2h0KCksIHZpZXctPmNvbnRlbnRzSGVpZ2h0KCkgKyBib3JkZXIpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUmVuZGVyUGFydE9iamVjdDo6Y2FsY1dpZHRoKCkKLXsKLSAgICBSZW5kZXJQYXJ0OjpjYWxj
V2lkdGgoKTsKLSAgICBpZiAoIWZsYXR0ZW5GcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBIVE1MSUZyYW1lRWxlbWVudCogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVu
dCo+KG5vZGUoKSk7Ci0gICAgYm9vbCBpc1Njcm9sbGFibGUgPSBmcmFtZS0+c2Nyb2xsaW5nTW9k
ZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZjsKLQotICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIXN0
eWxlKCktPndpZHRoKCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKLSAgICAgICAgaW50IGJvcmRlciA9IGJv
cmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIHNldFdpZHRoKG1heCh3aWR0aCgp
LCB2aWV3LT5jb250ZW50c1dpZHRoKCkgKyBib3JkZXIpKTsKLSAgICB9Ci19Ci0KLXZvaWQgUmVu
ZGVyUGFydE9iamVjdDo6bGF5b3V0KCkKLXsKLSAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7Ci0K
LSAgICBSZW5kZXJQYXJ0OjpjYWxjV2lkdGgoKTsKLSAgICBSZW5kZXJQYXJ0OjpjYWxjSGVpZ2h0
KCk7Ci0KLSAgICBpZiAoZmxhdHRlbkZyYW1lKCkpIHsKLSAgICAgICAgbGF5b3V0V2l0aEZsYXR0
ZW5pbmcoc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCksIHN0eWxlKCktPmhlaWdodCgpLmlzRml4
ZWQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZW5kZXJQYXJ0OjpsYXlvdXQo
KTsKLQotICAgIG1fb3ZlcmZsb3cuY2xlYXIoKTsKLSAgICBhZGRTaGFkb3dPdmVyZmxvdygpOwot
Ci0gICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwotfQotCiB2b2lkIFJlbmRlclBhcnRPYmplY3Q6
OnZpZXdDbGVhcmVkKCkKIHsKICAgICBpZiAobm9kZSgpICYmIHdpZGdldCgpICYmIHdpZGdldCgp
LT5pc0ZyYW1lVmlldygpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmgKaW5kZXgg
NTg5ODk2MC4uM2M0NTFmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFy
dE9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuaApAQCAt
MzIsMTcgKzMyLDEwIEBAIGNsYXNzIFJlbmRlclBhcnRPYmplY3QgOiBwdWJsaWMgUmVuZGVyUGFy
dCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyUGFydE9iamVjdChFbGVtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2FsY0hlaWdodCgpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjV2lkdGgoKTsKLQog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyUGFydE9iamVjdCI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsK
LQogICAgIHZpcnR1YWwgdm9pZCB2aWV3Q2xlYXJlZCgpOwotCi0gICAgYm9vbCBmbGF0dGVuRnJh
bWUoKTsKIH07CiAKIGlubGluZSBSZW5kZXJQYXJ0T2JqZWN0KiB0b1JlbmRlclBhcnRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCg==
</data>
<flag name="review"
          id="37550"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53768</attachid>
            <date>2010-04-19 21:19:57 -0700</date>
            <delta_ts>2010-04-19 21:23:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37741-20100419211956.patch</filename>
            <type>text/plain</type>
            <size>3273</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2IxMDg1Yy4uMDIwMzk4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMC0wNC0xOSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBSZW5kZXJQYXJ0L1JlbmRlclBhcnRPYmplY3Qv
UmVuZGVyRnJhbWUvUmVuZGVyRW1iZWRkZWRPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQxCisKKyAgICAgICAgTW92ZSBtX2hhc0ZhbGxi
YWNrQ29udGVudCBmcm9tIFJlbmRlclBhcnQgdG8gUmVuZGVyRW1iZWRkZWRPYmplY3QsCisgICAg
ICAgIHNpbmNlIGl0J3Mgb25seSB1c2VkIGZvciA8b2JqZWN0PiBmYWxsYmFjay4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRW1iZWRkZWRPYmplY3Q6Omhhc0ZhbGxiYWNrQ29udGVudCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUGFydDo6UmVuZGVy
UGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhcnQuaDoKKworMjAxMC0wNC0xOSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KIAogICAgICAgICBDbGVhbiB1cCBSZW5kZXJQYXJ0L1JlbmRlclBh
cnRPYmplY3QvUmVuZGVyRnJhbWUvUmVuZGVyRW1iZWRkZWRPYmplY3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlYzA4MzE5Li5hYjkyMDE2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC02Niw2ICs2Niw3
IEBAIHN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRUZXh0T3BhY2l0eSA9IDAuNTVm
OwogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRkZWRPYmplY3QoRWxlbWVudCog
ZWxlbWVudCkKICAgICA6IFJlbmRlclBhcnRPYmplY3QoZWxlbWVudCkKKyAgICAsIG1faGFzRmFs
bGJhY2tDb250ZW50KGZhbHNlKQogewogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlz
dWFsbHlOb25FbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgKaW5kZXggNzc5MzMwZi4uZjczN2U1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5oCkBAIC0zNyw2ICszNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVdp
ZGdldChib29sIG9ubHlDcmVhdGVOb25OZXRzY2FwZVBsdWdpbnMpOwogICAgIHZvaWQgc2V0U2hv
d3NNaXNzaW5nUGx1Z2luSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBzZXRTaG93c0NyYXNoZWRQbHVn
aW5JbmRpY2F0b3IoKTsKKworICAgIGJvb2wgaGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNGYWxsYmFja0NvbnRlbnQ7IH0KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
IGNvbnN0OwogI2VuZGlmCkBAIC01Myw3ICs1Niw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKwogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50VGV4dDsK
KyAgICBib29sIG1faGFzRmFsbGJhY2tDb250ZW50OwogfTsKIAogaW5saW5lIFJlbmRlckVtYmVk
ZGVkT2JqZWN0KiB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXJ0LmNwcAppbmRleCBlYTlmYTQ1Li5hYjhlMjRjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJQYXJ0LmNwcApAQCAtMzMsNyArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlbmRlclBhcnQ6OlJlbmRlclBhcnQoRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlcldpZGdl
dChub2RlKQotICAgICwgbV9oYXNGYWxsYmFja0NvbnRlbnQoZmFsc2UpCiB7CiAgICAgLy8gaW5p
dCBSZW5kZXJPYmplY3QgYXR0cmlidXRlcwogICAgIHNldElubGluZShmYWxzZSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQYXJ0LmgKaW5kZXggYjU1ODYzMC4uMjEwYzU5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUGFydC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnQu
aApAQCAtMzYsMTQgKzM2LDkgQEAgcHVibGljOgogICAgIFJlbmRlclBhcnQoRWxlbWVudCopOwog
ICAgIHZpcnR1YWwgflJlbmRlclBhcnQoKTsKIAotICAgIGJvb2wgaGFzRmFsbGJhY2tDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNGYWxsYmFja0NvbnRlbnQ7IH0KLQogICAgIHZpcnR1YWwg
dm9pZCBzZXRXaWRnZXQoUGFzc1JlZlB0cjxXaWRnZXQ+KTsKICAgICB2aXJ0dWFsIHZvaWQgdmll
d0NsZWFyZWQoKTsKIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9oYXNGYWxsYmFja0NvbnRlbnQ7
Ci0KIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyUGFydCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7
IHJldHVybiAiUmVuZGVyUGFydCI7IH0K
</data>
<flag name="review"
          id="37564"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53770</attachid>
            <date>2010-04-19 21:55:19 -0700</date>
            <delta_ts>2010-04-20 10:27:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37741-20100419215518.patch</filename>
            <type>text/plain</type>
            <size>11686</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDlmYWQ4Yy4uMTMzYTU3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAogMjAxMC0wNC0xOSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBSZW5kZXJQYXJ0L1JlbmRlclBhcnRPYmplY3Qv
UmVuZGVyRnJhbWUvUmVuZGVyRW1iZWRkZWRPYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQxCisKKyAgICAgICAgTWFrZSBGcmFtZTo6b3du
ZXJSZW5kZXJlcigpIHJldHVybiBhIFJlbmRlckZyYW1lQmFzZSogcmF0aGVyIHRoYW4gYQorICAg
ICAgICBSZW5kZXJQYXJ0KiwgYW5kIGFkZCB0aGUgbmVjZXNzYXJ5IHRvUmVuZGVyRnJhbWVCYXNl
KCkgYW5kIGlzUmVuZGVyRnJhbWVCYXNlKCkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjppbnNpZGVWaXNpYmxlQXJlYSk6CisgICAgICAgICogcGFnZS9G
cmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6b3duZXJSZW5kZXJlcik6CisgICAg
ICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6fkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aW52YWxpZGF0
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpjcmVhdGVTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZyYW1lQmFzZTo6aXNSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
dG9SZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJGcmFtZUJhc2UpOgorCisy
MDEwLTA0LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgogCiAgICAgICAgIENsZWFuIHVwIFJlbmRlclBh
cnQvUmVuZGVyUGFydE9iamVjdC9SZW5kZXJGcmFtZS9SZW5kZXJFbWJlZGRlZE9iamVjdApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhODVjY2RjLi5lOTVl
ZmRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAz
LDcgKzIwMyw3IEBACiAJCTBGQ0YzMzJFMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzJBMEYy
QjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5tbSAqLzsgfTsKIAkJMEZDRjMzMkYwRjJCOUEyNTAw
NEI2Nzk1IC8qIFdlYkxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIuaCAqLzsgfTsK
IAkJMEZEMzA4MEUxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQzMDgwQzExN0NGN0U3
MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmNwcCAqLzsgfTsKLQkJMEZEMzA4MEYxMTdDRjdF
NzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMzA4MEQxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZy
YW1lQmFzZS5oICovOyB9OworCQkwRkQzMDgwRjExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVyRnJh
bWVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkQzMDgwRDExN0NGN0U3MDBBNzkxRjcgLyogUmVuZGVyRnJhbWVCYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZEMzA4RDUxMTdEMTY4NTAw
QTc5MUY3IC8qIFJlbmRlcklGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQzMDhEMzExN0QxNjg0MDBBNzkxRjcgLyogUmVuZGVySUZyYW1l
LmNwcCAqLzsgfTsKIAkJMEZEMzA4RDYxMTdEMTY4NTAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEMzA4RDQx
MTdEMTY4NDAwQTc5MUY3IC8qIFJlbmRlcklGcmFtZS5oICovOyB9OwogCQkwRkQ3MjM4MjBFQzhC
RDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkQ3MjM4MDBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggMTA2MWRkMi4uZGNjYTU3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUmVtb3ZlRm9ybWF0Q29tbWFu
ZC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyUGFydC5oIgor
I2luY2x1ZGUgIlJlbmRlckZyYW1lQmFzZS5oIgogI2luY2x1ZGUgIlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgiCiAjaW5jbHVkZSAiU291bmQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0yNzQ3
LDcgKzI3NDcsNyBAQCBib29sIEVkaXRvcjo6aW5zaWRlVmlzaWJsZUFyZWEoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAogICAgIGlmICghZnJhbWUtPmlzRGlzY29ubmVjdGVkKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIFJlbmRlclBhcnQqIHJlbmRlcmVyID0gZnJhbWUt
Pm93bmVyUmVuZGVyZXIoKTsKKyAgICBSZW5kZXJGcmFtZUJhc2UqIHJlbmRlcmVyID0gZnJhbWUt
Pm93bmVyUmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTI3NzYsNyArMjc3Niw3IEBAIGJvb2wgRWRpdG9yOjppbnNpZGVWaXNpYmxlQXJl
YShSYW5nZSogcmFuZ2UpIGNvbnN0CiAgICAgaWYgKCFmcmFtZS0+aXNEaXNjb25uZWN0ZWQoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgUmVuZGVyUGFydCogcmVuZGVyZXIgPSBm
cmFtZS0+b3duZXJSZW5kZXJlcigpOworICAgIFJlbmRlckZyYW1lQmFzZSogcmVuZGVyZXIgPSBm
cmFtZS0+b3duZXJSZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNTNmZDNiYS4uNTkwMDg5YyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC02NCw3ICs2
NCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiUmVuZGVyUGFydC5oIgorI2luY2x1
ZGUgIlJlbmRlckZyYW1lQmFzZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAg
LTExMTcsNyArMTExNyw3IEBAIEhUTUxGcmFtZU93bmVyRWxlbWVudCogRnJhbWU6Om93bmVyRWxl
bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3duZXJFbGVtZW50OwogfQogCi1SZW5kZXJQYXJ0
KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CitSZW5kZXJGcmFtZUJhc2UqIEZyYW1lOjpv
d25lclJlbmRlcmVyKCkgY29uc3QKIHsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAgIGlmICghb3duZXJFbGVtZW50KQpAQCAtMTEy
OSw5ICsxMTI5LDkgQEAgUmVuZGVyUGFydCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBjb25zdAog
ICAgIC8vIHRoYXQgaXQgaGFzIHN0YXJ0ZWQgYnV0IGNhbmNlbGVkLCB0aGVuIHRoaXMgY2FuIHR1
cm4gaW50byBhbiBBU1NFUlQKICAgICAvLyBzaW5jZSBtX293bmVyRWxlbWVudCB3b3VsZCBiZSAw
IHdoZW4gdGhlIGxvYWQgaXMgY2FuY2VsZWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4NTg1Ci0gICAgaWYgKCFvYmplY3QtPmlzUmVuZGVyUGFydCgp
KQorICAgIGlmICghb2JqZWN0LT5pc1JlbmRlckZyYW1lQmFzZSgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gdG9SZW5kZXJQYXJ0KG9iamVjdCk7CisgICAgcmV0dXJuIHRvUmVuZGVy
RnJhbWVCYXNlKG9iamVjdCk7CiB9CiAKIGJvb2wgRnJhbWU6OmlzRGlzY29ubmVjdGVkKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKaW5kZXggNGE3Y2RhZi4uZDM2OWZhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogICAgIGNs
YXNzIEhUTUxUYWJsZUNlbGxFbGVtZW50OwogICAgIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwot
ICAgIGNsYXNzIFJlbmRlclBhcnQ7CisgICAgY2xhc3MgUmVuZGVyRnJhbWVCYXNlOwogICAgIGNs
YXNzIFRpbGVkQmFja2luZ1N0b3JlOwogCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291
bnRlZDxGcmFtZT4KQEAgLTExMSw3ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdCgpOwogCiAgICAgICAgIFJlbmRlclZpZXcqIGNv
bnRlbnRSZW5kZXJlcigpIGNvbnN0OyAvLyByb290IHJlbmRlcmVyIGZvciB0aGUgZG9jdW1lbnQg
Y29udGFpbmVkIGluIHRoaXMgZnJhbWUKLSAgICAgICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJl
cigpIGNvbnN0OyAvLyByZW5kZXJlciBmb3IgdGhlIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGlz
IGZyYW1lCisgICAgICAgIFJlbmRlckZyYW1lQmFzZSogb3duZXJSZW5kZXJlcigpIGNvbnN0OyAv
LyByZW5kZXJlciBmb3IgdGhlIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGlzIGZyYW1lCiAKICAg
ICAgICAgYm9vbCBpc0Rpc2Nvbm5lY3RlZCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldElzRGlz
Y29ubmVjdGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0YjZjYzM2Li5hN2U4ZTE4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1i
ZWRkZWRPYmplY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCisjaW5jbHVkZSAiUmVuZGVy
RnJhbWVCYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2Nyb2xsYmFyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCkBAIC0xNzAsNyAr
MTcwLDcgQEAgRnJhbWVWaWV3Ojp+RnJhbWVWaWV3KCkKIAogICAgIGlmIChtX2ZyYW1lKSB7CiAg
ICAgICAgIEFTU0VSVChtX2ZyYW1lLT52aWV3KCkgIT0gdGhpcyB8fCAhbV9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpOwotICAgICAgICBSZW5kZXJQYXJ0KiByZW5kZXJlciA9IG1fZnJhbWUtPm93
bmVyUmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyRnJhbWVCYXNlKiByZW5kZXJlciA9IG1fZnJh
bWUtPm93bmVyUmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT53
aWRnZXQoKSA9PSB0aGlzKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldFdpZGdldCgwKTsKICAg
ICB9CkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmNsZWFyKCkKICAgICByZXNl
dCgpOwogCiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgaWYgKFJlbmRlclBhcnQqIHJlbmRl
cmVyID0gbV9mcmFtZS0+b3duZXJSZW5kZXJlcigpKQorICAgICAgICBpZiAoUmVuZGVyRnJhbWVC
YXNlKiByZW5kZXJlciA9IG1fZnJhbWUtPm93bmVyUmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJl
bmRlcmVyLT52aWV3Q2xlYXJlZCgpOwogICAgIH0KIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQg
RnJhbWVWaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyUGFydCogcmVuZGVyZXIgPSBt
X2ZyYW1lLT5vd25lclJlbmRlcmVyKCk7CisgICAgUmVuZGVyRnJhbWVCYXNlKiByZW5kZXJlciA9
IG1fZnJhbWUtPm93bmVyUmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM3NSw3ICszNzUsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gRnJhbWVW
aWV3OjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpbwogICAg
ICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIodGhpcywg
b3JpZW50YXRpb24sIGRvY0VsZW1lbnQtPnJlbmRlckJveCgpKTsKICAgICAgICAgCiAgICAgLy8g
SWYgd2UgaGF2ZSBhbiBvd25pbmcgaWZyYW1lL2ZyYW1lIGVsZW1lbnQsIHRoZW4gaXQgY2FuIHNl
dCB0aGUgY3VzdG9tIHNjcm9sbGJhciBhbHNvLgotICAgIFJlbmRlclBhcnQqIGZyYW1lUmVuZGVy
ZXIgPSBtX2ZyYW1lLT5vd25lclJlbmRlcmVyKCk7CisgICAgUmVuZGVyRnJhbWVCYXNlKiBmcmFt
ZVJlbmRlcmVyID0gbV9mcmFtZS0+b3duZXJSZW5kZXJlcigpOwogICAgIGlmIChmcmFtZVJlbmRl
cmVyICYmIGZyYW1lUmVuZGVyZXItPnN0eWxlKCktPmhhc1BzZXVkb1N0eWxlKFNDUk9MTEJBUikp
CiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3RvbVNjcm9sbGJhcih0
aGlzLCBvcmllbnRhdGlvbiwgZnJhbWVSZW5kZXJlcik7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5oCmluZGV4IGUyMzNhNzkuLjVlZmJmMjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5oCkBAIC0zNyw4ICszNywyMSBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAg
ICB2b2lkIGxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhl
aWdodCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRnJhbWVCYXNlKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAoraW5saW5lIFJlbmRlckZyYW1lQmFzZSogdG9S
ZW5kZXJGcmFtZUJhc2UoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKCFvYmpl
Y3QgfHwgb2JqZWN0LT5pc1JlbmRlckZyYW1lQmFzZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVuZGVyRnJhbWVCYXNlKj4ob2JqZWN0KTsKK30KKworLy8gVGhpcyB3aWxsIGNhdGNoIGFu
eW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgordm9pZCB0b1JlbmRlclBhcnQoY29uc3Qg
UmVuZGVyRnJhbWVCYXNlKik7CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gUmVuZGVyRnJhbWVCYXNlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZjc1YWU1
Zi4uZmQ3OWJjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTI4Miw2ICsyODIsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJCbG9jaygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGcmFtZUJhc2Uo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlckltYWdl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJbmxp
bmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclBh
cnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxYzFiNTk1Li4xZmFiMjZiIDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEwLTA0LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENsZWFuIHVwIFJlbmRlclBhcnQvUmVuZGVyUGFydE9iamVjdC9SZW5kZXJGcmFtZS9SZW5k
ZXJFbWJlZGRlZE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzc3NDEKKyAgICAgICAgCisgICAgICAgIE1ha2UgRnJhbWU6Om93bmVyUmVuZGVy
ZXIoKSByZXR1cm4gYSBSZW5kZXJGcmFtZUJhc2UqIHJhdGhlciB0aGFuIGEKKyAgICAgICAgUmVu
ZGVyUGFydCosIGFuZCBhZGQgdGhlIG5lY2Vzc2FyeSB0b1JlbmRlckZyYW1lQmFzZSgpIGFuZCBp
c1JlbmRlckZyYW1lQmFzZSgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX2dldFZpc2libGVSZWN0Ol0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVZpZXcgX2luc3RhbGxdKToKKwog
MjAxMC0wNC0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNDJiMTIwYy4u
MDVkOGVhYiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBi
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNzYsNyArNzYsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ByaW50Q29udGV4dC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJMYXllci5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZW5k
ZXJQYXJ0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1JlbmRlckZyYW1lQmFzZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgpA
QCAtNTk5LDcgKzU5OSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJj
ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogLSAoQk9PTClfZ2V0VmlzaWJsZVJlY3Q6KE5TUmVj
dCopcmVjdAogewogICAgIEFTU0VSVF9BUkcocmVjdCwgcmVjdCk7Ci0gICAgaWYgKFJlbmRlclBh
cnQqIG93bmVyUmVuZGVyZXIgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5vd25lclJlbmRlcmVyKCkp
IHsKKyAgICBpZiAoUmVuZGVyRnJhbWVCYXNlKiBvd25lclJlbmRlcmVyID0gX3ByaXZhdGUtPmNv
cmVGcmFtZS0+b3duZXJSZW5kZXJlcigpKSB7CiAgICAgICAgIGlmIChvd25lclJlbmRlcmVyLT5u
ZWVkc0xheW91dCgpKQogICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICAqcmVjdCA9IG93
bmVyUmVuZGVyZXItPmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZVZpZXcubW0KaW5kZXggOWRlZDhlMS4uYTkwNjMyYSAxMDA2NDQKLS0tIGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVWaWV3Lm1tCkBAIC02Miw3ICs2Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlclBhcnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
UmVuZGVyRnJhbWVCYXNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVGcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZVZpZXcuaD4KQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNG
cm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENsYXNzIG9iakNDbAogICAg
IHZpZXctPnNldFBsYXRmb3JtV2lkZ2V0KF9wcml2YXRlLT5mcmFtZVNjcm9sbFZpZXcpOwogCiAg
ICAgLy8gRklYTUU6IEZyYW1lIHRyaWVzIHRvIGRvIHRoaXMgdG9vLiBJcyB0aGlzIGNvZGUgbmVl
ZGVkPwotICAgIGlmIChSZW5kZXJQYXJ0KiBvd25lciA9IGZyYW1lLT5vd25lclJlbmRlcmVyKCkp
IHsKKyAgICBpZiAoUmVuZGVyRnJhbWVCYXNlKiBvd25lciA9IGZyYW1lLT5vd25lclJlbmRlcmVy
KCkpIHsKICAgICAgICAgb3duZXItPnNldFdpZGdldCh2aWV3KTsKICAgICAgICAgLy8gTm93IHRo
ZSByZW5kZXIgcGFydCBvd25zIHRoZSB2aWV3LCBzbyB3ZSBkb24ndCBhbnkgbW9yZS4KICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53850</attachid>
            <date>2010-04-20 11:15:41 -0700</date>
            <delta_ts>2010-04-20 11:23:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37741-20100420111539.patch</filename>
            <type>text/plain</type>
            <size>17383</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA1YjExMzMzLi5hNzU5NGZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC01OTMsNyArNTkzLDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgXAogCXJl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyUGFy
dC5jcHAgXAotCXJlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmNwcCBcCiAJcmVuZGVyaW5nL1Jl
bmRlclBhdGguY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIFwKIAlyZW5kZXJp
bmcvUmVuZGVyUmVwbGljYS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ZWU4NmVlLi44ZjkwNTRhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDEwLTA0LTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIFJlbmRl
clBhcnQvUmVuZGVyUGFydE9iamVjdC9SZW5kZXJGcmFtZS9SZW5kZXJFbWJlZGRlZE9iamVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3NDEKKwor
ICAgICAgICBSZW5kZXJQYXJ0T2JqZWN0IGlzIGEgdXNlbGVzcyBpbnRlcm1lZGlhdGUgY2xhc3Mg
YmV0d2VlbiBSZW5kZXJQYXJ0IGFuZAorICAgICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCwgYW5k
IHdlIGNhbiBub3cgcmVtb3ZlIGl0LiBJdHMgb25seSBtZXRob2QsIHZpZXdDbGVhcmVkKCksCisg
ICAgICAgIGFwcGxpZXMgdG8gb2JqZWN0cyBhbmQgZW1iZWRzIHdoZW4gdGhlIGNvbnRlbnQgaXMg
YSBGcmFtZVZpZXcsIHNvIGNhbiBtb3ZlCisgICAgICAgIHRvIFJlbmRlckVtYmVkZGVkT2JqZWN0
LgorCisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVy
RW1iZWRkZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnJlcXVpcmVzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojp2aWV3Q2xl
YXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhcnQ6OlJlbmRlclBhcnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXJ0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclBhcnRPYmplY3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJQYXJ0T2JqZWN0Lmg6IFJlbW92ZWQuCisKIDIwMTAtMDQtMjAgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI1Nzg5Mi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGIwYjA0N2UuLmMwMWZlNDcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTg4NCw4
ICsxODg0LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPdmVyZmxvdy5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcCBcCiAJV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydC5oIFwKLQlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXJ0T2JqZWN0LmNwcCBcCi0JV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5oIFwK
IAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgXAogCVdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclByb2dyZXNzLmggXAogCVdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDU4Njg5MGQuLmI2MDVjMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMTM4LDggKzMxMzgsNiBAQAog
ICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuaCcsCiAgICAgICAg
ICAgICAncmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyUGFydC5oJywKLSAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5j
cHAnLAotICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmgnLAogICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5n
L1JlbmRlclBhdGguaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCA5MTJmMGIxLi4zZmJjMTVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJv
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTk0MSw3ICs5NDEsNiBAQCBTT1VSQ0VTICs9
IFwKICAgICByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBcCiAgICAgcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAgXAogICAgIHJlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcCBcCi0g
ICAgcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVy
UHJvZ3Jlc3MuY3BwIFwKICAgICByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIFwKICAgICBy
ZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgXApAQCAtMTcxMCw3ICsxNzA5LDYgQEAgSEVBREVS
UyArPSBcCiAgICAgcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5oIFwKICAgICByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJQYXJ0LmggXAotICAg
IHJlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJQYXRo
LmggXAogICAgIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oIFwKICAgICByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAx
YTBlNmQzLi4yZjhiNTM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTI3NzU1LDE0ICsyNzc1NSw2IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xSZW5kZXJQYXJ0T2JqZWN0LmNwcCINCi0JCQkJ
Pg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmlu
Z1xSZW5kZXJQYXJ0T2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcUmVuZGVyUGF0aC5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBkYzNhNTVlLi41ODUxNzhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjk0MCw4ICsyOTQwLDYgQEAKIAkJQTg3MURFRDIwQTE1MzBDNzAwQjEyQTY4
IC8qIFJlbmRlckZyYW1lU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4NzFERUNBMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZVNldC5j
cHAgKi87IH07CiAJCUE4NzFERUQzMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURFQ0IwQTE1
MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lLmggKi87IH07CiAJCUE4NzFERUQ0MEExNTMwQzcw
MEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODcxREVDQzBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyRnJhbWUu
Y3BwICovOyB9OwotCQlBODcxREVENTBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURF
Q0QwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBODcxREVENjBBMTUzMEM3MDBCMTJB
NjggLyogUmVuZGVyUGFydE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODcxREVDRTBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydE9i
amVjdC5jcHAgKi87IH07CiAJCUE4NzFERUQ3MEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJQYXJ0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODcxREVD
RjBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4NzFERkUyMEExNTM3NkIwMEIxMkE2OCAvKiBS
ZW5kZXJSZXBsYWNlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBODcxREZERTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuY3BwICov
OyB9OwogCQlBODcxREZFMzBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzFERkRGMEExNTM3
NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBsYWNlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MjU2LDggKzgyNTQsNiBAQAogCQlBODcxREVDQTBB
MTUzMEM3MDBCMTJBNjggLyogUmVuZGVyRnJhbWVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZyYW1lU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTg3MURFQ0IwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBODcxREVDQzBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyRnJh
bWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg3MURFQ0QwQTE1MzBDNzAwQjEy
QTY4IC8qIFJlbmRlclBhcnRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlclBhcnRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTg3
MURFQ0UwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnRPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclBhcnRPYmplY3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBODcxREVDRjBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVy
UGFydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyUGFydC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODcxREZERTBBMTUzNzZCMDBCMTJBNjggLyog
UmVuZGVyUmVwbGFjZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclJlcGxhY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3MURG
REYwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJSZXBsYWNlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTU5NDEsOCArMTU5MzcsNiBAQAogCQkJCUJDRkE5MzA3MTAzMzMxOTMwMDdCMjVE
MSAvKiBSZW5kZXJPdmVyZmxvdy5oICovLAogCQkJCUE4NzFERUM4MEExNTMwQzcwMEIxMkE2OCAv
KiBSZW5kZXJQYXJ0LmNwcCAqLywKIAkJCQlBODcxREVDRjBBMTUzMEM3MDBCMTJBNjggLyogUmVu
ZGVyUGFydC5oICovLAotCQkJCUE4NzFERUNFMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJQYXJ0
T2JqZWN0LmNwcCAqLywKLQkJCQlBODcxREVDRDBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFy
dE9iamVjdC5oICovLAogCQkJCTg1M0NBOUVFMEFFRUM2NTcwMDIzNzJEQyAvKiBSZW5kZXJQYXRo
LmNwcCAqLywKIAkJCQk4NTNDQTlFRjBBRUVDNjU3MDAyMzcyREMgLyogUmVuZGVyUGF0aC5oICov
LAogCQkJCUE0M0JGNTlBMTE0OTI5MjgwMEM2NDNDQSAvKiBSZW5kZXJQcm9ncmVzcy5jcHAgKi8s
CkBAIC0xODI0Myw3ICsxODIzNyw2IEBACiAJCQkJQkMyQ0M4REYwRjMyODgxMDAwQTlERjI2IC8q
IFJlbmRlck9iamVjdENoaWxkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMz
MzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcx
REVENzBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QTg3MURFRDUwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBhcnRPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1M0NBOUYxMEFFRUM2NTcwMDIzNzJEQyAvKiBSZW5kZXJQYXRoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODcxREZFMzBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJS
ZXBsaWNhLmggaW4gSGVhZGVycyAqLywKQEAgLTIwNTU1LDcgKzIwNTQ4LDYgQEAKIAkJCQlCQ0VB
NDg3RjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNjBFRkI3MEYzM0EwRTcwMDgxMkE5MyAvKiBSZW5kZXJPYmplY3RDaGlsZExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURFRDAwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlclBh
cnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTg3MURFRDYwQTE1MzBDNzAwQjEyQTY4IC8qIFJl
bmRlclBhcnRPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUzQ0E5RjAwQUVFQzY1NzAw
MjM3MkRDIC8qIFJlbmRlclBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg3MURGRTIwQTE1
Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2VkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
QTg0NkQ2MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5kZXJSZXBsaWNhLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IGFiOTIw
MTYuLjg2MTlmYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHJlcGxhY2VtZW50VGV4dFJv
dW5kZWRSZWN0UmFkaXVzID0gNTsKIHN0YXRpYyBjb25zdCBmbG9hdCByZXBsYWNlbWVudFRleHRU
ZXh0T3BhY2l0eSA9IDAuNTVmOwogCiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UmVuZGVyRW1iZWRk
ZWRPYmplY3QoRWxlbWVudCogZWxlbWVudCkKLSAgICA6IFJlbmRlclBhcnRPYmplY3QoZWxlbWVu
dCkKKyAgICA6IFJlbmRlclBhcnQoZWxlbWVudCkKICAgICAsIG1faGFzRmFsbGJhY2tDb250ZW50
KGZhbHNlKQogewogICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldElzVmlzdWFsbHlOb25FbXB0
eSgpOwpAQCAtODAsNyArODAsNyBAQCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6flJlbmRlckVtYmVk
ZGVkT2JqZWN0KCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBib29sIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpyZXF1aXJlc0xheWVyKCkgY29uc3QKIHsKLSAgICBpZiAoUmVuZGVy
UGFydE9iamVjdDo6cmVxdWlyZXNMYXllcigpKQorICAgIGlmIChSZW5kZXJQYXJ0OjpyZXF1aXJl
c0xheWVyKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVybiBhbGxvd3NB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJlbmRlclBhcnRPYmplY3Q6OnBh
aW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBSZW5kZXJQYXJ0OjpwYWludChwYWludEluZm8s
IHR4LCB0eSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQpAQCAtNDI0LDQgKzQyNCwyMyBA
QCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKQogICAgIHNldE5lZWRzTGF5b3V0
KGZhbHNlKTsKIH0KIAordm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6dmlld0NsZWFyZWQoKQor
eworICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIDxvYmplY3Q+IGVsZW1lbnRzIHdob3NlIGNv
bnRlbnRzIGFyZSByZW5kZXJlZCBieSBXZWJDb3JlIChlLmcuIHNyYz0iZm9vLmh0bWwiKS4KKyAg
ICBpZiAobm9kZSgpICYmIHdpZGdldCgpICYmIHdpZGdldCgpLT5pc0ZyYW1lVmlldygpKSB7Cisg
ICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgp
KTsKKyAgICAgICAgaW50IG1hcmdpbncgPSAtMTsKKyAgICAgICAgaW50IG1hcmdpbmggPSAtMTsK
KyAgICAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CisgICAgICAgICAg
ICBIVE1MSUZyYW1lRWxlbWVudCogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVu
dCo+KG5vZGUoKSk7CisgICAgICAgICAgICBtYXJnaW53ID0gZnJhbWUtPmdldE1hcmdpbldpZHRo
KCk7CisgICAgICAgICAgICBtYXJnaW5oID0gZnJhbWUtPmdldE1hcmdpbkhlaWdodCgpOworICAg
ICAgICB9CisgICAgICAgIGlmIChtYXJnaW53ICE9IC0xKQorICAgICAgICAgICAgdmlldy0+c2V0
TWFyZ2luV2lkdGgobWFyZ2ludyk7CisgICAgICAgIGlmIChtYXJnaW5oICE9IC0xKQorICAgICAg
ICAgICAgdmlldy0+c2V0TWFyZ2luSGVpZ2h0KG1hcmdpbmgpOworICAgIH0KK30KKwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggZjczN2U1OC4uYjY4MTA4
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCkBAIC0yMywxMyAr
MjMsMTMgQEAKICNpZm5kZWYgUmVuZGVyRW1iZWRkZWRPYmplY3RfaAogI2RlZmluZSBSZW5kZXJF
bWJlZGRlZE9iamVjdF9oCiAKLSNpbmNsdWRlICJSZW5kZXJQYXJ0T2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyUGFydC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFJlbmRlcmVyIGZv
ciBlbWJlZHMgYW5kIG9iamVjdHMsIG9mdGVuLCBidXQgbm90IGFsd2F5cywgcmVuZGVyZWQgdmlh
IHBsdWctaW5zLgogLy8gRm9yIGV4YW1wbGUsIDxlbWJlZCBzcmM9ImZvby5odG1sIj4gZG9lcyBu
b3QgaW52b2tlIGEgcGx1Zy1pbi4KLWNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0IDogcHVibGlj
IFJlbmRlclBhcnRPYmplY3QgeworY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3QgOiBwdWJsaWMg
UmVuZGVyUGFydCB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QoRWxlbWVudCop
OwogICAgIHZpcnR1YWwgflJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CkBAIC01Niw2ICs1Niw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlld0NsZWFyZWQoKTsKIAogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50VGV4dDsK
ICAgICBib29sIG1faGFzRmFsbGJhY2tDb250ZW50OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJh
c2UuaAppbmRleCBlMjMzYTc5Li5jZDNjZjBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJh
c2UuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBSZW5kZXJGcmFtZUJhc2VfaAogI2RlZmlu
ZSBSZW5kZXJGcmFtZUJhc2VfaAogCi0jaW5jbHVkZSAiUmVuZGVyUGFydE9iamVjdC5oIgorI2lu
Y2x1ZGUgIlJlbmRlclBhcnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhcnQuY3BwCmluZGV4IGFiOGUyNGMuLjMyNjI5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBh
cnQuY3BwCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJlbmRlclBhcnQ6
OlJlbmRlclBhcnQoRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlcldpZGdldChub2RlKQogewot
ICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKICAgICBzZXRJbmxpbmUoZmFsc2Up
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0LmgKaW5kZXggMjEwYzU5MC4uMThmMjM0NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydC5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhcnQuaApAQCAtMjcsMTAgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0vLyBSZW5kZXJlciBmb3IgZnJhbWVzIHZpYSBSZW5kZXJQYXJ0T2JqZWN0LCBhbmQgcGx1
Zy1pbnMgdmlhIFJlbmRlckVtYmVkZGVkT2JqZWN0LgotCi0vLyBGSVhNRTogVGhpcyBjbGFzcyBp
cyBzdWJjbGFzc2VkIGluIFJlbmRlclBhcnRPYmplY3QgZm9yIGlmcmFtZXMsIHdoaWNoIGlzIGlu
IHR1cm4KLS8vIHN1YmNsYXNzZWQgaW4gUmVuZGVyRW1iZWRkZWRPYmplY3QgZm9yIG9iamVjdCBh
bmQgZW1iZWQuIFRoaXMgY2xhc3MgaXRzZWxmIGNvdWxkIGJlIHJlbW92ZWQuCisvLyBSZW5kZXJl
ciBmb3IgZnJhbWVzIHZpYSBSZW5kZXJGcmFtZUJhc2UsIGFuZCBwbHVnLWlucyB2aWEgUmVuZGVy
RW1iZWRkZWRPYmplY3QuCiBjbGFzcyBSZW5kZXJQYXJ0IDogcHVibGljIFJlbmRlcldpZGdldCB7
CiBwdWJsaWM6CiAgICAgUmVuZGVyUGFydChFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhcnRPYmplY3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjYxZmZjLi4w
MDAwMDAwCi0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhcnRPYmplY3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNt
YW5uIDxoYXVzbWFubkBrZGUub3JnPgotICogICAgICAgICAgIChDKSAyMDAwIFN0ZWZhbiBTY2hp
bWFuc2tpICgxU3RlaW5AZ214LmRlKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJSZW5kZXJQYXJ0T2JqZWN0LmgiCi0KLSNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSFRNTEVt
YmVkRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJI
VE1MUGFyYW1FbGVtZW50LmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiUmVuZGVyV2lk
Z2V0UHJvdGVjdG9yLmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJUZXh0Lmgi
Ci0KLSNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSNpbmNsdWRlICJIVE1MVmlk
ZW9FbGVtZW50LmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwotCi1SZW5kZXJQYXJ0T2JqZWN0OjpSZW5kZXJQYXJ0T2JqZWN0KEVs
ZW1lbnQqIGVsZW1lbnQpCi0gICAgOiBSZW5kZXJQYXJ0KGVsZW1lbnQpCi17Ci19Ci0KLXZvaWQg
UmVuZGVyUGFydE9iamVjdDo6dmlld0NsZWFyZWQoKQotewotICAgIGlmIChub2RlKCkgJiYgd2lk
Z2V0KCkgJiYgd2lkZ2V0KCktPmlzRnJhbWVWaWV3KCkpIHsKLSAgICAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KCkpOwotICAgICAgICBpbnQgbWFy
Z2ludyA9IC0xOwotICAgICAgICBpbnQgbWFyZ2luaCA9IC0xOwotICAgICAgICBpZiAobm9kZSgp
LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKLSAgICAgICAgICAgIEhUTUxJRnJhbWVFbGVtZW50
KiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxJRnJhbWVFbGVtZW50Kj4obm9kZSgpKTsKLSAgICAg
ICAgICAgIG1hcmdpbncgPSBmcmFtZS0+Z2V0TWFyZ2luV2lkdGgoKTsKLSAgICAgICAgICAgIG1h
cmdpbmggPSBmcmFtZS0+Z2V0TWFyZ2luSGVpZ2h0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KG1hcmdpbncgIT0gLTEpCi0gICAgICAgICAgICB2aWV3LT5zZXRNYXJnaW5XaWR0aChtYXJnaW53
KTsKLSAgICAgICAgaWYgKG1hcmdpbmggIT0gLTEpCi0gICAgICAgICAgICB2aWV3LT5zZXRNYXJn
aW5IZWlnaHQobWFyZ2luaCk7Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXJ0T2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXJ0
T2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNDUxZjUuLjAwMDAwMDAK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNtYW5uIDxoYXVz
bWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgUmVuZGVyUGFydE9iamVjdF9oCi0jZGVmaW5l
IFJlbmRlclBhcnRPYmplY3RfaAotCi0jaW5jbHVkZSAiUmVuZGVyUGFydC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLS8vIFJlbmRlcmVyIGZvciBpZnJhbWVzLiBJcyBzdWJjbGFzc2VkIGlu
IFJlbmRlckVtYmVkZGVkT2JqZWN0IGZvciBvYmplY3QgYW5kIGVtYmVkLgotY2xhc3MgUmVuZGVy
UGFydE9iamVjdCA6IHB1YmxpYyBSZW5kZXJQYXJ0IHsKLXB1YmxpYzoKLSAgICBSZW5kZXJQYXJ0
T2JqZWN0KEVsZW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGFydE9iamVjdCI7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCB2aWV3Q2xlYXJlZCgpOwotfTsKLQotaW5saW5lIFJlbmRlclBhcnRPYmplY3Qq
IHRvUmVuZGVyUGFydE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKLXsKLSAgICBBU1NFUlQo
IW9iamVjdCB8fCAhc3RyY21wKG9iamVjdC0+cmVuZGVyTmFtZSgpLCAiUmVuZGVyUGFydE9iamVj
dCIpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyUGFydE9iamVjdCo+KG9iamVjdCk7
Ci19Ci0KLS8vIFRoaXMgd2lsbCBjYXRjaCBhbnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2Fz
dC4KLXZvaWQgdG9SZW5kZXJQYXJ0T2JqZWN0KGNvbnN0IFJlbmRlclBhcnRPYmplY3QqKTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUmVuZGVyUGFydE9iamVjdF9oCg==
</data>
<flag name="review"
          id="37667"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>