<?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>112236</bug_id>
          
          <creation_ts>2013-03-13 01:46:34 -0700</creation_ts>
          <short_desc>[BlackBerry] Allow an embedder to position child windows using window coordinates</short_desc>
          <delta_ts>2013-03-15 15:22:10 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112255</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>mifenton</cc>
    
    <cc>mlattanzio</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>854127</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-13 01:46:34 -0700</bug_when>
    <thetext>Currently, child windows may be positioned in document coordinates, which requires the BlackBerry::Platform::Graphics::Window::virtualRect() of the parent window to be kept in sync with the document visible content rect. This is easy if there&apos;s a one-to-one correspondence between windows and scrollable frames.

However, for an embedder that can display an entire scene graph (where the web page is just one of the nodes) in one window, several scrollable frames may be present in that window, and it&apos;s difficult to know which scrollable frame to sync the virtualRect with.

For the latter scenario, it makes more sense to use window coordinates to place child windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854133</commentid>
    <comment_count>1</comment_count>
      <attachid>192884</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-13 02:06:11 -0700</bug_when>
    <thetext>Created attachment 192884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854334</commentid>
    <comment_count>2</comment_count>
      <attachid>192884</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-03-13 08:47:11 -0700</bug_when>
    <thetext>Comment on attachment 192884
Patch

Slightly unfortunate that we have to add m_childWindowsUseDocumentCoordinates twice, but understandable since the LayerRenderer will be lazily constructed.
According to coding style rule Naming/5., m_childWindowsUseDocumentCoordinates should probably be called m_doChildWindowsUseDocumentCoordinates or m_shouldChildWindowsUseDocumentCoordinates.
It&apos;s unfortunate that we have to talk about &quot;windows&quot; at all given they should be more of an abstract concept... then again, if we ever get rid of windows then this setting won&apos;t likely be needed anyways. So I guess that&apos;s okay.
What do you think of using &quot;PixelCoordinates&quot; instead of &quot;WindowCoordinates&quot;, to standardize on ViewportAccessor terminology?

Also, how does this setting affect plugins and their video output? Is this change sufficient to cover Flash plugins in your use case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854335</commentid>
    <comment_count>3</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-03-13 08:49:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192884 [details])
&gt; What do you think of using &quot;PixelCoordinates&quot; instead of &quot;WindowCoordinates&quot;, to standardize on ViewportAccessor terminology?

Retracting that comment, as WebCore itself uses Window and Screen in various client coordinate transformations so sticking with Window seems alright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855084</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-14 02:31:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192884 [details])
&gt; Slightly unfortunate that we have to add m_childWindowsUseDocumentCoordinates twice, but understandable since the LayerRenderer will be lazily constructed.
&gt; According to coding style rule Naming/5., m_childWindowsUseDocumentCoordinates should probably be called m_doChildWindowsUseDocumentCoordinates or m_shouldChildWindowsUseDocumentCoordinates.
&gt; It&apos;s unfortunate that we have to talk about &quot;windows&quot; at all given they should be more of an abstract concept... then again, if we ever get rid of windows then this setting won&apos;t likely be needed anyways. So I guess that&apos;s okay.
&gt; What do you think of using &quot;PixelCoordinates&quot; instead of &quot;WindowCoordinates&quot;, to standardize on ViewportAccessor terminology?
&gt; 
&gt; Also, how does this setting affect plugins and their video output? Is this change sufficient to cover Flash plugins in your use case?

I&apos;m thinking the getter/setter should also be renamed since it&apos;s a bool property, shouldBlaBla would be more appropriate there, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855103</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-14 03:09:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 192884 [details])
&gt; Slightly unfortunate that we have to add m_childWindowsUseDocumentCoordinates twice, but understandable since the LayerRenderer will be lazily constructed.
&gt; ...

In the future, this kind of repetition can be avoided by introducing a LayerRendererClient interface with a &quot;virtual bool shouldChildWindowsUseDocumentCoordinates() = 0;&quot; method. But introducing a client interface for just this one method seems like overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855134</commentid>
    <comment_count>6</comment_count>
      <attachid>193106</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-14 05:26:51 -0700</bug_when>
    <thetext>Created attachment 193106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855425</commentid>
    <comment_count>7</comment_count>
      <attachid>193106</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-03-14 12:35:03 -0700</bug_when>
    <thetext>Comment on attachment 193106
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/LayerRenderer.h:89
&gt; +    bool shouldChildWindowsUseDocumentCoordinates() const { return m_shouldChildWindowsUseDocumentCoordinates; }
&gt; +    void setChildWindowsUseDocumentCoordinates(bool shouldUseDocumentCoordinates) { m_shouldChildWindowsUseDocumentCoordinates = shouldUseDocumentCoordinates; }

Other code in WebCore includes the &quot;Should&quot; also in the setter, please update its name as well. Looks good otherwise, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855931</commentid>
    <comment_count>8</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 06:17:06 -0700</bug_when>
    <thetext>And now for something completely different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855934</commentid>
    <comment_count>9</comment_count>
      <attachid>193292</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 06:18:18 -0700</bug_when>
    <thetext>Created attachment 193292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855936</commentid>
    <comment_count>10</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 06:19:16 -0700</bug_when>
    <thetext>The getters/setters were getting more ridiculous with every iteration, time to try something completely different, where the &quot;should&quot; moniker only appears where it makes sense - in a delegate method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856002</commentid>
    <comment_count>11</comment_count>
      <attachid>193292</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-03-15 08:17:20 -0700</bug_when>
    <thetext>Comment on attachment 193292
Patch

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

Nice, I really like it! Only a few minor questions.

&gt; Source/WebCore/platform/graphics/blackberry/LayerRendererClient.h:38
&gt; +    virtual void layerRendererDestroyed() = 0;

Should this one get a default implementation of { } so that it&apos;s optional for clients to implement it?

&gt; Source/WebCore/platform/graphics/blackberry/LayerRendererClient.h:43
&gt; +    virtual bool shouldClearSurfaceBeforeCompositing() = 0;
&gt; +    virtual bool shouldChildWindowsUseDocumentCoordinates() = 0;

Can these two be const?

&gt; Source/WebKit/blackberry/Api/WebPageCompositor_p.h:116
&gt; +    virtual void layerRendererDestroyed() { }
&gt; +    virtual bool shouldClearSurfaceBeforeCompositing();
&gt; +    virtual bool shouldChildWindowsUseDocumentCoordinates();

If those are defined public by the interface, should they remain public after being inherited?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856268</commentid>
    <comment_count>12</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 14:05:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 193292 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193292&amp;action=review
&gt; 
&gt; Nice, I really like it! Only a few minor questions.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerRendererClient.h:38
&gt; &gt; +    virtual void layerRendererDestroyed() = 0;
&gt; 
&gt; Should this one get a default implementation of { } so that it&apos;s optional for clients to implement it?

Yes, I agree - I tend to always add the &quot;Destroyed&quot; method to client interfaces, but in this case it&apos;s not actually needed since the client manages the lifetime of the object.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerRendererClient.h:43
&gt; &gt; +    virtual bool shouldClearSurfaceBeforeCompositing() = 0;
&gt; &gt; +    virtual bool shouldChildWindowsUseDocumentCoordinates() = 0;
&gt; 
&gt; Can these two be const?

I prefer to keep client interfaces non-const where possible, to give the client maximum freedom in how to implement the decision, even to the degree where it requires mutating state. I looked at FrameLoaderClient and found a totally random assortment of const and non-const delegate methods (why would anyone ever use the bloated FrameLoaderClient as a yardstick), but I think the optimum is to keep them non-const.

This leads to the question, why is context() const? Well, it&apos;s not really a delegate method, just a getter.

&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebPageCompositor_p.h:116
&gt; &gt; +    virtual void layerRendererDestroyed() { }
&gt; &gt; +    virtual bool shouldClearSurfaceBeforeCompositing();
&gt; &gt; +    virtual bool shouldChildWindowsUseDocumentCoordinates();
&gt; 
&gt; If those are defined public by the interface, should they remain public after being inherited?

I don&apos;t think so, since it&apos;s an implementation detail of WebPageCompositorPrivate that it happens to implement LayerRendererClient. But that&apos;s a matter of taste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856278</commentid>
    <comment_count>13</comment_count>
      <attachid>193374</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 14:11:35 -0700</bug_when>
    <thetext>Created attachment 193374
Patch

Make LayerRendererClient::layerRendererDestroyed() optional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856297</commentid>
    <comment_count>14</comment_count>
      <attachid>193374</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-03-15 14:47:03 -0700</bug_when>
    <thetext>Comment on attachment 193374
Patch

This LGTM. Jakob?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856299</commentid>
    <comment_count>15</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-03-15 14:51:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 193374 [details])
&gt; This LGTM. Jakob?

Yes, let&apos;s have it. Thanks for your patience, Arvid!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856305</commentid>
    <comment_count>16</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-03-15 14:53:59 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 193374 [details] [details])
&gt; &gt; This LGTM. Jakob?
&gt; 
&gt; Yes, let&apos;s have it. Thanks for your patience, Arvid!

No problem, just compare the first and last patches to see what improvement a proper review can produce =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856310</commentid>
    <comment_count>17</comment_count>
      <attachid>193374</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-03-15 14:55:07 -0700</bug_when>
    <thetext>Comment on attachment 193374
Patch

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856336</commentid>
    <comment_count>18</comment_count>
      <attachid>193374</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 15:22:06 -0700</bug_when>
    <thetext>Comment on attachment 193374
Patch

Clearing flags on attachment: 193374

Committed r145953: &lt;http://trac.webkit.org/changeset/145953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856337</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 15:22:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192884</attachid>
            <date>2013-03-13 02:06:11 -0700</date>
            <delta_ts>2013-03-14 05:26:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112236-20130313100204.patch</filename>
            <type>text/plain</type>
            <size>13571</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JhZjM1YzQ5M2I3MmM5
MDMzZjcwMDFjZDlhMmUwYTc2NDdlMzZmYS4uMDUyYTJlNDFjYmU5OWNjOTI4YWEyYmJmOTE0MTUx
NjY4OGM1MzQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTEzICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxs
b3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29v
cmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBMYXllclJlbmRlcmVyIHNldHRpbmcgYWRkZWQgaGVyZSBjb250cm9scyB3aGV0aGVyIHRv
IHVzZSB3aW5kb3cgb3IKKyAgICAgICAgZG9jdW1lbnQgY29vcmRpbmF0ZXMgdG8gcG9zaXRpb24g
dGhlIHZpZGVvIHdpbmRvdy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0YWJsZSB1
c2luZyBEUlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
Q29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
cjo6TGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjaGls
ZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXI6OnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMpOgorICAgICAg
ICAoTGF5ZXJSZW5kZXJlcik6CisKIDIwMTMtMDMtMTIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIEJhc2ljIGNoaWxkIG9ic2N1cmF0aW9uIHRlc3QgZm9yIGJh
Y2tncm91bmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCAwNDI2NGE4YjAxNTBl
OWM5M2IxOWFmYmY5NzYzYmI1MmU2Zjg1YjA5Li5jYzY2MDIxODg0MDM4MWZiMGFhMTY4MDJkZjQ3
YTQxNTI0NTBiOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NyBAQAorMjAxMy0wMy0xMyAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAg
ICAgICAgW0JsYWNrQmVycnldIEFsbG93IGFuIGVtYmVkZGVyIHRvIHBvc2l0aW9uIGNoaWxkIHdp
bmRvd3MgdXNpbmcgd2luZG93IGNvb3JkaW5hdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQUiAyMzI3NTIKKworICAgICAgICBDaGlsZCB3aW5kb3dz
IHVzZWQgdG8gYWx3YXlzIGJlIHBvc2l0aW9uZWQgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMsCisg
ICAgICAgIHdoaWNoIHJlcXVpcmVzIHRoZQorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OldpbmRvdzo6dmlydHVhbFJlY3QoKSBvZiB0aGUgcGFyZW50CisgICAgICAgIHdp
bmRvdyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgZG9jdW1lbnQgdmlzaWJsZSBjb250ZW50
IHJlY3QuCisgICAgICAgIFRoaXMgaXMgZWFzeSBpZiB0aGVyZSdzIGEgb25lLXRvLW9uZSBjb3Jy
ZXNwb25kZW5jZSBiZXR3ZWVuIHdpbmRvd3MKKyAgICAgICAgYW5kIHNjcm9sbGFibGUgZnJhbWVz
LgorCisgICAgICAgIEhvd2V2ZXIsIGZvciBhbiBlbWJlZGRlciB0aGF0IGNhbiBkaXNwbGF5IGFu
IGVudGlyZSBzY2VuZSBncmFwaCAod2hlcmUKKyAgICAgICAgdGhlIHdlYiBwYWdlIGlzIGp1c3Qg
b25lIG9mIHRoZSBub2RlcykgaW4gb25lIHdpbmRvdywgc2V2ZXJhbAorICAgICAgICBzY3JvbGxh
YmxlIG5vZGVzIG1heSBiZSBwcmVzZW50IGluIHRoYXQgd2luZG93LCBhbmQgaXQncyBkaWZmaWN1
bHQgdG8KKyAgICAgICAga25vdyB3aGljaCBzY3JvbGxhYmxlIG5vZGUgdG8gc3luYyB0aGUgdmly
dHVhbFJlY3Qgd2l0aC4gSXQgY291bGQgYWxzbworICAgICAgICBsZWFkIHRvIGNvbmZsaWN0cywg
aWYgdHdvIHNjcm9sbGFibGUgbm9kZXMgaGF2ZSBjaGlsZCB3aW5kb3dzLgorCisgICAgICAgIEZv
ciB0aGUgbGF0dGVyIHNjZW5hcmlvLCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHVzZSB3aW5kb3cg
Y29vcmRpbmF0ZXMKKyAgICAgICAgdG8gcGxhY2UgY2hpbGQgd2luZG93cy4KKworICAgICAgICBU
aGUgaW50ZXJuYWwgZGVmYXVsdCBpcyB0byB1c2UgZG9jdW1lbnQgY29vcmRpbmF0ZXMsIGZvciBs
ZWdhY3kKKyAgICAgICAgcmVhc29ucy4KKworICAgICAgICBXaGVuIGFuIGV4dGVybmFsIFdlYlBh
Z2VDb21wb3NpdG9yIGlzIGF0dGFjaGVkLCB3ZSBzd2l0Y2ggdG8gdXNpbmcKKyAgICAgICAgd2lu
ZG93IGNvb3JkaW5hdGVzIGluc3RlYWQgb2YgZG9jdW1lbnQgY29vcmRpbmF0ZXMgYnkgZGVmYXVs
dC4gVGhlCisgICAgICAgIGJlaGF2aW9yIGlzIHN0aWxsIGNvbmZpZ3VyYWJsZSB1c2luZyB0aGUg
bmV3IHB1YmxpYworICAgICAgICBzZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVz
IG1ldGhvZC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpzZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6cHJlcGFyZUZyYW1lKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OnNldENoaWxkV2luZG93c1VzZURv
Y3VtZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5oOgor
ICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmg6CisgICAgICAgIChXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGUpOgorCiAyMDEzLTAzLTEyICBNaWtlIEZlbnRvbiAgPG1pZmVudG9uQHJp
bS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFByZXZlbnQgdGV4dCBzZWxlY3Rpb24gaW5z
aWRlIENvbG91ciBhbmQgRGF0ZS9UaW1lIGlucHV0IGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggY2NkMDQ3MGRjZTZmNzQ4YzM3MDE2N2VjNjA5
NTFhYWRjMzc2ZjA5NS4uYzJlNWE0ZWY1MmVmNmIyZGJhYjQzNzc0MWZlYjM1YTkxZjJjYzg3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBAIC0yNDMsMTQg
KzI0MywyNSBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyhkb3Vi
bGUgc2NhbGUsIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZwogI2lmIEVOQUJMRShWSURFTykKICAg
ICBpZiAobV9tZWRpYVBsYXllcikgewogICAgICAgICBpZiAobV9pc1Zpc2libGUpIHsKLSAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gc3BlY2lmeSB0aGUgbWVkaWEgcGxheWVyIGxvY2F0aW9uIGlu
IGNvbnRlbnRzIGNvb3JkaW5hdGVzLiBUaGUgJ3Zpc2libGVSZWN0JwotICAgICAgICAgICAgLy8g
c3BlY2lmaWVzIHRoZSBjb250ZW50IHJlZ2lvbiBjb3ZlcmVkIGJ5IG91ciB2aWV3cG9ydC4gU28g
d2UgdHJhbnNmb3JtIGZyb20gb3VyCi0gICAgICAgICAgICAvLyBub3JtYWxpemVkIGRldmljZSBj
b29yZGluYXRlcyBbLTEsIDFdIHRvIHRoZSAndmlzaWJsZVJlY3QnLgotICAgICAgICAgICAgZmxv
YXQgdnJ3MiA9IHZpc2libGVSZWN0LndpZHRoKCkgLyAyLjA7Ci0gICAgICAgICAgICBmbG9hdCB2
cmgyID0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkgLyAyLjA7Ci0gICAgICAgICAgICBmbG9hdCB4ID0g
bV90cmFuc2Zvcm1lZEJvdW5kcy5wMSgpLngoKSAqIHZydzIgKyB2cncyICsgdmlzaWJsZVJlY3Qu
eCgpOwotICAgICAgICAgICAgZmxvYXQgeSA9IC1tX3RyYW5zZm9ybWVkQm91bmRzLnAxKCkueSgp
ICogdnJoMiArIHZyaDIgKyB2aXNpYmxlUmVjdC55KCk7Ci0gICAgICAgICAgICBtX21lZGlhUGxh
eWVyLT5wYWludCgwLCBJbnRSZWN0KChpbnQpKHggKyAwLjUpLCAoaW50KSh5ICsgMC41KSwgbV9i
b3VuZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIEludFJlY3Qg
cGFpbnRSZWN0OworICAgICAgICAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+Y2hpbGRXaW5kb3dz
VXNlRG9jdW1lbnRDb29yZGluYXRlcygpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0
byBzcGVjaWZ5IHRoZSBtZWRpYSBwbGF5ZXIgbG9jYXRpb24gaW4gY29udGVudHMgY29vcmRpbmF0
ZXMuIFRoZSAndmlzaWJsZVJlY3QnCisgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWVzIHRoZSBj
b250ZW50IHJlZ2lvbiBjb3ZlcmVkIGJ5IG91ciB2aWV3cG9ydC4gU28gd2UgdHJhbnNmb3JtIGZy
b20gb3VyCisgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMg
Wy0xLCAxXSB0byB0aGUgJ3Zpc2libGVSZWN0Jy4KKyAgICAgICAgICAgICAgICBmbG9hdCB2cncy
ID0gdmlzaWJsZVJlY3Qud2lkdGgoKSAvIDIuMDsKKyAgICAgICAgICAgICAgICBmbG9hdCB2cmgy
ID0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkgLyAyLjA7CisgICAgICAgICAgICAgICAgRmxvYXRQb2lu
dCBwKG1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS54KCkgKiB2cncyICsgdnJ3MiArIHZpc2libGVS
ZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAgLW1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS55
KCkgKiB2cmgyICsgdnJoMiArIHZpc2libGVSZWN0LnkoKSk7CisgICAgICAgICAgICAgICAgcGFp
bnRSZWN0ID0gSW50UmVjdChyb3VuZGVkSW50UG9pbnQocCksIG1fYm91bmRzKTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
bV9sYXllclJlbmRlcmVyLT50b1dlYktpdFdpbmRvd0Nvb3JkaW5hdGVzKG1fZHJhd1JlY3QpKTsK
KworICAgICAgICAgICAgLy8gRklYTUU6IENhbGxpbmcgcGFpbnQgb24gdGhlIGNvbXBvc2l0aW5n
IHRocmVhZCwgd2l0aCBhIDAgR3JhcGhpY3NDb250ZXh0IHRvIGJvb3QsCisgICAgICAgICAgICAv
LyBpcyB2ZXJ5IHVuZm9ydHVuYXRlLiBJbiBmYWN0LCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24n
dCBwYWludCBhbnl0aGluZywgYnV0IGp1c3QKKyAgICAgICAgICAgIC8vIG1vdmVzIHRoZSB2aWRl
byB3aW5kb3cgYXJvdW5kLiBXZSBzaG91bGQgZm9sbG93IHRoZSAiZHJhd0J1ZmZlcmluZ0FuaW1h
dGlvbiIgZXhhbXBsZQorICAgICAgICAgICAgLy8gYmVsb3cgYW5kIGludHJvZHVjZSBhIG1vcmUg
c3BlY2lmaWMgbWV0aG9kIGZvciBwb3NpdGlvbmluZyB0aGUgdmlkZW8gd2luZG93LgorICAgICAg
ICAgICAgbV9tZWRpYVBsYXllci0+cGFpbnQoMCwgcGFpbnRSZWN0KTsKKwogICAgICAgICAgICAg
TWVkaWFQbGF5ZXJQcml2YXRlKiBtcHAgPSBzdGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGUq
PihtX21lZGlhUGxheWVyLT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEucW54TWVkaWFQbGF5ZXIpOwog
ICAgICAgICAgICAgbXBwLT5kcmF3QnVmZmVyaW5nQW5pbWF0aW9uKG1fZHJhd1RyYW5zZm9ybSwg
cHJvZ3JhbSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4IGY2OTZj
YWNiM2EwMGQxMWU2ZWI5MmRkYTQzZjljYmZmNTY4MjgyYWMuLmQ4OTU4NjI2YzRjOGRmZWE0NGVk
NWRlYjhiNjlkOWEwZGNkMzNkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcApAQCAtMTU3
LDYgKzE1Nyw3IEBAIExheWVyUmVuZGVyZXI6OkxheWVyUmVuZGVyZXIoR0xFUzJDb250ZXh0KiBj
b250ZXh0KQogICAgICwgbV9pc1JvYnVzdG5lc3NTdXBwb3J0ZWQoZmFsc2UpCiAgICAgLCBtX25l
ZWRzQ29tbWl0KGZhbHNlKQogICAgICwgbV9zdGVuY2lsQ2xlYXJlZChmYWxzZSkKKyAgICAsIG1f
Y2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyhmYWxzZSkKIHsKICAgICAvLyBXZSdy
ZSBub3cgaW5pdGlhbGl6aW5nIGxhemlseSwgc28gYSBjaGVjayBpZiB0aGUgY29udGV4dCBjYW4g
YmUgbWFkZSBjdXJyZW50CiAgICAgLy8gd2lsbCBoYXZlIHRvIHN1ZmZpY2UgdG8gZGV0ZXJtaW5l
IGlmIGhhcmR3YXJlIGNvbXBvc2l0aW5nIGlzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIu
aAppbmRleCBmMmQwNjM0YTQ1OTJiYzYxM2U1MzdlZjU4N2RjNDM4MWRkNDM5N2FiLi41MDQ0MDFh
ZjU3Mzc1YTNhODRmZTQxYjZiYWEyM2I5YTIxOWM4ZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIu
aApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VMYXllclJlc291
cmNlcygpOwogCisgICAgYm9vbCBjaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzOyB9Cisg
ICAgdm9pZCBzZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKGJvb2wgdXNlRG9j
dW1lbnRDb29yZGluYXRlcykgeyBtX2NoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMg
PSB1c2VEb2N1bWVudENvb3JkaW5hdGVzOyB9CisKICAgICAvLyBJbiBvcmRlciB0byByZW5kZXIg
dGhlIGxheWVycywgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyAzIG9wZXJhdGlvbnMsIGluIG9y
ZGVyLgogCiAgICAgLy8gMS4gVXBsb2FkIHRleHR1cmVzIGFuZCBvdGhlciBvcGVyYXRpb25zIHRo
YXQgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggZnJhbWUuCkBA
IC0xMjYsNiArMTI5LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWQgd2hlbiBhIGxheWVyIGRpc2Nv
dmVycyBkdXJpbmcgcmVuZGVyaW5nIHRoYXQgaXQgbmVlZHMgYSBjb21taXQuCiAgICAgdm9pZCBz
ZXROZWVkc0NvbW1pdCgpIHsgbV9uZWVkc0NvbW1pdCA9IHRydWU7IH0KIAorICAgIEludFJlY3Qg
dG9XZWJLaXRXaW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKICAgICBJ
bnRSZWN0IHRvV2ViS2l0RG9jdW1lbnRDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25z
dDsKIAogICAgIC8vIElmIHRoZSBsYXllciBoYXMgYWxyZWFkeSBiZWVuIGRyYXdlZCBvbiBhIHN1
cmZhY2UuCkBAIC0xNDcsNyArMTUxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRyYXdIb2xlUHVu
Y2hSZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKIAogICAgIEludFJlY3QgdG9PcGVuR0xX
aW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IHRv
V2ViS2l0V2luZG93Q29vcmRpbmF0ZXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKICAgICBi
b29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0yMDgsNiArMjExLDcgQEAgcHJpdmF0ZToK
ICAgICBMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0UmVuZGVyaW5nUmVzdWx0czsKICAgICBi
b29sIG1fbmVlZHNDb21taXQ7CiAgICAgYm9vbCBtX3N0ZW5jaWxDbGVhcmVkOworICAgIGJvb2wg
bV9jaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCBh
YzUyNmI2Y2RlY2Y1ZWVmMGFmNTk0MDM0ZjIwNDczYWFjYmUyMjJkLi5lNTI0NjRiZWI3MTg0YzJm
MTg2Mzc0OTViZTRjZmFiZjUzY2JjNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtNDYsNiArNDYsNyBAQCBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0
ZSogcGFnZSwgV2ViUGFnZQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV93ZWJQYWdl
KHBhZ2UpCiAgICAgLCBtX2RyYXdzUm9vdExheWVyKGZhbHNlKQorICAgICwgbV9jaGlsZFdpbmRv
d3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKHRydWUpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZSk7
CiAgICAgc2V0T25lU2hvdCh0cnVlKTsgLy8gb25lLXNob3QgYW5pbWF0aW9uIGNsaWVudApAQCAt
OTIsNiArOTMsMTMgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldE92ZXJsYXlM
YXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBvdmVybGF5TGEKICAgICBtX292ZXJsYXlMYXll
ciA9IG92ZXJsYXlMYXllcjsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNl
dENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMoYm9vbCB1c2VEb2N1bWVudENvb3Jk
aW5hdGVzKQoreworICAgIG1fY2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyA9IHVz
ZURvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKKyAgICAgICAg
bV9sYXllclJlbmRlcmVyLT5zZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKG1f
Y2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyk7Cit9CisKIHZvaWQgV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpwcmVwYXJlRnJhbWUoZG91YmxlIGFuaW1hdGlvblRpbWUpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHQpCkBAIC0xMTAsNiArMTE4LDkgQEAgdm9pZCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OnByZXBhcmVGcmFtZShkb3VibGUgYW5pbWF0aW9uVGltZSkKICAgICAgICAg
ICAgIG1fbGF5ZXJSZW5kZXJlci5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisKKyAgICAgICAgLy8gQXBwbHkgdGhlIGN1cnJlbnQgc2V0dGluZworICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMobV9jaGls
ZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICB9CiAKICAgICAvLyBVbmZvcnR1
bmF0ZWx5LCB3ZSBoYXZlIHRvIHVzZSBjdXJyZW50VGltZSgpIGJlY2F1c2UgdGhlIGFuaW1hdGlv
bnMgYXJlCkBAIC0yNjksNiArMjgwLDkgQEAgV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21w
b3NpdG9yKFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGkKIAogICAg
IFJlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IHRtcCA9IFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZTo6Y3JlYXRlKHBhZ2UtPmQsIGNsaWVudCk7CiAKKyAgICAvLyBGSVhNRTogRm9yIGxl
Z2FjeSByZWFzb25zLCB0aGUgaW50ZXJuYWwgZGVmYXVsdCBpcyB0cnVlLiBVc2UgZmFsc2UgZm9y
IG5ldyBjbGllbnRzLgorICAgIHRtcC0+c2V0Q2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGlu
YXRlcyhmYWxzZSk7CisKICAgICAvLyBLZWVwIG9uZSByZWYgb3Vyc2VsdmVzLi4uCiAgICAgZCA9
IHRtcC5nZXQoKTsKICAgICBkLT5yZWYoKTsKQEAgLTI5Niw2ICszMTAsMTEgQEAgV2ViUGFnZUNv
bXBvc2l0b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGllbnQoKSBjb25zdAogICAgIHJl
dHVybiBkLT5jbGllbnQoKTsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6c2V0Q2hpbGRX
aW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyhib29sIHVzZURvY3VtZW50Q29vcmRpbmF0ZXMp
Cit7CisgICAgZC0+c2V0Q2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyh1c2VEb2N1
bWVudENvb3JkaW5hdGVzKTsKK30KKwogdm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cHJlcGFyZUZy
YW1lKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250ZXh0LCBkb3VibGUgYW5p
bWF0aW9uVGltZSkKIHsKICAgICBkLT5zZXRDb250ZXh0KGNvbnRleHQpOwpAQCAtMzQ4LDYgKzM2
NywxMCBAQCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogV2ViUGFnZUNvbXBvc2l0b3I6OmNsaWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnNl
dENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMoYm9vbCkKK3sKK30KKwogdm9pZCBX
ZWJQYWdlQ29tcG9zaXRvcjo6cHJlcGFyZUZyYW1lKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJD
b250ZXh0KiwgZG91YmxlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvci5oCmluZGV4IDkxM2Y1MDZlZGJiZjU1ZWQ0ZWI5YjAzMWEyMDgz
OTZkZTM2NDc2OTAuLmIxNDhkMjQwZDQxMTg3YjZkNGNhNjU4NDI2MWNhNTlmN2UxZWVlYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmgK
QEAgLTM5LDYgKzM5LDE0IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50
KiBjbGllbnQoKSBjb25zdDsKIAorICAgIC8vIENoaWxkIHdpbmRvd3MgbWF5IGJlIHBvc2l0aW9u
ZWQgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMgaWYgdGhlCisgICAgLy8gQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OnZpcnR1YWxSZWN0KCkgb2YgdGhlIHBhcmVudAorICAg
IC8vIHdpbmRvdyBpcyBrZXB0IGluIHN5bmMgd2l0aCB0aGUgZG9jdW1lbnQgdmlzaWJsZSBjb250
ZW50IHJlY3QuCisgICAgLy8KKyAgICAvLyBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIHRvIHBv
c2l0aW9uIGNoaWxkIHdpbmRvd3MgdXNpbmcgd2luZG93CisgICAgLy8gY29vcmRpbmF0ZXMuCisg
ICAgdm9pZCBzZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKGJvb2wpOworCiAg
ICAgdm9pZCBwcmVwYXJlRnJhbWUoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqLCBk
b3VibGUgYW5pbWF0aW9uVGltZSk7CiAKICAgICB2b2lkIHJlbmRlcihQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkdMRVMyQ29udGV4dCosCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZUNvbXBvc2l0b3JfcC5oCmluZGV4IDY2ZTJjMGJlNGJmOTU0MzU2MjcwYmI4YTVmMGM3
NjNlMmM3MWRiZTMuLjdlMGE4ZjNhZWNhOGJjOTQ0MDY5ZmQ5NGMyZjhmMjcyNTQ1ODkxOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Jf
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Jf
cC5oCkBAIC01MSw2ICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgfldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSgpOwogCiAgICAgLy8gUHVibGljIEFQSQorCisgICAgLy8gRklYTUU6IEZvciBub3csIHRo
ZSBpbnRlcm5hbCBkZWZhdWx0IGlzIHRydWUsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCBpdAorICAg
IC8vIHJlcXVpcmVzIGFuIGVtYmVkZGVyIHRvIGtlZXAgdGhlIFdpbmRvdyB2aXJ0dWFsIHJlY3Qg
aW4gc3luYyB3aXRoCisgICAgLy8gZG9jdW1lbnQgcmVjdCwgd2hpY2ggaXMgYW4gZXh0cmEgYnVy
ZGVuIG9uIHRoZSBlbWJlZGRlci4KKyAgICB2b2lkIHNldENoaWxkV2luZG93c1VzZURvY3VtZW50
Q29vcmRpbmF0ZXMoYm9vbCk7CiAgICAgdm9pZCBwcmVwYXJlRnJhbWUoZG91YmxlIGFuaW1hdGlv
blRpbWUpOwogICAgIHZvaWQgcmVuZGVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRhcmdldFJl
Y3QsCiAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsCkBA
IC0xMTcsNiArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jl
c3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFj
a2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9kcmF3c1Jvb3RMYXllcjsKKyAgICBib29sIG1fY2hp
bGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193106</attachid>
            <date>2013-03-14 05:26:51 -0700</date>
            <delta_ts>2013-03-15 06:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112236-20130314132242.patch</filename>
            <type>text/plain</type>
            <size>13697</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYzOThiMmZhNGEyMTFk
MGIzOWRjN2UyMzg2MGY0MGE0ZmE3MWJmMC4uMTVkMWFjODE1MmU2MjM1ZWJhNGQ0ZGU5MmE2NGQ1
NzZmOGE4YjIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTAzLTEzICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxs
b3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29v
cmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBMYXllclJlbmRlcmVyIHNldHRpbmcgYWRkZWQgaGVyZSBjb250cm9scyB3aGV0aGVyIHRv
IHVzZSB3aW5kb3cgb3IKKyAgICAgICAgZG9jdW1lbnQgY29vcmRpbmF0ZXMgdG8gcG9zaXRpb24g
dGhlIHZpZGVvIHdpbmRvdy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0YWJsZSB1
c2luZyBEUlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
Q29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJl
cjo6TGF5ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpzaG91
bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXI6OnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMpOgor
ICAgICAgICAoTGF5ZXJSZW5kZXJlcik6CisKIDIwMTMtMDMtMTQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZsYW1lIENo
YXJ0LiBNaW5vciBjaGFuZ2VzIGZvciB0aGUgcG9wb3Zlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCmluZGV4IDZjMDA0Y2JkMzcxN2QyYWEwOGQ5OTZlMjVmYmEwMDIwNjUwOTAzMTAuLjMx
MDdkM2JjYjBjNTA5YTY0ZTU5YWZjZTM1ZWI3ODc1ODAxY2MxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAzLTEzICBBcnZpZCBOaWxzc29u
ICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxsb3cgYW4gZW1i
ZWRkZXIgdG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29vcmRpbmF0ZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIzNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDIzMjc1
MgorCisgICAgICAgIENoaWxkIHdpbmRvd3MgdXNlZCB0byBhbHdheXMgYmUgcG9zaXRpb25lZCBp
biBkb2N1bWVudCBjb29yZGluYXRlcywKKyAgICAgICAgd2hpY2ggcmVxdWlyZXMgdGhlCisgICAg
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93Ojp2aXJ0dWFsUmVjdCgp
IG9mIHRoZSBwYXJlbnQKKyAgICAgICAgd2luZG93IHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRo
ZSBkb2N1bWVudCB2aXNpYmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgVGhpcyBpcyBlYXN5IGlm
IHRoZXJlJ3MgYSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gd2luZG93cworICAg
ICAgICBhbmQgc2Nyb2xsYWJsZSBmcmFtZXMuCisKKyAgICAgICAgSG93ZXZlciwgZm9yIGFuIGVt
YmVkZGVyIHRoYXQgY2FuIGRpc3BsYXkgYW4gZW50aXJlIHNjZW5lIGdyYXBoICh3aGVyZQorICAg
ICAgICB0aGUgd2ViIHBhZ2UgaXMganVzdCBvbmUgb2YgdGhlIG5vZGVzKSBpbiBvbmUgd2luZG93
LCBzZXZlcmFsCisgICAgICAgIHNjcm9sbGFibGUgbm9kZXMgbWF5IGJlIHByZXNlbnQgaW4gdGhh
dCB3aW5kb3csIGFuZCBpdCdzIGRpZmZpY3VsdCB0bworICAgICAgICBrbm93IHdoaWNoIHNjcm9s
bGFibGUgbm9kZSB0byBzeW5jIHRoZSB2aXJ0dWFsUmVjdCB3aXRoLiBJdCBjb3VsZCBhbHNvCisg
ICAgICAgIGxlYWQgdG8gY29uZmxpY3RzLCBpZiB0d28gc2Nyb2xsYWJsZSBub2RlcyBoYXZlIGNo
aWxkIHdpbmRvd3MuCisKKyAgICAgICAgRm9yIHRoZSBsYXR0ZXIgc2NlbmFyaW8sIGl0IG1ha2Vz
IG1vcmUgc2Vuc2UgdG8gdXNlIHdpbmRvdyBjb29yZGluYXRlcworICAgICAgICB0byBwbGFjZSBj
aGlsZCB3aW5kb3dzLgorCisgICAgICAgIFRoZSBpbnRlcm5hbCBkZWZhdWx0IGlzIHRvIHVzZSBk
b2N1bWVudCBjb29yZGluYXRlcywgZm9yIGxlZ2FjeQorICAgICAgICByZWFzb25zLgorCisgICAg
ICAgIFdoZW4gYW4gZXh0ZXJuYWwgV2ViUGFnZUNvbXBvc2l0b3IgaXMgYXR0YWNoZWQsIHdlIHN3
aXRjaCB0byB1c2luZworICAgICAgICB3aW5kb3cgY29vcmRpbmF0ZXMgaW5zdGVhZCBvZiBkb2N1
bWVudCBjb29yZGluYXRlcyBieSBkZWZhdWx0LiBUaGUKKyAgICAgICAgYmVoYXZpb3IgaXMgc3Rp
bGwgY29uZmlndXJhYmxlIHVzaW5nIHRoZSBuZXcgcHVibGljCisgICAgICAgIHNldENoaWxkV2lu
ZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMgbWV0aG9kLgorCisgICAgICAgICogQXBpL1dlYlBh
Z2VDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldENoaWxkV2luZG93
c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwcmVwYXJlRnJhbWUp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFn
ZUNvbXBvc2l0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9z
aXRvcjo6c2V0Q2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyk6CisgICAgICAgICog
QXBpL1dlYlBhZ2VDb21wb3NpdG9yLmg6CisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9y
X3AuaDoKKyAgICAgICAgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSk6CisKIDIwMTMtMDMtMTQg
IEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBJblJlZ2lvblNjcm9sbGFibGVBcmVhOiBmaXggY2FsbCB0byB2aXNpYmxlQ29udGVudFJl
Y3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggY2Nk
MDQ3MGRjZTZmNzQ4YzM3MDE2N2VjNjA5NTFhYWRjMzc2ZjA5NS4uOWI4NjY0YWM0OGQzYjExYmM5
YjhlMzA3MTAxOTEzNWFjMjYyYzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRp
bmdUaHJlYWQuY3BwCkBAIC0yNDMsMTQgKzI0MywyNSBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdU
aHJlYWQ6OmRyYXdUZXh0dXJlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJv
ZwogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAobV9tZWRpYVBsYXllcikgewogICAgICAgICBp
ZiAobV9pc1Zpc2libGUpIHsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3BlY2lmeSB0aGUg
bWVkaWEgcGxheWVyIGxvY2F0aW9uIGluIGNvbnRlbnRzIGNvb3JkaW5hdGVzLiBUaGUgJ3Zpc2li
bGVSZWN0JwotICAgICAgICAgICAgLy8gc3BlY2lmaWVzIHRoZSBjb250ZW50IHJlZ2lvbiBjb3Zl
cmVkIGJ5IG91ciB2aWV3cG9ydC4gU28gd2UgdHJhbnNmb3JtIGZyb20gb3VyCi0gICAgICAgICAg
ICAvLyBub3JtYWxpemVkIGRldmljZSBjb29yZGluYXRlcyBbLTEsIDFdIHRvIHRoZSAndmlzaWJs
ZVJlY3QnLgotICAgICAgICAgICAgZmxvYXQgdnJ3MiA9IHZpc2libGVSZWN0LndpZHRoKCkgLyAy
LjA7Ci0gICAgICAgICAgICBmbG9hdCB2cmgyID0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkgLyAyLjA7
Ci0gICAgICAgICAgICBmbG9hdCB4ID0gbV90cmFuc2Zvcm1lZEJvdW5kcy5wMSgpLngoKSAqIHZy
dzIgKyB2cncyICsgdmlzaWJsZVJlY3QueCgpOwotICAgICAgICAgICAgZmxvYXQgeSA9IC1tX3Ry
YW5zZm9ybWVkQm91bmRzLnAxKCkueSgpICogdnJoMiArIHZyaDIgKyB2aXNpYmxlUmVjdC55KCk7
Ci0gICAgICAgICAgICBtX21lZGlhUGxheWVyLT5wYWludCgwLCBJbnRSZWN0KChpbnQpKHggKyAw
LjUpLCAoaW50KSh5ICsgMC41KSwgbV9ib3VuZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCkp
KTsKKyAgICAgICAgICAgIEludFJlY3QgcGFpbnRSZWN0OworICAgICAgICAgICAgaWYgKG1fbGF5
ZXJSZW5kZXJlci0+c2hvdWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcygpKSB7
CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBtZWRpYSBwbGF5ZXIg
bG9jYXRpb24gaW4gY29udGVudHMgY29vcmRpbmF0ZXMuIFRoZSAndmlzaWJsZVJlY3QnCisgICAg
ICAgICAgICAgICAgLy8gc3BlY2lmaWVzIHRoZSBjb250ZW50IHJlZ2lvbiBjb3ZlcmVkIGJ5IG91
ciB2aWV3cG9ydC4gU28gd2UgdHJhbnNmb3JtIGZyb20gb3VyCisgICAgICAgICAgICAgICAgLy8g
bm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgWy0xLCAxXSB0byB0aGUgJ3Zpc2libGVSZWN0
Jy4KKyAgICAgICAgICAgICAgICBmbG9hdCB2cncyID0gdmlzaWJsZVJlY3Qud2lkdGgoKSAvIDIu
MDsKKyAgICAgICAgICAgICAgICBmbG9hdCB2cmgyID0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkgLyAy
LjA7CisgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBwKG1fdHJhbnNmb3JtZWRCb3VuZHMucDEo
KS54KCkgKiB2cncyICsgdnJ3MiArIHZpc2libGVSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAg
ICAgLW1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS55KCkgKiB2cmgyICsgdnJoMiArIHZpc2libGVS
ZWN0LnkoKSk7CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0ID0gSW50UmVjdChyb3VuZGVkSW50
UG9pbnQocCksIG1fYm91bmRzKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9sYXllclJlbmRlcmVyLT50b1dlYktpdFdp
bmRvd0Nvb3JkaW5hdGVzKG1fZHJhd1JlY3QpKTsKKworICAgICAgICAgICAgLy8gRklYTUU6IENh
bGxpbmcgcGFpbnQgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZCwgd2l0aCBhIDAgR3JhcGhpY3ND
b250ZXh0IHRvIGJvb3QsCisgICAgICAgICAgICAvLyBpcyB2ZXJ5IHVuZm9ydHVuYXRlLiBJbiBm
YWN0LCB0aGUgaW1wbGVtZW50YXRpb24gZG9lc24ndCBwYWludCBhbnl0aGluZywgYnV0IGp1c3QK
KyAgICAgICAgICAgIC8vIG1vdmVzIHRoZSB2aWRlbyB3aW5kb3cgYXJvdW5kLiBXZSBzaG91bGQg
Zm9sbG93IHRoZSAiZHJhd0J1ZmZlcmluZ0FuaW1hdGlvbiIgZXhhbXBsZQorICAgICAgICAgICAg
Ly8gYmVsb3cgYW5kIGludHJvZHVjZSBhIG1vcmUgc3BlY2lmaWMgbWV0aG9kIGZvciBwb3NpdGlv
bmluZyB0aGUgdmlkZW8gd2luZG93LgorICAgICAgICAgICAgbV9tZWRpYVBsYXllci0+cGFpbnQo
MCwgcGFpbnRSZWN0KTsKKwogICAgICAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlKiBtcHAgPSBz
dGF0aWNfY2FzdDxNZWRpYVBsYXllclByaXZhdGUqPihtX21lZGlhUGxheWVyLT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEucW54TWVkaWFQbGF5ZXIpOwogICAgICAgICAgICAgbXBwLT5kcmF3QnVmZmVy
aW5nQW5pbWF0aW9uKG1fZHJhd1RyYW5zZm9ybSwgcHJvZ3JhbSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4IGY2OTZjYWNiM2EwMGQxMWU2ZWI5MmRkYTQzZjljYmZm
NTY4MjgyYWMuLmFmMTgyNTlhNjg3NGRjNjNhYzdhYjlmZDU0NDA1YTlkNDA5NzEyNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyLmNwcApAQCAtMTU3LDYgKzE1Nyw3IEBAIExheWVyUmVuZGVyZXI6
OkxheWVyUmVuZGVyZXIoR0xFUzJDb250ZXh0KiBjb250ZXh0KQogICAgICwgbV9pc1JvYnVzdG5l
c3NTdXBwb3J0ZWQoZmFsc2UpCiAgICAgLCBtX25lZWRzQ29tbWl0KGZhbHNlKQogICAgICwgbV9z
dGVuY2lsQ2xlYXJlZChmYWxzZSkKKyAgICAsIG1fc2hvdWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1l
bnRDb29yZGluYXRlcyhmYWxzZSkKIHsKICAgICAvLyBXZSdyZSBub3cgaW5pdGlhbGl6aW5nIGxh
emlseSwgc28gYSBjaGVjayBpZiB0aGUgY29udGV4dCBjYW4gYmUgbWFkZSBjdXJyZW50CiAgICAg
Ly8gd2lsbCBoYXZlIHRvIHN1ZmZpY2UgdG8gZGV0ZXJtaW5lIGlmIGhhcmR3YXJlIGNvbXBvc2l0
aW5nIGlzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaAppbmRleCBmMmQwNjM0YTQ1OTJi
YzYxM2U1MzdlZjU4N2RjNDM4MWRkNDM5N2FiLi4zMjI4MGFlYzUwNmNmZTE4YzE0ZmFkZTQyMWFk
OTdlMDAwMGE1N2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaApAQCAtODUsNiArODUsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlbGVhc2VMYXllclJlc291cmNlcygpOwogCisgICAgYm9vbCBz
aG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzOyB9CisgICAgdm9pZCBz
ZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKGJvb2wgc2hvdWxkVXNlRG9jdW1l
bnRDb29yZGluYXRlcykgeyBtX3Nob3VsZENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0
ZXMgPSBzaG91bGRVc2VEb2N1bWVudENvb3JkaW5hdGVzOyB9CisKICAgICAvLyBJbiBvcmRlciB0
byByZW5kZXIgdGhlIGxheWVycywgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyAzIG9wZXJhdGlv
bnMsIGluIG9yZGVyLgogCiAgICAgLy8gMS4gVXBsb2FkIHRleHR1cmVzIGFuZCBvdGhlciBvcGVy
YXRpb25zIHRoYXQgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2gg
ZnJhbWUuCkBAIC0xMjYsNiArMTI5LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWQgd2hlbiBhIGxh
eWVyIGRpc2NvdmVycyBkdXJpbmcgcmVuZGVyaW5nIHRoYXQgaXQgbmVlZHMgYSBjb21taXQuCiAg
ICAgdm9pZCBzZXROZWVkc0NvbW1pdCgpIHsgbV9uZWVkc0NvbW1pdCA9IHRydWU7IH0KIAorICAg
IEludFJlY3QgdG9XZWJLaXRXaW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25z
dDsKICAgICBJbnRSZWN0IHRvV2ViS2l0RG9jdW1lbnRDb29yZGluYXRlcyhjb25zdCBGbG9hdFJl
Y3QmKSBjb25zdDsKIAogICAgIC8vIElmIHRoZSBsYXllciBoYXMgYWxyZWFkeSBiZWVuIGRyYXdl
ZCBvbiBhIHN1cmZhY2UuCkBAIC0xNDcsNyArMTUxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRy
YXdIb2xlUHVuY2hSZWN0KExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKIAogICAgIEludFJlY3Qg
dG9PcGVuR0xXaW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLSAgICBJ
bnRSZWN0IHRvV2ViS2l0V2luZG93Q29vcmRpbmF0ZXMoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7
CiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCkBAIC0yMDgsNiArMjExLDcgQEAg
cHJpdmF0ZToKICAgICBMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0UmVuZGVyaW5nUmVzdWx0
czsKICAgICBib29sIG1fbmVlZHNDb21taXQ7CiAgICAgYm9vbCBtX3N0ZW5jaWxDbGVhcmVkOwor
ICAgIGJvb2wgbV9zaG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yLmNwcAppbmRleCBhYzUyNmI2Y2RlY2Y1ZWVmMGFmNTk0MDM0ZjIwNDczYWFjYmUyMjJkLi5l
YTc1NjdjNzUyY2Q3NTgxM2NhYjBkMTQwOTZkZjRhZTYyZjViMDA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcApAQCAtNDYsNiAr
NDYsNyBAQCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFnZQogICAgIDogbV9jbGllbnQoY2xpZW50KQog
ICAgICwgbV93ZWJQYWdlKHBhZ2UpCiAgICAgLCBtX2RyYXdzUm9vdExheWVyKGZhbHNlKQorICAg
ICwgbV9zaG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKHRydWUpCiB7CiAg
ICAgQVNTRVJUKG1fd2ViUGFnZSk7CiAgICAgc2V0T25lU2hvdCh0cnVlKTsgLy8gb25lLXNob3Qg
YW5pbWF0aW9uIGNsaWVudApAQCAtOTIsNiArOTMsMTMgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU6OnNldE92ZXJsYXlMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBvdmVybGF5
TGEKICAgICBtX292ZXJsYXlMYXllciA9IG92ZXJsYXlMYXllcjsKIH0KIAordm9pZCBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMo
Ym9vbCBzaG91bGRVc2VEb2N1bWVudENvb3JkaW5hdGVzKQoreworICAgIG1fc2hvdWxkQ2hpbGRX
aW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyA9IHNob3VsZFVzZURvY3VtZW50Q29vcmRpbmF0
ZXM7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlcikKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5z
ZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKG1fc2hvdWxkQ2hpbGRXaW5kb3dz
VXNlRG9jdW1lbnRDb29yZGluYXRlcyk7Cit9CisKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlOjpwcmVwYXJlRnJhbWUoZG91YmxlIGFuaW1hdGlvblRpbWUpCiB7CiAgICAgaWYgKCFtX2Nv
bnRleHQpCkBAIC0xMTAsNiArMTE4LDkgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6
OnByZXBhcmVGcmFtZShkb3VibGUgYW5pbWF0aW9uVGltZSkKICAgICAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlci5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAg
ICAgLy8gQXBwbHkgdGhlIGN1cnJlbnQgc2V0dGluZworICAgICAgICBtX2xheWVyUmVuZGVyZXIt
PnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMobV9zaG91bGRDaGlsZFdpbmRv
d3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICB9CiAKICAgICAvLyBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIHRvIHVzZSBjdXJyZW50VGltZSgpIGJlY2F1c2UgdGhlIGFuaW1hdGlvbnMgYXJl
CkBAIC0yNjksNiArMjgwLDkgQEAgV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9y
KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGkKIAogICAgIFJlZlB0
cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IHRtcCA9IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZTo6Y3JlYXRlKHBhZ2UtPmQsIGNsaWVudCk7CiAKKyAgICAvLyBGSVhNRTogRm9yIGxlZ2FjeSBy
ZWFzb25zLCB0aGUgaW50ZXJuYWwgZGVmYXVsdCBpcyB0cnVlLiBVc2UgZmFsc2UgZm9yIG5ldyBj
bGllbnRzLgorICAgIHRtcC0+c2V0Q2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyhm
YWxzZSk7CisKICAgICAvLyBLZWVwIG9uZSByZWYgb3Vyc2VsdmVzLi4uCiAgICAgZCA9IHRtcC5n
ZXQoKTsKICAgICBkLT5yZWYoKTsKQEAgLTI5Niw2ICszMTAsMTEgQEAgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGllbnQoKSBjb25zdAogICAgIHJldHVybiBk
LT5jbGllbnQoKTsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6c2V0Q2hpbGRXaW5kb3dz
VXNlRG9jdW1lbnRDb29yZGluYXRlcyhib29sIHNob3VsZFVzZURvY3VtZW50Q29vcmRpbmF0ZXMp
Cit7CisgICAgZC0+c2V0Q2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcyhzaG91bGRV
c2VEb2N1bWVudENvb3JkaW5hdGVzKTsKK30KKwogdm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cHJl
cGFyZUZyYW1lKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250ZXh0LCBkb3Vi
bGUgYW5pbWF0aW9uVGltZSkKIHsKICAgICBkLT5zZXRDb250ZXh0KGNvbnRleHQpOwpAQCAtMzQ4
LDYgKzM2NywxMCBAQCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogV2ViUGFnZUNvbXBvc2l0b3I6
OmNsaWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0
b3I6OnNldENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMoYm9vbCkKK3sKK30KKwog
dm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cHJlcGFyZUZyYW1lKFBsYXRmb3JtOjpHcmFwaGljczo6
R0xFUzJDb250ZXh0KiwgZG91YmxlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5oCmluZGV4IDkxM2Y1MDZlZGJiZjU1ZWQ0ZWI5YjAz
MWEyMDgzOTZkZTM2NDc2OTAuLmIxNDhkMjQwZDQxMTg3YjZkNGNhNjU4NDI2MWNhNTlmN2UxZWVl
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yLmgKQEAgLTM5LDYgKzM5LDE0IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2VDb21wb3NpdG9y
Q2xpZW50KiBjbGllbnQoKSBjb25zdDsKIAorICAgIC8vIENoaWxkIHdpbmRvd3MgbWF5IGJlIHBv
c2l0aW9uZWQgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMgaWYgdGhlCisgICAgLy8gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpXaW5kb3c6OnZpcnR1YWxSZWN0KCkgb2YgdGhlIHBhcmVu
dAorICAgIC8vIHdpbmRvdyBpcyBrZXB0IGluIHN5bmMgd2l0aCB0aGUgZG9jdW1lbnQgdmlzaWJs
ZSBjb250ZW50IHJlY3QuCisgICAgLy8KKyAgICAvLyBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlz
IHRvIHBvc2l0aW9uIGNoaWxkIHdpbmRvd3MgdXNpbmcgd2luZG93CisgICAgLy8gY29vcmRpbmF0
ZXMuCisgICAgdm9pZCBzZXRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKGJvb2wp
OworCiAgICAgdm9pZCBwcmVwYXJlRnJhbWUoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRl
eHQqLCBkb3VibGUgYW5pbWF0aW9uVGltZSk7CiAKICAgICB2b2lkIHJlbmRlcihQbGF0Zm9ybTo6
R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oCmluZGV4IDY2ZTJjMGJlNGJmOTU0MzU2MjcwYmI4
YTVmMGM3NjNlMmM3MWRiZTMuLjFiY2NlM2FhZDE2MWUyMmFlZDNkMDM1MTBmMzMyOWU2MzEyYmYw
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3JfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3JfcC5oCkBAIC01MSw2ICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgfldlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZSgpOwogCiAgICAgLy8gUHVibGljIEFQSQorCisgICAgLy8gRklYTUU6IEZvciBu
b3csIHRoZSBpbnRlcm5hbCBkZWZhdWx0IGlzIHRydWUsIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCBp
dAorICAgIC8vIHJlcXVpcmVzIGFuIGVtYmVkZGVyIHRvIGtlZXAgdGhlIFdpbmRvdyB2aXJ0dWFs
IHJlY3QgaW4gc3luYyB3aXRoCisgICAgLy8gZG9jdW1lbnQgcmVjdCwgd2hpY2ggaXMgYW4gZXh0
cmEgYnVyZGVuIG9uIHRoZSBlbWJlZGRlci4KKyAgICB2b2lkIHNldENoaWxkV2luZG93c1VzZURv
Y3VtZW50Q29vcmRpbmF0ZXMoYm9vbCk7CiAgICAgdm9pZCBwcmVwYXJlRnJhbWUoZG91YmxlIGFu
aW1hdGlvblRpbWUpOwogICAgIHZvaWQgcmVuZGVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRh
cmdldFJlY3QsCiAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QsCkBAIC0xMTcsNiArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXllclJlbmRl
cmluZ1Jlc3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOwogICAgIFdlYkNvcmU6OkNvbG9y
IG1fYmFja2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9kcmF3c1Jvb3RMYXllcjsKKyAgICBib29s
IG1fc2hvdWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193292</attachid>
            <date>2013-03-15 06:18:18 -0700</date>
            <delta_ts>2013-03-15 14:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112236-20130315141408.patch</filename>
            <type>text/plain</type>
            <size>25847</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYzOThiMmZhNGEyMTFk
MGIzOWRjN2UyMzg2MGY0MGE0ZmE3MWJmMC4uMmJjYjdjYTQ0Yzg0MDQ3MTg2ZTYwZjNjNmQzZTQ0
NTBhOGUwNTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTE1ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxs
b3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29v
cmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBSIDIzMjc1MgorCisgICAgICAgIFRoZSBMYXllckNvbXBvc2l0aW5nVGhyZWFkIGNhbiBub3cg
cG9zaXRpb24gdGhlIHZpZGVvIHdpbmRvdyB1c2luZworICAgICAgICBlaXRoZXIgZG9jdW1lbnQg
b3Igd2luZG93IGNvb3JkaW5hdGVzLgorCisgICAgICAgIFRoZSBMYXllclJlbmRlcmVyIGNsYXNz
IGdldHMgYSBuZXcgY2xpZW50IGludGVyZmFjZS4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAgICAg
YXZvaWQgc3RhdGUgZHVwbGljYXRpb24gYnkgZGVsZWdhdGluZyBkZWNpc2lvbnMgZGlyZWN0bHkg
dG8gdGhlIGNsaWVudCwKKyAgICAgICAgd2hpY2ggY2FuIHRoZW4gYmUgaW4gY2hhcmdlIG9mIHRo
ZSAob25lIGFuZCBvbmx5KSBzdGF0ZS4KKworICAgICAgICBUaGUgY29udGV4dCBpcyBtb3ZlZCBv
dmVyIHRvIHRoZSBjbGllbnQsIGFzIHdlbGwgYXMgZGVsZWdhdGlvbiBvZiB0aGUKKyAgICAgICAg
ZGVjaXNpb24gb24gd2hldGhlciB0byBjbGVhciB0aGUgc3VyZmFjZSBldmVyeSBmcmFtZS4KKwor
ICAgICAgICBBbHNvLCB0aGUgZGVjaXNpb24gb24gd2hpY2ggY29vcmRpbmF0ZSBzeXN0ZW0gdG8g
dXNlIGZvciBwb3NpdGlvbmluZworICAgICAgICBjaGlsZCB3aW5kb3dzIGlzIGRlbGVnYXRlZCB0
byB0aGUgY2xpZW50IGludGVyZmFjZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0
YWJsZSB1c2luZyBEUlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OkxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6c2V0Vmlld3BvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnRvV2ViS2l0V2luZG93Q29vcmRpbmF0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6bWFrZUNvbnRleHRDdXJyZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEdy
YXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2xpZW50Ojp+TGF5ZXJSZW5kZXJl
ckNsaWVudCk6CisKIDIwMTMtMDMtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZsYW1lIENoYXJ0LiBNaW5vciBjaGFu
Z2VzIGZvciB0aGUgcG9wb3Zlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDZj
MDA0Y2JkMzcxN2QyYWEwOGQ5OTZlMjVmYmEwMDIwNjUwOTAzMTAuLmJkMmE1OGFlNDAxYjk2MWY1
YzU2NzFmN2EyODljNWIyNGJhNDgxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUzIEBACisyMDEzLTAzLTE1ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25Acmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxsb3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRp
b24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIzNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDIzMjc1MgorCisgICAgICAgIENo
aWxkIHdpbmRvd3MgdXNlZCB0byBhbHdheXMgYmUgcG9zaXRpb25lZCBpbiBkb2N1bWVudCBjb29y
ZGluYXRlcywKKyAgICAgICAgd2hpY2ggcmVxdWlyZXMgdGhlCisgICAgICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93Ojp2aXJ0dWFsUmVjdCgpIG9mIHRoZSBwYXJlbnQK
KyAgICAgICAgd2luZG93IHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBkb2N1bWVudCB2aXNp
YmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgVGhpcyBpcyBlYXN5IGlmIHRoZXJlJ3MgYSBvbmUt
dG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gd2luZG93cworICAgICAgICBhbmQgc2Nyb2xs
YWJsZSBmcmFtZXMuCisKKyAgICAgICAgSG93ZXZlciwgZm9yIGFuIGVtYmVkZGVyIHRoYXQgY2Fu
IGRpc3BsYXkgYW4gZW50aXJlIHNjZW5lIGdyYXBoICh3aGVyZQorICAgICAgICB0aGUgd2ViIHBh
Z2UgaXMganVzdCBvbmUgb2YgdGhlIG5vZGVzKSBpbiBvbmUgd2luZG93LCBzZXZlcmFsCisgICAg
ICAgIHNjcm9sbGFibGUgbm9kZXMgbWF5IGJlIHByZXNlbnQgaW4gdGhhdCB3aW5kb3csIGFuZCBp
dCdzIGRpZmZpY3VsdCB0bworICAgICAgICBrbm93IHdoaWNoIHNjcm9sbGFibGUgbm9kZSB0byBz
eW5jIHRoZSB2aXJ0dWFsUmVjdCB3aXRoLiBJdCBjb3VsZCBhbHNvCisgICAgICAgIGxlYWQgdG8g
Y29uZmxpY3RzLCBpZiB0d28gc2Nyb2xsYWJsZSBub2RlcyBoYXZlIGNoaWxkIHdpbmRvd3MuCisK
KyAgICAgICAgRm9yIHRoZSBsYXR0ZXIgc2NlbmFyaW8sIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8g
dXNlIHdpbmRvdyBjb29yZGluYXRlcworICAgICAgICB0byBwbGFjZSBjaGlsZCB3aW5kb3dzLgor
CisgICAgICAgIFRoZSBpbnRlcm5hbCBkZWZhdWx0IGlzIHRvIHVzZSBkb2N1bWVudCBjb29yZGlu
YXRlcywgZm9yIGxlZ2FjeQorICAgICAgICByZWFzb25zLgorCisgICAgICAgIFdoZW4gYW4gZXh0
ZXJuYWwgV2ViUGFnZUNvbXBvc2l0b3IgaXMgYXR0YWNoZWQsIHdlIHN3aXRjaCB0byB1c2luZwor
ICAgICAgICB3aW5kb3cgY29vcmRpbmF0ZXMgaW5zdGVhZCBvZiBkb2N1bWVudCBjb29yZGluYXRl
cyBieSBkZWZhdWx0LiBUaGUKKyAgICAgICAgYmVoYXZpb3IgaXMgc3RpbGwgY29uZmlndXJhYmxl
IHVzaW5nIHRoZSBuZXcgcHVibGljCisgICAgICAgIHNldENoaWxkV2luZG93UGxhY2VtZW50IG1l
dGhvZC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlOjpzZXRDb250ZXh0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwcmVwYXJlRnJhbWUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbmRlcik6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVy
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZTo6c2hvdWxkQ2xlYXJTdXJmYWNlQmVmb3JlQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpzaG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OnNldENoaWxk
V2luZG93UGxhY2VtZW50KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuaDoKKyAg
ICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldENoaWxkV2luZG93UGxhY2VtZW50
KToKKyAgICAgICAgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6bGF5ZXJSZW5kZXJlckRlc3Ry
b3llZCk6CisKIDIwMTMtMDMtMTQgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJblJlZ2lvblNjcm9sbGFibGVBcmVhOiBmaXggY2Fs
bCB0byB2aXNpYmxlQ29udGVudFJlY3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZC5jcHAKaW5kZXggY2NkMDQ3MGRjZTZmNzQ4YzM3MDE2N2VjNjA5NTFhYWRjMzc2ZjA5
NS4uNTg2MTRhYmQ2ZTdlZDBhMzM3YTA1ZTg2NGNmZWFkOWQxNDM4NzBhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0
aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVyTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKQEAgLTI0MywxNCArMjQ0LDIxIEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJsZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9n
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChtX21lZGlhUGxheWVyKSB7CiAgICAgICAgIGlm
IChtX2lzVmlzaWJsZSkgewotICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBt
ZWRpYSBwbGF5ZXIgbG9jYXRpb24gaW4gY29udGVudHMgY29vcmRpbmF0ZXMuIFRoZSAndmlzaWJs
ZVJlY3QnCi0gICAgICAgICAgICAvLyBzcGVjaWZpZXMgdGhlIGNvbnRlbnQgcmVnaW9uIGNvdmVy
ZWQgYnkgb3VyIHZpZXdwb3J0LiBTbyB3ZSB0cmFuc2Zvcm0gZnJvbSBvdXIKLSAgICAgICAgICAg
IC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNvb3JkaW5hdGVzIFstMSwgMV0gdG8gdGhlICd2aXNpYmxl
UmVjdCcuCi0gICAgICAgICAgICBmbG9hdCB2cncyID0gdmlzaWJsZVJlY3Qud2lkdGgoKSAvIDIu
MDsKLSAgICAgICAgICAgIGZsb2F0IHZyaDIgPSB2aXNpYmxlUmVjdC5oZWlnaHQoKSAvIDIuMDsK
LSAgICAgICAgICAgIGZsb2F0IHggPSBtX3RyYW5zZm9ybWVkQm91bmRzLnAxKCkueCgpICogdnJ3
MiArIHZydzIgKyB2aXNpYmxlUmVjdC54KCk7Ci0gICAgICAgICAgICBmbG9hdCB5ID0gLW1fdHJh
bnNmb3JtZWRCb3VuZHMucDEoKS55KCkgKiB2cmgyICsgdnJoMiArIHZpc2libGVSZWN0LnkoKTsK
LSAgICAgICAgICAgIG1fbWVkaWFQbGF5ZXItPnBhaW50KDAsIEludFJlY3QoKGludCkoeCArIDAu
NSksIChpbnQpKHkgKyAwLjUpLCBtX2JvdW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSkp
OworICAgICAgICAgICAgSW50UmVjdCBwYWludFJlY3Q7CisgICAgICAgICAgICBpZiAobV9sYXll
clJlbmRlcmVyLT5jbGllbnQoKS0+c2hvdWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGlu
YXRlcygpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBtZWRp
YSBwbGF5ZXIgbG9jYXRpb24gaW4gY29udGVudHMgY29vcmRpbmF0ZXMuIFRoZSAndmlzaWJsZVJl
Y3QnCisgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWVzIHRoZSBjb250ZW50IHJlZ2lvbiBjb3Zl
cmVkIGJ5IG91ciB2aWV3cG9ydC4gU28gd2UgdHJhbnNmb3JtIGZyb20gb3VyCisgICAgICAgICAg
ICAgICAgLy8gbm9ybWFsaXplZCBkZXZpY2UgY29vcmRpbmF0ZXMgWy0xLCAxXSB0byB0aGUgJ3Zp
c2libGVSZWN0Jy4KKyAgICAgICAgICAgICAgICBmbG9hdCB2cncyID0gdmlzaWJsZVJlY3Qud2lk
dGgoKSAvIDIuMDsKKyAgICAgICAgICAgICAgICBmbG9hdCB2cmgyID0gdmlzaWJsZVJlY3QuaGVp
Z2h0KCkgLyAyLjA7CisgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBwKG1fdHJhbnNmb3JtZWRC
b3VuZHMucDEoKS54KCkgKiB2cncyICsgdnJ3MiArIHZpc2libGVSZWN0LngoKSwKKyAgICAgICAg
ICAgICAgICAgICAgLW1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS55KCkgKiB2cmgyICsgdnJoMiAr
IHZpc2libGVSZWN0LnkoKSk7CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0ID0gSW50UmVjdChy
b3VuZGVkSW50UG9pbnQocCksIG1fYm91bmRzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgRmxvYXRSZWN0IHIgPSBtX2xheWVyUmVuZGVyZXItPnRvV2ViS2l0V2luZG93
Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fbWVkaWFQbGF5
ZXItPnBhaW50KDAsIHBhaW50UmVjdCk7CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGUq
IG1wcCA9IHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZSo+KG1fbWVkaWFQbGF5ZXItPnBs
YXRmb3JtTWVkaWEoKS5tZWRpYS5xbnhNZWRpYVBsYXllcik7CiAgICAgICAgICAgICBtcHAtPmRy
YXdCdWZmZXJpbmdBbmltYXRpb24obV9kcmF3VHJhbnNmb3JtLCBwcm9ncmFtKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5kZXggZjY5NmNhY2IzYTAwZDExZTZlYjkyZGRh
NDNmOWNiZmY1NjgyODJhYy4uYzA0MTcyM2ZmODg1YWUwNjYwYjRkNmQ5MDY3YTBlYjk0ZTkzYjk5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwg
MjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzUsNiArMzUsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKIAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2xpZW50LmgiCiAKICNpbmNsdWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCiAj
aW5jbHVkZSAiTGF5ZXJGaWx0ZXJSZW5kZXJlci5oIgpAQCAtMTQyLDE4ICsxNDMsMTcgQEAgc3Rh
dGljIFZlY3RvcjxMYXllckNvbXBvc2l0aW5nVGhyZWFkKj4gcmF3UHRyVmVjdG9yRnJvbVJlZlB0
clZlY3Rvcihjb25zdCBWZWN0b3IKICAgICByZXR1cm4gc3VibGF5ZXJMaXN0OwogfQogCi1QYXNz
T3duUHRyPExheWVyUmVuZGVyZXI+IExheWVyUmVuZGVyZXI6OmNyZWF0ZShHTEVTMkNvbnRleHQq
IGNvbnRleHQpCitQYXNzT3duUHRyPExheWVyUmVuZGVyZXI+IExheWVyUmVuZGVyZXI6OmNyZWF0
ZShMYXllclJlbmRlcmVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBMYXllclJlbmRlcmVyKGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVy
UmVuZGVyZXIoY2xpZW50KSk7CiB9CiAKLUxheWVyUmVuZGVyZXI6OkxheWVyUmVuZGVyZXIoR0xF
UzJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9zY2FsZSgxLjApCitMYXllclJlbmRlcmVyOjpM
YXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKKyAgICAsIG1fc2NhbGUoMS4wKQogICAgICwgbV9hbmltYXRpb25UaW1lKC1udW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKQogICAgICwgbV9mYm8oMCkKICAgICAsIG1f
Y3VycmVudExheWVyUmVuZGVyZXJTdXJmYWNlKDApCi0gICAgLCBtX2NsZWFyU3VyZmFjZU9uRHJh
d0xheWVycyh0cnVlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2lzUm9idXN0
bmVzc1N1cHBvcnRlZChmYWxzZSkKICAgICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCiAgICAgLCBt
X3N0ZW5jaWxDbGVhcmVkKGZhbHNlKQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlcjo6c2V0Vmlld3BvcnQoY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlCiAjZW5kaWYKICAgICBnbFNjaXNzb3IobV9zY2lzc29yUmVjdC54KCksIG1fc2Np
c3NvclJlY3QueSgpLCBtX3NjaXNzb3JSZWN0LndpZHRoKCksIG1fc2Npc3NvclJlY3QuaGVpZ2h0
KCkpOwogCi0gICAgaWYgKG1fY2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKSB7CisgICAgaWYgKG1f
Y2xpZW50LT5zaG91bGRDbGVhclN1cmZhY2VCZWZvcmVDb21wb3NpdGluZygpKSB7CiAgICAgICAg
IGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKICAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKICAgICB9CkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpj
b21wb3NpdGVMYXllcnMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgTGF5ZXJD
b20KICAgICBpZiAobV9sYXllcnNMb2NraW5nVGV4dHVyZVJlc291cmNlcy5zaXplKCkpCiAgICAg
ICAgIGdsRmluaXNoKCk7CiAKLSAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgbV9j
bGllbnQtPmNvbnRleHQoKS0+c3dhcEJ1ZmZlcnMoKTsKIAogICAgIGdsRGlzYWJsZShHTF9TQ0lT
U09SX1RFU1QpOwogICAgIGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIEludFJlY3QgTGF5ZXJSZW5kZXJlcjo6dG9XZWJLaXRXaW5kb3dDb29yZGluYXRlcyhj
b25zdCBGbG9hdFJlY3QmIHIpIGNvbnN0CiAgICAgZmxvYXQgdncyID0gbV92aWV3cG9ydC53aWR0
aCgpIC8gMi4wOwogICAgIGZsb2F0IHZoMiA9IG1fdmlld3BvcnQuaGVpZ2h0KCkgLyAyLjA7CiAg
ICAgZmxvYXQgb3ggPSBtX3ZpZXdwb3J0LngoKSArIHZ3MjsKLSAgICBmbG9hdCBveSA9IG1fY29u
dGV4dC0+c3VyZmFjZVNpemUoKS5oZWlnaHQoKSAtIChtX3ZpZXdwb3J0LnkoKSArIHZoMik7Cisg
ICAgZmxvYXQgb3kgPSBtX2NsaWVudC0+Y29udGV4dCgpLT5zdXJmYWNlU2l6ZSgpLmhlaWdodCgp
IC0gKG1fdmlld3BvcnQueSgpICsgdmgyKTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChG
bG9hdFJlY3Qoci54KCkgKiB2dzIgKyBveCwgLShyLnkoKStyLmhlaWdodCgpKSAqIHZoMiArIG95
LCByLndpZHRoKCkgKiB2dzIsIHIuaGVpZ2h0KCkgKiB2aDIpKTsKIH0KIApAQCAtMTAxNyw3ICsx
MDE3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjp1cGRhdGVTY2lzc29ySWZOZWVkZWQoY29uc3Qg
RmxvYXRSZWN0JiBjbGlwUmVjdCkKIAogYm9vbCBMYXllclJlbmRlcmVyOjptYWtlQ29udGV4dEN1
cnJlbnQoKQogewotICAgIGJvb2wgcmV0ID0gbV9jb250ZXh0LT5tYWtlQ3VycmVudCgpOworICAg
IGJvb2wgcmV0ID0gbV9jbGllbnQtPmNvbnRleHQoKS0+bWFrZUN1cnJlbnQoKTsKICAgICBpZiAo
cmV0ICYmIG1faXNSb2J1c3RuZXNzU3VwcG9ydGVkKSB7CiAgICAgICAgIGlmIChtX2dsR2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0VYVCgpICE9IEdMX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bENyaXRpY2FsLCAiUm9idXN0IE9wZW5HTCBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBBYm9ydGlu
Zy4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKaW5kZXggZjJkMDYzNGE0NTkyYmM2MTNlNTM3ZWY1
ODdkYzQzODFkZDQzOTdhYi4uOTE0MmU5ZDQ4YWFmODlmZGQ3YmFhZGVjZGVjZThkZDQ5OWM1Yjg1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEz
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC01MSw2ICs1MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IExheWVyQ29tcG9zaXRpbmdUaHJlYWQ7CitjbGFzcyBMYXllclJlbmRlcmVyQ2xpZW50OwogY2xh
c3MgTGF5ZXJSZW5kZXJlclN1cmZhY2U7CiAKIGNsYXNzIExheWVyUmVuZGVyaW5nUmVzdWx0cyB7
CkBAIC03OCwxMSArNzksMTMgQEAgY2xhc3MgTGF5ZXJSZW5kZXJlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZsb2F0
IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCwgZmxvYXQgbmVhclosIGZsb2F0IGZhclop
OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlcj4gY3JlYXRlKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NP
d25QdHI8TGF5ZXJSZW5kZXJlcj4gY3JlYXRlKExheWVyUmVuZGVyZXJDbGllbnQqKTsKIAotICAg
IExheWVyUmVuZGVyZXIoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRl
eHQqKTsKKyAgICBMYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDbGllbnQqKTsKICAgICB+TGF5
ZXJSZW5kZXJlcigpOwogCisgICAgTGF5ZXJSZW5kZXJlckNsaWVudCogY2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnQ7IH0KKwogICAgIHZvaWQgcmVsZWFzZUxheWVyUmVzb3VyY2VzKCk7
CiAKICAgICAvLyBJbiBvcmRlciB0byByZW5kZXIgdGhlIGxheWVycywgeW91IG11c3QgZG8gdGhl
IGZvbGxvd2luZyAzIG9wZXJhdGlvbnMsIGluIG9yZGVyLgpAQCAtMTE1LDEwICsxMTgsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0KIAotICAgIHZvaWQgc2V0Q2xlYXJTdXJmYWNlT25EcmF3
TGF5ZXJzKGJvb2wgY2xlYXIpIHsgbV9jbGVhclN1cmZhY2VPbkRyYXdMYXllcnMgPSBjbGVhcjsg
fQotICAgIGJvb2wgY2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
bGVhclN1cmZhY2VPbkRyYXdMYXllcnM7IH0KLQotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
OyB9CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNv
bnRleHQoKSBjb25zdDsKIAogICAgIGNvbnN0IExheWVyUmVuZGVyaW5nUmVzdWx0cyYgbGFzdFJl
bmRlcmluZ1Jlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSZW5kZXJpbmdSZXN1bHRzOyB9
CiAKQEAgLTEyNiw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCB3aGVuIGEgbGF5ZXIg
ZGlzY292ZXJzIGR1cmluZyByZW5kZXJpbmcgdGhhdCBpdCBuZWVkcyBhIGNvbW1pdC4KICAgICB2
b2lkIHNldE5lZWRzQ29tbWl0KCkgeyBtX25lZWRzQ29tbWl0ID0gdHJ1ZTsgfQogCisgICAgSW50
UmVjdCB0b1dlYktpdFdpbmRvd0Nvb3JkaW5hdGVzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0Owog
ICAgIEludFJlY3QgdG9XZWJLaXREb2N1bWVudENvb3JkaW5hdGVzKGNvbnN0IEZsb2F0UmVjdCYp
IGNvbnN0OwogCiAgICAgLy8gSWYgdGhlIGxheWVyIGhhcyBhbHJlYWR5IGJlZW4gZHJhd2VkIG9u
IGEgc3VyZmFjZS4KQEAgLTE0Nyw3ICsxNDgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0hv
bGVQdW5jaFJlY3QoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOwogCiAgICAgSW50UmVjdCB0b09w
ZW5HTFdpbmRvd0Nvb3JkaW5hdGVzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEludFJl
Y3QgdG9XZWJLaXRXaW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAog
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKQEAgLTE2OSw2ICsxNjksOCBAQCBwcml2
YXRlOgogICAgIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9n
cmFtJiB1c2VQcm9ncmFtKFByb2dyYW1JbmRleCk7CiAgICAgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpHTEVTMlByb2dyYW0mIHVzZUxheWVyUHJvZ3JhbShMYXllckRhdGE6
OkxheWVyUHJvZ3JhbSwgYm9vbCBpc01hc2sgPSBmYWxzZSk7CiAKKyAgICBMYXllclJlbmRlcmVy
Q2xpZW50KiBtX2NsaWVudDsKKwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
R0xFUzJQcm9ncmFtIG1fcHJvZ3JhbXNbTnVtYmVyT2ZQcm9ncmFtc107CiAKICAgICAvLyBTaGFk
ZXIgdW5pZm9ybSBhbmQgYXR0cmlidXRlIGxvY2F0aW9ucy4KQEAgLTE5MywxNSArMTk1LDEyIEBA
IHByaXZhdGU6CiAgICAgTGF5ZXJSZW5kZXJlclN1cmZhY2UqIG1fY3VycmVudExheWVyUmVuZGVy
ZXJTdXJmYWNlOwogCiAgICAgYm9vbCBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7Ci0gICAgYm9vbCBt
X2NsZWFyU3VyZmFjZU9uRHJhd0xheWVyczsKIAogICAgIC8vIE1hcCBhc3NvY2lhdGluZyBsYXll
cnMgd2l0aCB0ZXh0dXJlcyBpZHMgdXNlZCBieSB0aGUgR0wgY29tcG9zaXRvci4KICAgICB0eXBl
ZGVmIEhhc2hTZXQ8TGF5ZXJDb21wb3NpdGluZ1RocmVhZCo+IExheWVyU2V0OwogICAgIExheWVy
U2V0IG1fbGF5ZXJzOwogICAgIExheWVyU2V0IG1fbGF5ZXJzTG9ja2luZ1RleHR1cmVSZXNvdXJj
ZXM7CiAKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCog
bV9jb250ZXh0OwotCiAgICAgYm9vbCBtX2lzUm9idXN0bmVzc1N1cHBvcnRlZDsKICAgICBQRk5H
TEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DIG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhUOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlYjEx
NTEwZjAzYzgxZjdiNjM1MDZiMTg0NzhmN2IwYzFkZGQ1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJD
bGllbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorICovCisKKyNpZm5kZWYgTGF5ZXJSZW5kZXJlckNsaWVudF9oCisjZGVmaW5lIExheWVyUmVu
ZGVyZXJDbGllbnRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1l
c3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgUGxhdGZvcm0geworbmFtZXNwYWNlIEdyYXBo
aWNzIHsKK2NsYXNzIEdMRVMyQ29udGV4dDsKK30KK30KK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBMYXllclJlbmRlcmVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5M
YXllclJlbmRlcmVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJSZW5kZXJl
ckRlc3Ryb3llZCgpID0gMDsKKworICAgIHZpcnR1YWwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2xlYXJTdXJmYWNlQmVmb3JlQ29tcG9zaXRpbmcoKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHNob3VsZENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMoKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCBhYzUyNmI2Y2RlY2Y1ZWVmMGFmNTk0
MDM0ZjIwNDczYWFjYmUyMjJkLi5kOGEzYjcxYTRmMGQ4MjEyODY1NzNhODk3YTljZDkxNWVjYzc1
N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NDYsNiArNDYsNyBAQCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFnZQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV93ZWJQYWdlKHBhZ2UpCiAgICAgLCBtX2RyYXdzUm9vdExheWVyKGZhbHNl
KQorICAgICwgbV9jaGlsZFdpbmRvd1BsYWNlbWVudChXZWJQYWdlQ29tcG9zaXRvcjo6RG9jdW1l
bnRDb29yZGluYXRlcykKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlKTsKICAgICBzZXRPbmVTaG90
KHRydWUpOyAvLyBvbmUtc2hvdCBhbmltYXRpb24gY2xpZW50CkBAIC03Nyw5ICs3OCwxMCBAQCB2
b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Q29udGV4dChQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkdMRVMyQ29udGV4dCogY29udAogICAgIGlmIChtX2NvbnRleHQgPT0gY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0ID0gY29udGV4dDsKLSAgICBpZiAoIW1fY29u
dGV4dCkKKyAgICAvLyBMYXllclJlbmRlcmVyIG5lZWRzIHRvIGNsZWFuIHVwIHVzaW5nIHRoZSBw
cmV2aW91cyBjb250ZXh0LgorICAgIGlmICghY29udGV4dCkKICAgICAgICAgbV9sYXllclJlbmRl
cmVyLmNsZWFyKCk7CisgICAgbV9jb250ZXh0ID0gY29udGV4dDsKIH0KIAogdm9pZCBXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OnNldFJvb3RMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBy
b290TGF5ZXIpCkBAIC0xMDUsNyArMTA3LDcgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OnByZXBhcmVGcmFtZShkb3VibGUgYW5pbWF0aW9uVGltZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKCFtX2xheWVyUmVuZGVyZXIpIHsKLSAgICAgICAgbV9sYXllclJlbmRlcmVyID0g
TGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dCk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJl
ciA9IExheWVyUmVuZGVyZXI6OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgaWYgKCFtX2xheWVyUmVu
ZGVyZXItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKSkgewogICAgICAgICAgICAgbV9sYXllclJlbmRl
cmVyLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzYsOCArMTM4LDYgQEAgdm9p
ZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbmRlcihjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBJbnRSZWN0JgogICAgIGlmICghbV93ZWJQYWdlIHx8IG1fd2ViUGFnZS0+Y29t
cG9zaXRvcigpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbGF5ZXJSZW5kZXJl
ci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKGZhbHNlKTsKLQogICAgIEZsb2F0UmVjdCBj
b250ZW50cyA9IG1fd2ViUGFnZS0+bWFwRnJvbVRyYW5zZm9ybWVkRmxvYXRSZWN0KHRyYW5zZm9y
bWVkQ29udGVudHMpOwogCiAgICAgbV9sYXllclJlbmRlcmVyLT5zZXRWaWV3cG9ydCh0YXJnZXRS
ZWN0LCBjbGlwUmVjdCwgY29udGVudHMsIG1fbGF5b3V0UmVjdCwgbV9kb2N1bWVudFJlY3Quc2l6
ZSgpKTsKQEAgLTE4NSwxMSArMTg1LDYgQEAgYm9vbCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6
OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWMKICAgICBp
ZiAoIW1fbGF5ZXJSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBz
aG91bGRDbGVhciA9IGRyYXdzUm9vdExheWVyKCk7Ci0gICAgaWYgKEJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZSkKLSAgICAgICAgc2hvdWxkQ2xl
YXIgPSBzaG91bGRDbGVhciB8fCAhYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5n
KCk7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdMYXllcnMoc2hv
dWxkQ2xlYXIpOwotCiAgICAgLy8gT3BlbkdMIHdpbmRvdyBjb29yZGluYXRlcyBvcmlnaW4gaXMg
YXQgdGhlIGxvd2VyIGxlZnQgY29ybmVyIG9mIHRoZSBzdXJmYWNlIHdoaWxlCiAgICAgLy8gV2Vi
S2l0IHVzZXMgdXBwZXIgbGVmdCBhcyB0aGUgb3JpZ2luIG9mIHRoZSB3aW5kb3cgY29vcmRpbmF0
ZSBzeXN0ZW0uIFRoZSBwYXNzZWQgaW4gJ2RzdFJlY3QnCiAgICAgLy8gaXMgaW4gV2ViS2l0IHdp
bmRvdyBjb29yZGluYXRlIHN5c3RlbS4gSGVyZSB3ZSBzZXR1cCB0aGUgdmlld3BvcnQgdG8gdGhl
IGNvcnJlc3BvbmRpbmcgdmFsdWUKQEAgLTIyMSw2ICsyMTYsMjUgQEAgdm9pZCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OnJlbGVhc2VMYXllclJlc291cmNlcygpCiAgICAgICAgIG1fbGF5ZXJS
ZW5kZXJlci0+cmVsZWFzZUxheWVyUmVzb3VyY2VzKCk7CiB9CiAKK2Jvb2wgV2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlOjpzaG91bGRDbGVhclN1cmZhY2VCZWZvcmVDb21wb3NpdGluZygpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOb3JtYWxs
eSB3ZSB3b3VsZG4ndCBjbGVhciwgYnV0IGluIGxlZ2FjeSBtb2RlIHdlIGhhdmUgc29tZSBtb3Jl
IGNvbXBsZXgKKyAgICAvLyBsb2dpYy4KKyAgICBib29sIHNob3VsZENsZWFyID0gZHJhd3NSb290
TGF5ZXIoKTsKKyAgICBpZiAoQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBhZ2Ut
Pm1fYmFja2luZ1N0b3JlKQorICAgICAgICBzaG91bGRDbGVhciA9IHNob3VsZENsZWFyIHx8ICFi
YWNraW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKKworICAgIHJldHVybiBzaG91
bGRDbGVhcjsKK30KKworYm9vbCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNob3VsZENoaWxk
V2luZG93c1VzZURvY3VtZW50Q29vcmRpbmF0ZXMoKQoreworICAgIHJldHVybiBtX2NoaWxkV2lu
ZG93UGxhY2VtZW50ID09IFdlYlBhZ2VDb21wb3NpdG9yOjpEb2N1bWVudENvb3JkaW5hdGVzOwor
fQorCiB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uRnJhbWVDaGFuZ2Vk
KCkKIHsKICAgICBCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IG1fd2ViUGFnZS0+bV9iYWNr
aW5nU3RvcmU7CkBAIC0yNjksNiArMjgzLDEwIEBAIFdlYlBhZ2VDb21wb3NpdG9yOjpXZWJQYWdl
Q29tcG9zaXRvcihXZWJQYWdlKiBwYWdlLCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpCiAK
ICAgICBSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiB0bXAgPSBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OmNyZWF0ZShwYWdlLT5kLCBjbGllbnQpOwogCisgICAgLy8gRklYTUU6IEZv
ciBsZWdhY3kgcmVhc29ucywgdGhlIGludGVybmFsIGRlZmF1bHQgaXMgdG8gdXNlIGRvY3VtZW50
IGNvb3JkaW5hdGVzLgorICAgIC8vIFVzZSB3aW5kb3cgY29vcmRpbmF0ZXMgZm9yIG5ldyBjbGll
bnRzLgorICAgIHRtcC0+c2V0Q2hpbGRXaW5kb3dQbGFjZW1lbnQoV2luZG93Q29vcmRpbmF0ZXMp
OworCiAgICAgLy8gS2VlcCBvbmUgcmVmIG91cnNlbHZlcy4uLgogICAgIGQgPSB0bXAuZ2V0KCk7
CiAgICAgZC0+cmVmKCk7CkBAIC0yOTYsNiArMzE0LDExIEBAIFdlYlBhZ2VDb21wb3NpdG9yQ2xp
ZW50KiBXZWJQYWdlQ29tcG9zaXRvcjo6Y2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gZC0+Y2xp
ZW50KCk7CiB9CiAKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnNldENoaWxkV2luZG93UGxhY2Vt
ZW50KENoaWxkV2luZG93UGxhY2VtZW50IHBsYWNlbWVudCkKK3sKKyAgICBkLT5zZXRDaGlsZFdp
bmRvd1BsYWNlbWVudChwbGFjZW1lbnQpOworfQorCiB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpw
cmVwYXJlRnJhbWUoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQsIGRv
dWJsZSBhbmltYXRpb25UaW1lKQogewogICAgIGQtPnNldENvbnRleHQoY29udGV4dCk7CkBAIC0z
NDgsNiArMzcxLDEwIEBAIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBXZWJQYWdlQ29tcG9zaXRv
cjo6Y2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9z
aXRvcjo6c2V0Q2hpbGRXaW5kb3dQbGFjZW1lbnQoQ2hpbGRXaW5kb3dQbGFjZW1lbnQpCit7Cit9
CisKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkdMRVMyQ29udGV4dCosIGRvdWJsZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaAppbmRleCA5MTNmNTA2ZWRiYmY1NWVkNGVi
OWIwMzFhMjA4Mzk2ZGUzNjQ3NjkwLi5kMzc2ZmU4MjE5M2Q3YjUwYzQ3YTg1NDliNDcyMWU3Zjdm
NDYwZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VD
b21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29t
cG9zaXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zOSw2ICszOSwxNSBA
QCBwdWJsaWM6CiAKICAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpZW50KCkgY29uc3Q7
CiAKKyAgICAvLyBDaGlsZCB3aW5kb3dzIG1heSBiZSBwb3NpdGlvbmVkIGluIGRvY3VtZW50IGNv
b3JkaW5hdGVzIGlmIHRoZQorICAgIC8vIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXaW5kb3c6OnZp
cnR1YWxSZWN0KCkgb2YgdGhlIHBhcmVudCB3aW5kb3cgaXMga2VwdAorICAgIC8vIGluIHN5bmMg
d2l0aCB0aGUgZG9jdW1lbnQgdmlzaWJsZSBjb250ZW50IHJlY3QuCisgICAgLy8KKyAgICAvLyBP
dGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIHRvIHBvc2l0aW9uIGNoaWxkIHdpbmRvd3MgdXNpbmcg
d2luZG93CisgICAgLy8gY29vcmRpbmF0ZXMuCisgICAgZW51bSBDaGlsZFdpbmRvd1BsYWNlbWVu
dCB7IFdpbmRvd0Nvb3JkaW5hdGVzLCBEb2N1bWVudENvb3JkaW5hdGVzIH07CisgICAgdm9pZCBz
ZXRDaGlsZFdpbmRvd1BsYWNlbWVudChDaGlsZFdpbmRvd1BsYWNlbWVudCk7CisKICAgICB2b2lk
IHByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosIGRvdWJsZSBh
bmltYXRpb25UaW1lKTsKIAogICAgIHZvaWQgcmVuZGVyKFBsYXRmb3JtOjpHcmFwaGljczo6R0xF
UzJDb250ZXh0KiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZUNvbXBvc2l0b3JfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
Q29tcG9zaXRvcl9wLmgKaW5kZXggNjZlMmMwYmU0YmY5NTQzNTYyNzBiYjhhNWYwYzc2M2UyYzcx
ZGJlMy4uYTFjMzY1YjAxOTk5NmYyZGRjZGNiNDU5ZWYxYTVjNTcwN2E0N2M5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDggQEAK
IAogI2luY2x1ZGUgIkxheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNsaWVudC5oIgorI2luY2x1ZGUgIldl
YlBhZ2VDb21wb3NpdG9yLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1BbmltYXRp
b25GcmFtZVJhdGVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR0xF
UzJDb250ZXh0Lmg+CkBAIC00MSw3ICs0MywxMCBAQCBjbGFzcyBXZWJQYWdlQ29tcG9zaXRvckNs
aWVudDsKIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwogCiAvLyBUaGlzIGNsYXNzIG1heSBvbmx5IGJl
IHVzZWQgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4gU28gaXQgZG9lcyBub3QgbmVlZCB0byBi
ZSB0aHJlYWRzYWZlcmVmY291bnRlZC4KLWNsYXNzIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4sIHB1YmxpYyBQbGF0
Zm9ybTo6QW5pbWF0aW9uRnJhbWVSYXRlQ2xpZW50IHsKK2NsYXNzIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZQorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
PgorICAgICwgcHVibGljIFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDbGllbnQKKyAgICAsIHB1Ymxp
YyBQbGF0Zm9ybTo6QW5pbWF0aW9uRnJhbWVSYXRlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IGNyZWF0ZShXZWJQYWdlUHJp
dmF0ZSogcGFnZSwgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkKICAgICB7CkBAIC01
MSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB+V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKCk7CiAK
ICAgICAvLyBQdWJsaWMgQVBJCisgICAgdm9pZCBzZXRDaGlsZFdpbmRvd1BsYWNlbWVudChXZWJQ
YWdlQ29tcG9zaXRvcjo6Q2hpbGRXaW5kb3dQbGFjZW1lbnQgcGxhY2VtZW50KSB7IG1fY2hpbGRX
aW5kb3dQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7IH0KICAgICB2b2lkIHByZXBhcmVGcmFtZShkb3Vi
bGUgYW5pbWF0aW9uVGltZSk7CiAgICAgdm9pZCByZW5kZXIoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgdGFyZ2V0UmVjdCwKICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBj
bGlwUmVjdCwKQEAgLTEwMiw5ICsxMDgsMTYgQEAgcHJvdGVjdGVkOgogICAgIFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSosIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50Kik7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhbmltYXRpb25GcmFtZUNoYW5nZWQoKTsKICAgICB2b2lk
IGNvbXBvc2l0ZUxheWVycyhjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwog
CisgICAgLy8gTGF5ZXJSZW5kZXJlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBsYXllclJlbmRl
cmVyRGVzdHJveWVkKCkgeyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyU3VyZmFjZUJl
Zm9yZUNvbXBvc2l0aW5nKCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENoaWxkV2luZG93c1Vz
ZURvY3VtZW50Q29vcmRpbmF0ZXMoKTsKKworICAgIC8vIEFuaW1hdGlvbkZyYW1lUmF0ZUNsaWVu
dAorICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25GcmFtZUNoYW5nZWQoKTsKKwogICAgIFdlYlBh
Z2VDb21wb3NpdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQ
YWdlOwogICAgIFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBtX2NvbnRleHQ7CkBA
IC0xMTcsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jl
c3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFj
a2dyb3VuZENvbG9yOwogICAgIGJvb2wgbV9kcmF3c1Jvb3RMYXllcjsKKyAgICBXZWJQYWdlQ29t
cG9zaXRvcjo6Q2hpbGRXaW5kb3dQbGFjZW1lbnQgbV9jaGlsZFdpbmRvd1BsYWNlbWVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193374</attachid>
            <date>2013-03-15 14:11:35 -0700</date>
            <delta_ts>2013-03-15 15:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112236-20130315220730.patch</filename>
            <type>text/plain</type>
            <size>25718</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYzOThiMmZhNGEyMTFk
MGIzOWRjN2UyMzg2MGY0MGE0ZmE3MWJmMC4uMmJjYjdjYTQ0Yzg0MDQ3MTg2ZTYwZjNjNmQzZTQ0
NTBhOGUwNTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTE1ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxs
b3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29v
cmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMjIzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBSIDIzMjc1MgorCisgICAgICAgIFRoZSBMYXllckNvbXBvc2l0aW5nVGhyZWFkIGNhbiBub3cg
cG9zaXRpb24gdGhlIHZpZGVvIHdpbmRvdyB1c2luZworICAgICAgICBlaXRoZXIgZG9jdW1lbnQg
b3Igd2luZG93IGNvb3JkaW5hdGVzLgorCisgICAgICAgIFRoZSBMYXllclJlbmRlcmVyIGNsYXNz
IGdldHMgYSBuZXcgY2xpZW50IGludGVyZmFjZS4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAgICAg
YXZvaWQgc3RhdGUgZHVwbGljYXRpb24gYnkgZGVsZWdhdGluZyBkZWNpc2lvbnMgZGlyZWN0bHkg
dG8gdGhlIGNsaWVudCwKKyAgICAgICAgd2hpY2ggY2FuIHRoZW4gYmUgaW4gY2hhcmdlIG9mIHRo
ZSAob25lIGFuZCBvbmx5KSBzdGF0ZS4KKworICAgICAgICBUaGUgY29udGV4dCBpcyBtb3ZlZCBv
dmVyIHRvIHRoZSBjbGllbnQsIGFzIHdlbGwgYXMgZGVsZWdhdGlvbiBvZiB0aGUKKyAgICAgICAg
ZGVjaXNpb24gb24gd2hldGhlciB0byBjbGVhciB0aGUgc3VyZmFjZSBldmVyeSBmcmFtZS4KKwor
ICAgICAgICBBbHNvLCB0aGUgZGVjaXNpb24gb24gd2hpY2ggY29vcmRpbmF0ZSBzeXN0ZW0gdG8g
dXNlIGZvciBwb3NpdGlvbmluZworICAgICAgICBjaGlsZCB3aW5kb3dzIGlzIGRlbGVnYXRlZCB0
byB0aGUgY2xpZW50IGludGVyZmFjZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vdCB0ZXN0
YWJsZSB1c2luZyBEUlQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OkxheWVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6c2V0Vmlld3BvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OnRvV2ViS2l0V2luZG93Q29vcmRpbmF0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6bWFrZUNvbnRleHRDdXJyZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEdy
YXBoaWNzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGF5ZXJSZW5kZXJlckNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2xpZW50Ojp+TGF5ZXJSZW5kZXJl
ckNsaWVudCk6CisKIDIwMTMtMDMtMTQgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZsYW1lIENoYXJ0LiBNaW5vciBjaGFu
Z2VzIGZvciB0aGUgcG9wb3Zlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IDZj
MDA0Y2JkMzcxN2QyYWEwOGQ5OTZlMjVmYmEwMDIwNjUwOTAzMTAuLmY5YTUwMTAwNzcxNTgzNzli
ZGJkZmQzNWJmNzJhM2U1OWJkNDJhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDUyIEBACisyMDEzLTAzLTE1ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25Acmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gQWxsb3cgYW4gZW1iZWRkZXIgdG8gcG9zaXRp
b24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cgY29vcmRpbmF0ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjIzNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBSIDIzMjc1MgorCisgICAgICAgIENo
aWxkIHdpbmRvd3MgdXNlZCB0byBhbHdheXMgYmUgcG9zaXRpb25lZCBpbiBkb2N1bWVudCBjb29y
ZGluYXRlcywKKyAgICAgICAgd2hpY2ggcmVxdWlyZXMgdGhlCisgICAgICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6V2luZG93Ojp2aXJ0dWFsUmVjdCgpIG9mIHRoZSBwYXJlbnQK
KyAgICAgICAgd2luZG93IHRvIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBkb2N1bWVudCB2aXNp
YmxlIGNvbnRlbnQgcmVjdC4KKyAgICAgICAgVGhpcyBpcyBlYXN5IGlmIHRoZXJlJ3MgYSBvbmUt
dG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gd2luZG93cworICAgICAgICBhbmQgc2Nyb2xs
YWJsZSBmcmFtZXMuCisKKyAgICAgICAgSG93ZXZlciwgZm9yIGFuIGVtYmVkZGVyIHRoYXQgY2Fu
IGRpc3BsYXkgYW4gZW50aXJlIHNjZW5lIGdyYXBoICh3aGVyZQorICAgICAgICB0aGUgd2ViIHBh
Z2UgaXMganVzdCBvbmUgb2YgdGhlIG5vZGVzKSBpbiBvbmUgd2luZG93LCBzZXZlcmFsCisgICAg
ICAgIHNjcm9sbGFibGUgbm9kZXMgbWF5IGJlIHByZXNlbnQgaW4gdGhhdCB3aW5kb3csIGFuZCBp
dCdzIGRpZmZpY3VsdCB0bworICAgICAgICBrbm93IHdoaWNoIHNjcm9sbGFibGUgbm9kZSB0byBz
eW5jIHRoZSB2aXJ0dWFsUmVjdCB3aXRoLiBJdCBjb3VsZCBhbHNvCisgICAgICAgIGxlYWQgdG8g
Y29uZmxpY3RzLCBpZiB0d28gc2Nyb2xsYWJsZSBub2RlcyBoYXZlIGNoaWxkIHdpbmRvd3MuCisK
KyAgICAgICAgRm9yIHRoZSBsYXR0ZXIgc2NlbmFyaW8sIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8g
dXNlIHdpbmRvdyBjb29yZGluYXRlcworICAgICAgICB0byBwbGFjZSBjaGlsZCB3aW5kb3dzLgor
CisgICAgICAgIFRoZSBpbnRlcm5hbCBkZWZhdWx0IGlzIHRvIHVzZSBkb2N1bWVudCBjb29yZGlu
YXRlcywgZm9yIGxlZ2FjeQorICAgICAgICByZWFzb25zLgorCisgICAgICAgIFdoZW4gYW4gZXh0
ZXJuYWwgV2ViUGFnZUNvbXBvc2l0b3IgaXMgYXR0YWNoZWQsIHdlIHN3aXRjaCB0byB1c2luZwor
ICAgICAgICB3aW5kb3cgY29vcmRpbmF0ZXMgaW5zdGVhZCBvZiBkb2N1bWVudCBjb29yZGluYXRl
cyBieSBkZWZhdWx0LiBUaGUKKyAgICAgICAgYmVoYXZpb3IgaXMgc3RpbGwgY29uZmlndXJhYmxl
IHVzaW5nIHRoZSBuZXcgcHVibGljCisgICAgICAgIHNldENoaWxkV2luZG93UGxhY2VtZW50IG1l
dGhvZC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlOjpzZXRDb250ZXh0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwcmVwYXJlRnJhbWUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbmRlcik6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVy
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZTo6c2hvdWxkQ2xlYXJTdXJmYWNlQmVmb3JlQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpzaG91bGRDaGlsZFdpbmRvd3NVc2VEb2N1bWVudENvb3JkaW5hdGVzKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKToK
KyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OnNldENoaWxk
V2luZG93UGxhY2VtZW50KToKKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuaDoKKyAg
ICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNldENoaWxkV2luZG93UGxhY2VtZW50
KToKKyAgICAgICAgKFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSk6CisKIDIwMTMtMDMtMTQgIEFs
YmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBJblJlZ2lvblNjcm9sbGFibGVBcmVhOiBmaXggY2FsbCB0byB2aXNpYmxlQ29udGVudFJlY3Qo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggY2NkMDQ3
MGRjZTZmNzQ4YzM3MDE2N2VjNjA5NTFhYWRjMzc2ZjA5NS4uNTg2MTRhYmQ2ZTdlZDBhMzM3YTA1
ZTg2NGNmZWFkOWQxNDM4NzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oIgogI2luY2x1
ZGUgIkxheWVyTWVzc2FnZS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIK
ICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKQEAgLTI0MywxNCAr
MjQ0LDIxIEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJs
ZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9nCiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IGlmIChtX21lZGlhUGxheWVyKSB7CiAgICAgICAgIGlmIChtX2lzVmlzaWJsZSkgewotICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBtZWRpYSBwbGF5ZXIgbG9jYXRpb24gaW4g
Y29udGVudHMgY29vcmRpbmF0ZXMuIFRoZSAndmlzaWJsZVJlY3QnCi0gICAgICAgICAgICAvLyBz
cGVjaWZpZXMgdGhlIGNvbnRlbnQgcmVnaW9uIGNvdmVyZWQgYnkgb3VyIHZpZXdwb3J0LiBTbyB3
ZSB0cmFuc2Zvcm0gZnJvbSBvdXIKLSAgICAgICAgICAgIC8vIG5vcm1hbGl6ZWQgZGV2aWNlIGNv
b3JkaW5hdGVzIFstMSwgMV0gdG8gdGhlICd2aXNpYmxlUmVjdCcuCi0gICAgICAgICAgICBmbG9h
dCB2cncyID0gdmlzaWJsZVJlY3Qud2lkdGgoKSAvIDIuMDsKLSAgICAgICAgICAgIGZsb2F0IHZy
aDIgPSB2aXNpYmxlUmVjdC5oZWlnaHQoKSAvIDIuMDsKLSAgICAgICAgICAgIGZsb2F0IHggPSBt
X3RyYW5zZm9ybWVkQm91bmRzLnAxKCkueCgpICogdnJ3MiArIHZydzIgKyB2aXNpYmxlUmVjdC54
KCk7Ci0gICAgICAgICAgICBmbG9hdCB5ID0gLW1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS55KCkg
KiB2cmgyICsgdnJoMiArIHZpc2libGVSZWN0LnkoKTsKLSAgICAgICAgICAgIG1fbWVkaWFQbGF5
ZXItPnBhaW50KDAsIEludFJlY3QoKGludCkoeCArIDAuNSksIChpbnQpKHkgKyAwLjUpLCBtX2Jv
dW5kcy53aWR0aCgpLCBtX2JvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICAgICAgSW50UmVjdCBw
YWludFJlY3Q7CisgICAgICAgICAgICBpZiAobV9sYXllclJlbmRlcmVyLT5jbGllbnQoKS0+c2hv
dWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcygpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBtZWRpYSBwbGF5ZXIgbG9jYXRpb24gaW4gY29u
dGVudHMgY29vcmRpbmF0ZXMuIFRoZSAndmlzaWJsZVJlY3QnCisgICAgICAgICAgICAgICAgLy8g
c3BlY2lmaWVzIHRoZSBjb250ZW50IHJlZ2lvbiBjb3ZlcmVkIGJ5IG91ciB2aWV3cG9ydC4gU28g
d2UgdHJhbnNmb3JtIGZyb20gb3VyCisgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplZCBkZXZp
Y2UgY29vcmRpbmF0ZXMgWy0xLCAxXSB0byB0aGUgJ3Zpc2libGVSZWN0Jy4KKyAgICAgICAgICAg
ICAgICBmbG9hdCB2cncyID0gdmlzaWJsZVJlY3Qud2lkdGgoKSAvIDIuMDsKKyAgICAgICAgICAg
ICAgICBmbG9hdCB2cmgyID0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkgLyAyLjA7CisgICAgICAgICAg
ICAgICAgRmxvYXRQb2ludCBwKG1fdHJhbnNmb3JtZWRCb3VuZHMucDEoKS54KCkgKiB2cncyICsg
dnJ3MiArIHZpc2libGVSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAgLW1fdHJhbnNmb3Jt
ZWRCb3VuZHMucDEoKS55KCkgKiB2cmgyICsgdnJoMiArIHZpc2libGVSZWN0LnkoKSk7CisgICAg
ICAgICAgICAgICAgcGFpbnRSZWN0ID0gSW50UmVjdChyb3VuZGVkSW50UG9pbnQocCksIG1fYm91
bmRzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHIg
PSBtX2xheWVyUmVuZGVyZXItPnRvV2ViS2l0V2luZG93Q29vcmRpbmF0ZXMobV9kcmF3UmVjdCk7
CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fbWVkaWFQbGF5ZXItPnBhaW50KDAsIHBhaW50UmVjdCk7
CiAgICAgICAgICAgICBNZWRpYVBsYXllclByaXZhdGUqIG1wcCA9IHN0YXRpY19jYXN0PE1lZGlh
UGxheWVyUHJpdmF0ZSo+KG1fbWVkaWFQbGF5ZXItPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5xbnhN
ZWRpYVBsYXllcik7CiAgICAgICAgICAgICBtcHAtPmRyYXdCdWZmZXJpbmdBbmltYXRpb24obV9k
cmF3VHJhbnNmb3JtLCBwcm9ncmFtKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5j
cHAKaW5kZXggZjY5NmNhY2IzYTAwZDExZTZlYjkyZGRhNDNmOWNiZmY1NjgyODJhYy4uYzA0MTcy
M2ZmODg1YWUwNjYwYjRkNmQ5MDY3YTBlYjk0ZTkzYjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVy
ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsNiAr
MzUsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2xpZW50LmgiCiAKICNpbmNs
dWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAiTGF5ZXJGaWx0ZXJSZW5k
ZXJlci5oIgpAQCAtMTQyLDE4ICsxNDMsMTcgQEAgc3RhdGljIFZlY3RvcjxMYXllckNvbXBvc2l0
aW5nVGhyZWFkKj4gcmF3UHRyVmVjdG9yRnJvbVJlZlB0clZlY3Rvcihjb25zdCBWZWN0b3IKICAg
ICByZXR1cm4gc3VibGF5ZXJMaXN0OwogfQogCi1QYXNzT3duUHRyPExheWVyUmVuZGVyZXI+IExh
eWVyUmVuZGVyZXI6OmNyZWF0ZShHTEVTMkNvbnRleHQqIGNvbnRleHQpCitQYXNzT3duUHRyPExh
eWVyUmVuZGVyZXI+IExheWVyUmVuZGVyZXI6OmNyZWF0ZShMYXllclJlbmRlcmVyQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclJlbmRlcmVyKGNvbnRleHQp
KTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyUmVuZGVyZXIoY2xpZW50KSk7CiB9CiAK
LUxheWVyUmVuZGVyZXI6OkxheWVyUmVuZGVyZXIoR0xFUzJDb250ZXh0KiBjb250ZXh0KQotICAg
IDogbV9zY2FsZSgxLjApCitMYXllclJlbmRlcmVyOjpMYXllclJlbmRlcmVyKExheWVyUmVuZGVy
ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc2NhbGUo
MS4wKQogICAgICwgbV9hbmltYXRpb25UaW1lKC1udW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKQogICAgICwgbV9mYm8oMCkKICAgICAsIG1fY3VycmVudExheWVyUmVuZGVyZXJTdXJm
YWNlKDApCi0gICAgLCBtX2NsZWFyU3VyZmFjZU9uRHJhd0xheWVycyh0cnVlKQotICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2lzUm9idXN0bmVzc1N1cHBvcnRlZChmYWxzZSkKICAg
ICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCiAgICAgLCBtX3N0ZW5jaWxDbGVhcmVkKGZhbHNlKQpA
QCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6c2V0Vmlld3BvcnQoY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlCiAjZW5kaWYKICAgICBn
bFNjaXNzb3IobV9zY2lzc29yUmVjdC54KCksIG1fc2Npc3NvclJlY3QueSgpLCBtX3NjaXNzb3JS
ZWN0LndpZHRoKCksIG1fc2Npc3NvclJlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYgKG1fY2xlYXJT
dXJmYWNlT25EcmF3TGF5ZXJzKSB7CisgICAgaWYgKG1fY2xpZW50LT5zaG91bGRDbGVhclN1cmZh
Y2VCZWZvcmVDb21wb3NpdGluZygpKSB7CiAgICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKICAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKICAgICB9CkBAIC0zNTIs
NyArMzUyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgTGF5ZXJDb20KICAgICBpZiAobV9sYXllcnNMb2Nr
aW5nVGV4dHVyZVJlc291cmNlcy5zaXplKCkpCiAgICAgICAgIGdsRmluaXNoKCk7CiAKLSAgICBt
X2NvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgbV9jbGllbnQtPmNvbnRleHQoKS0+c3dhcEJ1
ZmZlcnMoKTsKIAogICAgIGdsRGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOwogICAgIGdsRGlzYWJs
ZShHTF9TVEVOQ0lMX1RFU1QpOwpAQCAtNTU4LDcgKzU1OCw3IEBAIEludFJlY3QgTGF5ZXJSZW5k
ZXJlcjo6dG9XZWJLaXRXaW5kb3dDb29yZGluYXRlcyhjb25zdCBGbG9hdFJlY3QmIHIpIGNvbnN0
CiAgICAgZmxvYXQgdncyID0gbV92aWV3cG9ydC53aWR0aCgpIC8gMi4wOwogICAgIGZsb2F0IHZo
MiA9IG1fdmlld3BvcnQuaGVpZ2h0KCkgLyAyLjA7CiAgICAgZmxvYXQgb3ggPSBtX3ZpZXdwb3J0
LngoKSArIHZ3MjsKLSAgICBmbG9hdCBveSA9IG1fY29udGV4dC0+c3VyZmFjZVNpemUoKS5oZWln
aHQoKSAtIChtX3ZpZXdwb3J0LnkoKSArIHZoMik7CisgICAgZmxvYXQgb3kgPSBtX2NsaWVudC0+
Y29udGV4dCgpLT5zdXJmYWNlU2l6ZSgpLmhlaWdodCgpIC0gKG1fdmlld3BvcnQueSgpICsgdmgy
KTsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3Qoci54KCkgKiB2dzIgKyBv
eCwgLShyLnkoKStyLmhlaWdodCgpKSAqIHZoMiArIG95LCByLndpZHRoKCkgKiB2dzIsIHIuaGVp
Z2h0KCkgKiB2aDIpKTsKIH0KIApAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyOjp1cGRhdGVTY2lzc29ySWZOZWVkZWQoY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKIAog
Ym9vbCBMYXllclJlbmRlcmVyOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIGJvb2wgcmV0
ID0gbV9jb250ZXh0LT5tYWtlQ3VycmVudCgpOworICAgIGJvb2wgcmV0ID0gbV9jbGllbnQtPmNv
bnRleHQoKS0+bWFrZUN1cnJlbnQoKTsKICAgICBpZiAocmV0ICYmIG1faXNSb2J1c3RuZXNzU3Vw
cG9ydGVkKSB7CiAgICAgICAgIGlmIChtX2dsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpICE9
IEdMX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3
YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUm9idXN0IE9wZW5H
TCBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBBYm9ydGluZy4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
LmgKaW5kZXggZjJkMDYzNGE0NTkyYmM2MTNlNTM3ZWY1ODdkYzQzODFkZDQzOTdhYi4uOTE0MmU5
ZDQ4YWFmODlmZGQ3YmFhZGVjZGVjZThkZDQ5OWM1Yjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MSw2ICs1MSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ7
CitjbGFzcyBMYXllclJlbmRlcmVyQ2xpZW50OwogY2xhc3MgTGF5ZXJSZW5kZXJlclN1cmZhY2U7
CiAKIGNsYXNzIExheWVyUmVuZGVyaW5nUmVzdWx0cyB7CkBAIC03OCwxMSArNzksMTMgQEAgY2xh
c3MgTGF5ZXJSZW5kZXJlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZs
b2F0IHRvcCwgZmxvYXQgbmVhclosIGZsb2F0IGZhclopOwogCi0gICAgc3RhdGljIFBhc3NPd25Q
dHI8TGF5ZXJSZW5kZXJlcj4gY3JlYXRlKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
R0xFUzJDb250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJSZW5kZXJlcj4gY3Jl
YXRlKExheWVyUmVuZGVyZXJDbGllbnQqKTsKIAotICAgIExheWVyUmVuZGVyZXIoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqKTsKKyAgICBMYXllclJlbmRlcmVy
KExheWVyUmVuZGVyZXJDbGllbnQqKTsKICAgICB+TGF5ZXJSZW5kZXJlcigpOwogCisgICAgTGF5
ZXJSZW5kZXJlckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwog
ICAgIHZvaWQgcmVsZWFzZUxheWVyUmVzb3VyY2VzKCk7CiAKICAgICAvLyBJbiBvcmRlciB0byBy
ZW5kZXIgdGhlIGxheWVycywgeW91IG11c3QgZG8gdGhlIGZvbGxvd2luZyAzIG9wZXJhdGlvbnMs
IGluIG9yZGVyLgpAQCAtMTE1LDEwICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhcmR3
YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0K
IAotICAgIHZvaWQgc2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKGJvb2wgY2xlYXIpIHsgbV9j
bGVhclN1cmZhY2VPbkRyYXdMYXllcnMgPSBjbGVhcjsgfQotICAgIGJvb2wgY2xlYXJTdXJmYWNl
T25EcmF3TGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jbGVhclN1cmZhY2VPbkRyYXdMYXllcnM7
IH0KLQotICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBj
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKIAogICAgIGNv
bnN0IExheWVyUmVuZGVyaW5nUmVzdWx0cyYgbGFzdFJlbmRlcmluZ1Jlc3VsdHMoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RSZW5kZXJpbmdSZXN1bHRzOyB9CiAKQEAgLTEyNiw2ICsxMjYsNyBAQCBw
dWJsaWM6CiAgICAgLy8gVXNlZCB3aGVuIGEgbGF5ZXIgZGlzY292ZXJzIGR1cmluZyByZW5kZXJp
bmcgdGhhdCBpdCBuZWVkcyBhIGNvbW1pdC4KICAgICB2b2lkIHNldE5lZWRzQ29tbWl0KCkgeyBt
X25lZWRzQ29tbWl0ID0gdHJ1ZTsgfQogCisgICAgSW50UmVjdCB0b1dlYktpdFdpbmRvd0Nvb3Jk
aW5hdGVzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogICAgIEludFJlY3QgdG9XZWJLaXREb2N1
bWVudENvb3JkaW5hdGVzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCiAgICAgLy8gSWYgdGhl
IGxheWVyIGhhcyBhbHJlYWR5IGJlZW4gZHJhd2VkIG9uIGEgc3VyZmFjZS4KQEAgLTE0Nyw3ICsx
NDgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd0hvbGVQdW5jaFJlY3QoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCopOwogCiAgICAgSW50UmVjdCB0b09wZW5HTFdpbmRvd0Nvb3JkaW5hdGVzKGNv
bnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotICAgIEludFJlY3QgdG9XZWJLaXRXaW5kb3dDb29yZGlu
YXRlcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAKQEAgLTE2OSw2ICsxNjksOCBAQCBwcml2YXRlOgogICAgIGNvbnN0IEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9ncmFtJiB1c2VQcm9ncmFtKFByb2dyYW1J
bmRleCk7CiAgICAgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMlBy
b2dyYW0mIHVzZUxheWVyUHJvZ3JhbShMYXllckRhdGE6OkxheWVyUHJvZ3JhbSwgYm9vbCBpc01h
c2sgPSBmYWxzZSk7CiAKKyAgICBMYXllclJlbmRlcmVyQ2xpZW50KiBtX2NsaWVudDsKKwogICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9ncmFtIG1fcHJvZ3JhbXNb
TnVtYmVyT2ZQcm9ncmFtc107CiAKICAgICAvLyBTaGFkZXIgdW5pZm9ybSBhbmQgYXR0cmlidXRl
IGxvY2F0aW9ucy4KQEAgLTE5MywxNSArMTk1LDEyIEBAIHByaXZhdGU6CiAgICAgTGF5ZXJSZW5k
ZXJlclN1cmZhY2UqIG1fY3VycmVudExheWVyUmVuZGVyZXJTdXJmYWNlOwogCiAgICAgYm9vbCBt
X2hhcmR3YXJlQ29tcG9zaXRpbmc7Ci0gICAgYm9vbCBtX2NsZWFyU3VyZmFjZU9uRHJhd0xheWVy
czsKIAogICAgIC8vIE1hcCBhc3NvY2lhdGluZyBsYXllcnMgd2l0aCB0ZXh0dXJlcyBpZHMgdXNl
ZCBieSB0aGUgR0wgY29tcG9zaXRvci4KICAgICB0eXBlZGVmIEhhc2hTZXQ8TGF5ZXJDb21wb3Np
dGluZ1RocmVhZCo+IExheWVyU2V0OwogICAgIExheWVyU2V0IG1fbGF5ZXJzOwogICAgIExheWVy
U2V0IG1fbGF5ZXJzTG9ja2luZ1RleHR1cmVSZXNvdXJjZXM7CiAKLSAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogbV9jb250ZXh0OwotCiAgICAgYm9vbCBt
X2lzUm9idXN0bmVzc1N1cHBvcnRlZDsKICAgICBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNF
WFRQUk9DIG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYjc0YzYwZmU2MzRmZGMwMGUzZWYzODcwNWVj
MWExOTg0NDM1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJDbGllbnQuaApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgTGF5ZXJS
ZW5kZXJlckNsaWVudF9oCisjZGVmaW5lIExheWVyUmVuZGVyZXJDbGllbnRfaAorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1l
c3BhY2UgUGxhdGZvcm0geworbmFtZXNwYWNlIEdyYXBoaWNzIHsKK2NsYXNzIEdMRVMyQ29udGV4
dDsKK30KK30KK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllclJlbmRlcmVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5MYXllclJlbmRlcmVyQ2xpZW50KCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJSZW5kZXJlckRlc3Ryb3llZCgpIHsgfQorCisgICAg
dmlydHVhbCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogY29u
dGV4dCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclN1cmZhY2VC
ZWZvcmVDb21wb3NpdGluZygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hpbGRXaW5k
b3dzVXNlRG9jdW1lbnRDb29yZGluYXRlcygpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGFjNTI2YjZjZGVjZjVlZWYwYWY1OTQwMzRmMjA0NzNhYWNiZTIyMmQuLmQ4YTNi
NzFhNGYwZDgyMTI4NjU3M2E4OTdhOWNkOTE1ZWNjNzU3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSwgMjAxMiwgMjAxMyBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00Niw2ICs0Niw3IEBAIFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2YXRlKiBw
YWdlLCBXZWJQYWdlCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3dlYlBhZ2UocGFn
ZSkKICAgICAsIG1fZHJhd3NSb290TGF5ZXIoZmFsc2UpCisgICAgLCBtX2NoaWxkV2luZG93UGxh
Y2VtZW50KFdlYlBhZ2VDb21wb3NpdG9yOjpEb2N1bWVudENvb3JkaW5hdGVzKQogewogICAgIEFT
U0VSVChtX3dlYlBhZ2UpOwogICAgIHNldE9uZVNob3QodHJ1ZSk7IC8vIG9uZS1zaG90IGFuaW1h
dGlvbiBjbGllbnQKQEAgLTc3LDkgKzc4LDEwIEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2
YXRlOjpzZXRDb250ZXh0KFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250CiAg
ICAgaWYgKG1fY29udGV4dCA9PSBjb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nv
bnRleHQgPSBjb250ZXh0OwotICAgIGlmICghbV9jb250ZXh0KQorICAgIC8vIExheWVyUmVuZGVy
ZXIgbmVlZHMgdG8gY2xlYW4gdXAgdXNpbmcgdGhlIHByZXZpb3VzIGNvbnRleHQuCisgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICBtX2xheWVyUmVuZGVyZXIuY2xlYXIoKTsKKyAgICBtX2NvbnRl
eHQgPSBjb250ZXh0OwogfQogCiB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9v
dExheWVyKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIHJvb3RMYXllcikKQEAgLTEwNSw3ICsxMDcs
NyBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cHJlcGFyZUZyYW1lKGRvdWJsZSBh
bmltYXRpb25UaW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJl
cikgewotICAgICAgICBtX2xheWVyUmVuZGVyZXIgPSBMYXllclJlbmRlcmVyOjpjcmVhdGUobV9j
b250ZXh0KTsKKyAgICAgICAgbV9sYXllclJlbmRlcmVyID0gTGF5ZXJSZW5kZXJlcjo6Y3JlYXRl
KHRoaXMpOwogICAgICAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlci0+aGFyZHdhcmVDb21wb3NpdGlu
ZygpKSB7CiAgICAgICAgICAgICBtX2xheWVyUmVuZGVyZXIuY2xlYXIoKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTEzNiw4ICsxMzgsNiBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZTo6cmVuZGVyKGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFJlY3QmCiAgICAg
aWYgKCFtX3dlYlBhZ2UgfHwgbV93ZWJQYWdlLT5jb21wb3NpdG9yKCkgIT0gdGhpcykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdM
YXllcnMoZmFsc2UpOwotCiAgICAgRmxvYXRSZWN0IGNvbnRlbnRzID0gbV93ZWJQYWdlLT5tYXBG
cm9tVHJhbnNmb3JtZWRGbG9hdFJlY3QodHJhbnNmb3JtZWRDb250ZW50cyk7CiAKICAgICBtX2xh
eWVyUmVuZGVyZXItPnNldFZpZXdwb3J0KHRhcmdldFJlY3QsIGNsaXBSZWN0LCBjb250ZW50cywg
bV9sYXlvdXRSZWN0LCBtX2RvY3VtZW50UmVjdC5zaXplKCkpOwpAQCAtMTg1LDExICsxODUsNiBA
QCBib29sIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJhd0xheWVycyhjb25zdCBJbnRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlYwogICAgIGlmICghbV9sYXllclJlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHNob3VsZENsZWFyID0gZHJhd3NSb290TGF5
ZXIoKTsKLSAgICBpZiAoQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBhZ2UtPm1f
YmFja2luZ1N0b3JlKQotICAgICAgICBzaG91bGRDbGVhciA9IHNob3VsZENsZWFyIHx8ICFiYWNr
aW5nU3RvcmUtPmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKLSAgICBtX2xheWVyUmVuZGVyZXIt
PnNldENsZWFyU3VyZmFjZU9uRHJhd0xheWVycyhzaG91bGRDbGVhcik7Ci0KICAgICAvLyBPcGVu
R0wgd2luZG93IGNvb3JkaW5hdGVzIG9yaWdpbiBpcyBhdCB0aGUgbG93ZXIgbGVmdCBjb3JuZXIg
b2YgdGhlIHN1cmZhY2Ugd2hpbGUKICAgICAvLyBXZWJLaXQgdXNlcyB1cHBlciBsZWZ0IGFzIHRo
ZSBvcmlnaW4gb2YgdGhlIHdpbmRvdyBjb29yZGluYXRlIHN5c3RlbS4gVGhlIHBhc3NlZCBpbiAn
ZHN0UmVjdCcKICAgICAvLyBpcyBpbiBXZWJLaXQgd2luZG93IGNvb3JkaW5hdGUgc3lzdGVtLiBI
ZXJlIHdlIHNldHVwIHRoZSB2aWV3cG9ydCB0byB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZQpAQCAt
MjIxLDYgKzIxNiwyNSBAQCB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVsZWFzZUxh
eWVyUmVzb3VyY2VzKCkKICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5yZWxlYXNlTGF5ZXJSZXNv
dXJjZXMoKTsKIH0KIAorYm9vbCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnNob3VsZENsZWFy
U3VyZmFjZUJlZm9yZUNvbXBvc2l0aW5nKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIE5vcm1hbGx5IHdlIHdvdWxkbid0IGNsZWFyLCBidXQg
aW4gbGVnYWN5IG1vZGUgd2UgaGF2ZSBzb21lIG1vcmUgY29tcGxleAorICAgIC8vIGxvZ2ljLgor
ICAgIGJvb2wgc2hvdWxkQ2xlYXIgPSBkcmF3c1Jvb3RMYXllcigpOworICAgIGlmIChCYWNraW5n
U3RvcmUqIGJhY2tpbmdTdG9yZSA9IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUpCisgICAgICAg
IHNob3VsZENsZWFyID0gc2hvdWxkQ2xlYXIgfHwgIWJhY2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xD
b21wb3NpdGluZygpOworCisgICAgcmV0dXJuIHNob3VsZENsZWFyOworfQorCitib29sIFdlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6c2hvdWxkQ2hpbGRXaW5kb3dzVXNlRG9jdW1lbnRDb29yZGlu
YXRlcygpCit7CisgICAgcmV0dXJuIG1fY2hpbGRXaW5kb3dQbGFjZW1lbnQgPT0gV2ViUGFnZUNv
bXBvc2l0b3I6OkRvY3VtZW50Q29vcmRpbmF0ZXM7Cit9CisKIHZvaWQgV2ViUGFnZUNvbXBvc2l0
b3JQcml2YXRlOjphbmltYXRpb25GcmFtZUNoYW5nZWQoKQogewogICAgIEJhY2tpbmdTdG9yZSog
YmFja2luZ1N0b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZTsKQEAgLTI2OSw2ICsyODMs
MTAgQEAgV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2UqIHBhZ2Us
IFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGkKIAogICAgIFJlZlB0cjxXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU+IHRtcCA9IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y3JlYXRlKHBhZ2Ut
PmQsIGNsaWVudCk7CiAKKyAgICAvLyBGSVhNRTogRm9yIGxlZ2FjeSByZWFzb25zLCB0aGUgaW50
ZXJuYWwgZGVmYXVsdCBpcyB0byB1c2UgZG9jdW1lbnQgY29vcmRpbmF0ZXMuCisgICAgLy8gVXNl
IHdpbmRvdyBjb29yZGluYXRlcyBmb3IgbmV3IGNsaWVudHMuCisgICAgdG1wLT5zZXRDaGlsZFdp
bmRvd1BsYWNlbWVudChXaW5kb3dDb29yZGluYXRlcyk7CisKICAgICAvLyBLZWVwIG9uZSByZWYg
b3Vyc2VsdmVzLi4uCiAgICAgZCA9IHRtcC5nZXQoKTsKICAgICBkLT5yZWYoKTsKQEAgLTI5Niw2
ICszMTQsMTEgQEAgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpj
bGllbnQoKSBjb25zdAogICAgIHJldHVybiBkLT5jbGllbnQoKTsKIH0KIAordm9pZCBXZWJQYWdl
Q29tcG9zaXRvcjo6c2V0Q2hpbGRXaW5kb3dQbGFjZW1lbnQoQ2hpbGRXaW5kb3dQbGFjZW1lbnQg
cGxhY2VtZW50KQoreworICAgIGQtPnNldENoaWxkV2luZG93UGxhY2VtZW50KHBsYWNlbWVudCk7
Cit9CisKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkdMRVMyQ29udGV4dCogY29udGV4dCwgZG91YmxlIGFuaW1hdGlvblRpbWUpCiB7CiAg
ICAgZC0+c2V0Q29udGV4dChjb250ZXh0KTsKQEAgLTM0OCw2ICszNzEsMTAgQEAgV2ViUGFnZUNv
bXBvc2l0b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGllbnQoKSBjb25zdAogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpzZXRDaGlsZFdpbmRvd1BsYWNl
bWVudChDaGlsZFdpbmRvd1BsYWNlbWVudCkKK3sKK30KKwogdm9pZCBXZWJQYWdlQ29tcG9zaXRv
cjo6cHJlcGFyZUZyYW1lKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiwgZG91Ymxl
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
Q29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9z
aXRvci5oCmluZGV4IDkxM2Y1MDZlZGJiZjU1ZWQ0ZWI5YjAzMWEyMDgzOTZkZTM2NDc2OTAuLmQz
NzZmZTgyMTkzZDdiNTBjNDdhODU0OWI0NzIxZTdmN2Y0NjBkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDEzIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTM5LDYgKzM5LDE1IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2VD
b21wb3NpdG9yQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKIAorICAgIC8vIENoaWxkIHdpbmRvd3Mg
bWF5IGJlIHBvc2l0aW9uZWQgaW4gZG9jdW1lbnQgY29vcmRpbmF0ZXMgaWYgdGhlCisgICAgLy8g
QmxhY2tCZXJyeTo6UGxhdGZvcm06OldpbmRvdzo6dmlydHVhbFJlY3QoKSBvZiB0aGUgcGFyZW50
IHdpbmRvdyBpcyBrZXB0CisgICAgLy8gaW4gc3luYyB3aXRoIHRoZSBkb2N1bWVudCB2aXNpYmxl
IGNvbnRlbnQgcmVjdC4KKyAgICAvLworICAgIC8vIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMg
dG8gcG9zaXRpb24gY2hpbGQgd2luZG93cyB1c2luZyB3aW5kb3cKKyAgICAvLyBjb29yZGluYXRl
cy4KKyAgICBlbnVtIENoaWxkV2luZG93UGxhY2VtZW50IHsgV2luZG93Q29vcmRpbmF0ZXMsIERv
Y3VtZW50Q29vcmRpbmF0ZXMgfTsKKyAgICB2b2lkIHNldENoaWxkV2luZG93UGxhY2VtZW50KENo
aWxkV2luZG93UGxhY2VtZW50KTsKKwogICAgIHZvaWQgcHJlcGFyZUZyYW1lKFBsYXRmb3JtOjpH
cmFwaGljczo6R0xFUzJDb250ZXh0KiwgZG91YmxlIGFuaW1hdGlvblRpbWUpOwogCiAgICAgdm9p
ZCByZW5kZXIoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9wLmggYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaAppbmRleCA2NmUy
YzBiZTRiZjk1NDM1NjI3MGJiOGE1ZjBjNzYzZTJjNzFkYmUzLi44YzkyYzgzYTNkNTk0ODhlYjAx
M2MwNWRhZTUzMGEzYzExZjBjZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIw
MTMgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsOCBAQAogCiAjaW5jbHVkZSAiTGF5ZXJDb21wb3Np
dGluZ1RocmVhZC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMYXll
clJlbmRlcmVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3IuaCIKIAogI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUFuaW1hdGlvbkZyYW1lUmF0ZUNvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HTEVTMkNvbnRleHQuaD4KQEAgLTQxLDcgKzQz
LDEwIEBAIGNsYXNzIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50OwogY2xhc3MgV2ViUGFnZVByaXZh
dGU7CiAKIC8vIFRoaXMgY2xhc3MgbWF5IG9ubHkgYmUgdXNlZCBvbiB0aGUgY29tcG9zaXRpbmcg
dGhyZWFkLiBTbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIHRocmVhZHNhZmVyZWZjb3VudGVkLgot
Y2xhc3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUGFn
ZUNvbXBvc2l0b3JQcml2YXRlPiwgcHVibGljIFBsYXRmb3JtOjpBbmltYXRpb25GcmFtZVJhdGVD
bGllbnQgeworY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlCisgICAgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNsaWVudAorICAgICwgcHVibGljIFBsYXRmb3JtOjpBbmltYXRpb25GcmFt
ZVJhdGVDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZT4gY3JlYXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlLCBXZWJQYWdlQ29tcG9z
aXRvckNsaWVudCogY2xpZW50KQogICAgIHsKQEAgLTUxLDYgKzU2LDcgQEAgcHVibGljOgogICAg
IH5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoKTsKIAogICAgIC8vIFB1YmxpYyBBUEkKKyAgICB2
b2lkIHNldENoaWxkV2luZG93UGxhY2VtZW50KFdlYlBhZ2VDb21wb3NpdG9yOjpDaGlsZFdpbmRv
d1BsYWNlbWVudCBwbGFjZW1lbnQpIHsgbV9jaGlsZFdpbmRvd1BsYWNlbWVudCA9IHBsYWNlbWVu
dDsgfQogICAgIHZvaWQgcHJlcGFyZUZyYW1lKGRvdWJsZSBhbmltYXRpb25UaW1lKTsKICAgICB2
b2lkIHJlbmRlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB0YXJnZXRSZWN0LAogICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LApAQCAtMTAyLDkgKzEwOCwx
NSBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2
YXRlKiwgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFu
aW1hdGlvbkZyYW1lQ2hhbmdlZCgpOwogICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzKGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKKyAgICAvLyBMYXllclJlbmRlcmVyQ2xp
ZW50CisgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyU3VyZmFjZUJlZm9yZUNvbXBvc2l0aW5n
KCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENoaWxkV2luZG93c1VzZURvY3VtZW50Q29vcmRp
bmF0ZXMoKTsKKworICAgIC8vIEFuaW1hdGlvbkZyYW1lUmF0ZUNsaWVudAorICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRpb25GcmFtZUNoYW5nZWQoKTsKKwogICAgIFdlYlBhZ2VDb21wb3NpdG9yQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdlOwogICAgIFBsYXRm
b3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBtX2NvbnRleHQ7CkBAIC0xMTcsNiArMTI5LDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0Q29t
cG9zaXRpbmdSZXN1bHRzOwogICAgIFdlYkNvcmU6OkNvbG9yIG1fYmFja2dyb3VuZENvbG9yOwog
ICAgIGJvb2wgbV9kcmF3c1Jvb3RMYXllcjsKKyAgICBXZWJQYWdlQ29tcG9zaXRvcjo6Q2hpbGRX
aW5kb3dQbGFjZW1lbnQgbV9jaGlsZFdpbmRvd1BsYWNlbWVudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>