<?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>94145</bug_id>
          
          <creation_ts>2012-08-15 13:46:42 -0700</creation_ts>
          <short_desc>[chromium] Add the ubercomp WebDelegatedRendererLayer</short_desc>
          <delta_ts>2012-09-14 10:59:24 -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>New Bugs</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>
          <dependson>95374</dependson>
    
    <dependson>95485</dependson>
    
    <dependson>95500</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>piman</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696336</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 13:46:42 -0700</bug_when>
    <thetext>[chromium] Add boilderplate for ubercomp DelegatingRendererLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696346</commentid>
    <comment_count>1</comment_count>
      <attachid>158633</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 13:52:21 -0700</bug_when>
    <thetext>Created attachment 158633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696355</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 13:56:08 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696362</commentid>
    <comment_count>3</comment_count>
      <attachid>158633</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-15 14:07:06 -0700</bug_when>
    <thetext>Comment on attachment 158633
Patch

Attachment 158633 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13504713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696368</commentid>
    <comment_count>4</comment_count>
      <attachid>158635</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-15 14:13:59 -0700</bug_when>
    <thetext>Created attachment 158635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704394</commentid>
    <comment_count>5</comment_count>
      <attachid>160489</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-24 13:33:00 -0700</bug_when>
    <thetext>Created attachment 160489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705345</commentid>
    <comment_count>6</comment_count>
      <attachid>160489</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-27 10:05:33 -0700</bug_when>
    <thetext>Comment on attachment 160489
Patch

I&apos;m confused why you want to land the boilerplate separately.  I mean, it seems likely that these classes are probably going to be the ones you need, but it&apos;s hard to review something with no functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705352</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-27 10:06:50 -0700</bug_when>
    <thetext>Oh, okay. Just trying to keep patch sizes smaller and do this incrementally. I can do it along with stuff inside the layer instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710008</commentid>
    <comment_count>8</comment_count>
      <attachid>161781</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-31 14:45:22 -0700</bug_when>
    <thetext>Created attachment 161781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710011</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-31 14:47:18 -0700</bug_when>
    <thetext>This is what I am picturing for the DRLayer. It has some tests showing what works (and the last test showing what doesn&apos;t yet).

It depends on the copy() mechanisms for quads and renderpasses, as well as the new renderpass id pair.

There&apos;s some fixmes in the CCDRLayerImpl.cpp file where things need to get filled in still. Also the logic in CCLTHI needs to be improved a bit..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710012</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-31 14:49:47 -0700</bug_when>
    <thetext>Rough design sketch is also available here, though it doesn&apos;t match 100% what came out in the end. https://docs.google.com/a/google.com/document/d/1R8HOhHD6fFsqtSmH6a9bSlMOruCu5ufF7p5Og-eQGTM/edit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715135</commentid>
    <comment_count>11</comment_count>
      <attachid>162908</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 16:59:43 -0700</bug_when>
    <thetext>Created attachment 162908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715136</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 17:00:14 -0700</bug_when>
    <thetext>Here&apos;s a fully functioning ubercomp layer for your enjoyment :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715144</commentid>
    <comment_count>13</comment_count>
      <attachid>162910</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 17:03:26 -0700</bug_when>
    <thetext>Created attachment 162910
Patch

fixing a typo in assert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716390</commentid>
    <comment_count>14</comment_count>
      <attachid>162910</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-10 12:58:28 -0700</bug_when>
    <thetext>Comment on attachment 162910
Patch

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

In general, looks great.  A few minor nits:

&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:82
&gt; +    void addContributingDelegatedRenderPassLayer(LayerChromium*) { }

Maybe add a comment about why this can be a no-op?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDelegatedRendererLayerImpl.cpp:52
&gt; +    // FIXME: This could possibly return false even though there are some
&gt; +    // quads present as they could all be from a single layer (or set of
&gt; +    // layers without children). If this happens, then make a test that
&gt; +    // ensures the opacity is being changed on quads in the root RenderPass
&gt; +    // when this layer doesn&apos;t own a RenderSurface.

Yeah, I think this is an ok false positive for now.  If that FIXME gets addressed, we&apos;re probably going to need to rename descendantDrawsContent, or split it up into the three different cases that CCLTHCommon is looking for when implicitly creating a render surface.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:321
&gt; +                if (it-&gt;hasContributingDelegatedRenderPasses()) {

This block of code seriously needs at least a comment or two.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:322
&gt; +                    for (size_t i = 0; i &lt; frame.renderPasses.size(); ++i) {

Do you have to walk through every render pass here?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:325
&gt; +                        if (renderPass == targetRenderPass)
&gt; +                            continue;

This continue is because the delegated layer would have already been asked to append quads for its root pass as a part of whatever target that is drawing into?

&gt; Source/WebKit/chromium/tests/CCDelegatedRendererLayerImplTest.cpp:90
&gt; +class DrawingLayerImpl : public CCSolidColorLayerImpl {
&gt; +public:
&gt; +    static PassOwnPtr&lt;DrawingLayerImpl&gt; create(int id) { return adoptPtr(new DrawingLayerImpl(id)); }
&gt; +protected:
&gt; +    explicit DrawingLayerImpl(int id) : CCSolidColorLayerImpl(id) { setDrawsContent(true); }
&gt; +};

Where does this get used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716448</commentid>
    <comment_count>15</comment_count>
      <attachid>162910</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-09-10 13:35:08 -0700</bug_when>
    <thetext>Comment on attachment 162910
Patch

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

Awesome!

&gt; Source/WebKit/chromium/tests/CCDelegatedRendererLayerImplTest.cpp:190
&gt; +    OwnPtr&lt;CCDelegatedRendererLayerImpl&gt; m_delegatedRendererLayer;

nit: it could be confusing to have all of these as members even though they&apos;re all NULL in tests. They could just be local variables in the constructor, right?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:2580
&gt; +    delegatedRendererLayer-&gt;setLayerTreeHostImpl(m_hostImpl.get());

As is, this currently doesn&apos;t test much. How hard would it be to add non-trivial render passes to the delegatedRendererLayer here? I think CCDelegatedRendererLayerImpl would need to clear its render passes when losing the context (and wait for the next commit to get the new render passes).

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:2714
&gt; +    delegatedRendererLayer-&gt;setLayerTreeHostImpl(m_hostImpl.get());

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719904</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 14:04:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 162910 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162910&amp;action=review
&gt; 
&gt; In general, looks great.  A few minor nits:

ty!

&gt; &gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.h:82
&gt; &gt; +    void addContributingDelegatedRenderPassLayer(LayerChromium*) { }
&gt; 
&gt; Maybe add a comment about why this can be a no-op?

Sure.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDelegatedRendererLayerImpl.cpp:52
&gt; &gt; +    // FIXME: This could possibly return false even though there are some
&gt; &gt; +    // quads present as they could all be from a single layer (or set of
&gt; &gt; +    // layers without children). If this happens, then make a test that
&gt; &gt; +    // ensures the opacity is being changed on quads in the root RenderPass
&gt; &gt; +    // when this layer doesn&apos;t own a RenderSurface.
&gt; 
&gt; Yeah, I think this is an ok false positive for now.  If that FIXME gets addressed, we&apos;re probably going to need to rename descendantDrawsContent, or split it up into the three different cases that CCLTHCommon is looking for when implicitly creating a render surface.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:321
&gt; &gt; +                if (it-&gt;hasContributingDelegatedRenderPasses()) {
&gt; 
&gt; This block of code seriously needs at least a comment or two.

k.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:322
&gt; &gt; +                    for (size_t i = 0; i &lt; frame.renderPasses.size(); ++i) {
&gt; 
&gt; Do you have to walk through every render pass here?

No, we can do better.. It occurs to me that the RenderPass::id structure means we can just iterate by index and check contains() in the hash map to get them all.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:325
&gt; &gt; +                        if (renderPass == targetRenderPass)
&gt; &gt; +                            continue;
&gt; 
&gt; This continue is because the delegated layer would have already been asked to append quads for its root pass as a part of whatever target that is drawing into?

Yep.

&gt; &gt; Source/WebKit/chromium/tests/CCDelegatedRendererLayerImplTest.cpp:90
&gt; &gt; +class DrawingLayerImpl : public CCSolidColorLayerImpl {
&gt; &gt; +public:
&gt; &gt; +    static PassOwnPtr&lt;DrawingLayerImpl&gt; create(int id) { return adoptPtr(new DrawingLayerImpl(id)); }
&gt; &gt; +protected:
&gt; &gt; +    explicit DrawingLayerImpl(int id) : CCSolidColorLayerImpl(id) { setDrawsContent(true); }
&gt; &gt; +};
&gt; 
&gt; Where does this get used?

Right, I made everything use solid color layer to not need this. Removed.
(In reply to comment #15)
&gt; (From update of attachment 162910 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162910&amp;action=review
&gt; 
&gt; Awesome!
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCDelegatedRendererLayerImplTest.cpp:190
&gt; &gt; +    OwnPtr&lt;CCDelegatedRendererLayerImpl&gt; m_delegatedRendererLayer;
&gt; 
&gt; nit: it could be confusing to have all of these as members even though they&apos;re all NULL in tests. They could just be local variables in the constructor, right?

Yeh true. Will do.

&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:2580
&gt; &gt; +    delegatedRendererLayer-&gt;setLayerTreeHostImpl(m_hostImpl.get());
&gt; 
&gt; As is, this currently doesn&apos;t test much. How hard would it be to add non-trivial render passes to the delegatedRendererLayer here? I think CCDelegatedRendererLayerImpl would need to clear its render passes when losing the context (and wait for the next commit to get the new render passes).

Ya absolutely, thanks for pointing this out.

&gt; &gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:2714
&gt; &gt; +    delegatedRendererLayer-&gt;setLayerTreeHostImpl(m_hostImpl.get());
&gt; 
&gt; Same here.

Same :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719912</commentid>
    <comment_count>17</comment_count>
      <attachid>163961</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 14:09:02 -0700</bug_when>
    <thetext>Created attachment 163961
Patch

the WebDelegatedRendererLayer header for Platform/. the rest will move to src/cc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720020</commentid>
    <comment_count>18</comment_count>
      <attachid>163961</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-13 15:23:14 -0700</bug_when>
    <thetext>Comment on attachment 163961
Patch

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

&gt; Source/Platform/chromium/public/WebDelegatedRendererLayer.h:34
&gt; +// This class represents a layer that renders the output of another
&gt; +// delegating compositor.

Could you expand a bit on how this is used and what it does?

Do we even need this to be exposed in WebKit APIs?  I.e. would WebKit ever construct one of these, or would it only be created by the browser compositor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720117</commentid>
    <comment_count>19</comment_count>
      <attachid>163961</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 16:57:44 -0700</bug_when>
    <thetext>Comment on attachment 163961
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebDelegatedRendererLayer.h:34
&gt;&gt; +// delegating compositor.
&gt; 
&gt; Could you expand a bit on how this is used and what it does?
&gt; 
&gt; Do we even need this to be exposed in WebKit APIs?  I.e. would WebKit ever construct one of these, or would it only be created by the browser compositor?

The layer holds a set of RenderPasses given to it from another compositor (via RenderWidgetHostViewAura). The current implementation of the layer is expecting to receive the passes directly on the impl thread so there&apos;s no methods here. If that changes (based on meeting just now it might) then we would add a setRenderPasses() method to this for the main thread to access from RWHVA.

In my foggy planning mind it is owned by a RenderWidgetViewHostAura. I figured it needs a Web version to create and own the layer, similar to a WebContentLayer or something in the UI. It would be a child of some other aura UI layer.

WebKit will never be constructing them (though I&apos;m not sure where in WebKit we could possibly make one..WebView?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720125</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-13 17:05:09 -0700</bug_when>
    <thetext>I meant to put that sort of information in a comment in the header file so people reading the file know what is going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720129</commentid>
    <comment_count>21</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 17:08:27 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I meant to put that sort of information in a comment in the header file so people reading the file know what is going on.

Oh :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720132</commentid>
    <comment_count>22</comment_count>
      <attachid>164005</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-13 17:12:09 -0700</bug_when>
    <thetext>Created attachment 164005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720920</commentid>
    <comment_count>23</comment_count>
      <attachid>164005</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-14 10:32:50 -0700</bug_when>
    <thetext>Comment on attachment 164005
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720921</commentid>
    <comment_count>24</comment_count>
      <attachid>164186</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-14 10:35:34 -0700</bug_when>
    <thetext>Created attachment 164186
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720948</commentid>
    <comment_count>25</comment_count>
      <attachid>164186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 10:59:19 -0700</bug_when>
    <thetext>Comment on attachment 164186
Patch for landing

Clearing flags on attachment: 164186

Committed r128630: &lt;http://trac.webkit.org/changeset/128630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720949</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 10:59:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158633</attachid>
            <date>2012-08-15 13:52:21 -0700</date>
            <delta_ts>2012-08-15 14:13:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120815165147.patch</filename>
            <type>text/plain</type>
            <size>23164</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZWU2NzZmODQwZDM3
NDI2OWM5ZDRlNDlhZDJlNzQ3NzY4Nzk3M2YyLi43ZDVhZTdlNjg1OGQxYjBiYmUxOWJmNjRmZDQy
MDFhNGNiODVhMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0xNSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCBib2lsZGVycGxhdGUgZm9yIHViZXJjb21wIERlbGVnYXRpbmdSZW5kZXJlckxheWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0u
Z3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
bGVnYXRpbmdSZW5kZXJlckxheWVyOjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyOjp+V2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIpOgorCiAyMDEyLTA4LTE0ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFBsdW1iIHRocm91Z2ggRVhUX2RlYnVnX21hcmtlciBlbnRyeSBwb2lu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3MDI1MWFiYTFkNTExZGE0MWY5MThlYWUyOWU3OTE5ZjYxOGVlZDY4
Li44ZTYyNmNiMGExNTQ0ZGY1NzE1MGRlYjcyNThhOWI5YWE3Njk5YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTItMDgtMTUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgYm9pbGRlcnBsYXRlIGZvciB1YmVyY29t
cCBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBsYXllciB0eXBlIHRvIHRlc3RzOiBDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5kb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5sYXllcnNG
cmVlVGV4dHVyZXMKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRpbmdS
ZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtOjpEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW06On5E
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVn
YXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9t
aXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1w
bDo6Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGw6On5DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0aW5n
UmVuZGVyZXJMYXllckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVs
ZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTE1ICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR3RrXSBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQoKSBmYWlscyB0byBwcm92aWRlIHRoZSBjb3JyZWN0IGxpbmUgZm9y
IHBhcmFncmFwaHMgaW4gbGlzdCBpdGVtcyB3aG9zZSB0ZXh0IHdyYXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGExYjhlZWE3MzMzNjAzYWViN2RjOTViZDk1Yzk5MjVjNmEzMmNjNDMu
LjZmZjExYzc4OWZjMjk2ZWY5YjU4OWUzNjY5Mzc4MDk4Zjk1NGRiOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMTUgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgYm9pbGRlcnBs
YXRlIGZvciB1YmVyY29tcCBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
c3JjL1dlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpXZWJEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJM
YXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXI6OldlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyKToKKwogMjAxMi0wOC0xNSAgQW5uYSBDYXZl
bmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHRoZSB0aW1lc3RhbXBP
ZmZzZXQgYXR0cmlidXRlIHRvIFNvdXJjZUJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXgg
N2FiMDgyNjJhZmU3NjA3MTQ2ZTdjZTRiYTY0YmY0ZTVmNDdmNjkwNS4uMzQzZTc3OGE2N2MxYmEy
ZjczNjdlMTk4M2FmZGE5NGNlMTc3YTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUxLDYg
KzUxLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkRhdGEuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjMGIwZDdkY2M0ODU2NDI5MjZkODEyOWFmMGEyYTEwNGJlMDgzNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRpbmdS
ZW5kZXJlckxheWVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGVsZWdh
dGluZ1JlbmRlcmVyTGF5ZXJfaAorI2RlZmluZSBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcl9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDbGllbnQ7CisKKy8vIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyB0aGUgb3V0cHV0IG9mIGFub3RoZXIKKy8vIGRl
bGVnYXRpbmcgY29tcG9zaXRvci4KK2NsYXNzIFdlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyIDog
cHVibGljIFdlYkxheWVyIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJE
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllciBjcmVhdGUoKTsKKworICAgIFdlYkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyKCkgeyB9CisgICAgdmlydHVhbCB+V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXIo
KSB7IH0KKworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBleHBsaWNp
dCBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkRlbGVnYXRp
bmdSZW5kZXJlckxheWVyQ2hyb21pdW0+KTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMTE4ODc3M2U5OTMzYzQ1ZmI3ZDI3ZTk0Y2M3YTVkYjIwNjljZGM5Ni4uNzFh
ZjY0NTgxMGEzMTc5YWZmNzkxMDVhNzIwMDhjYmY1MjhiYjY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtODI3Miw2ICs4MjcyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0RlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAn
LApAQCAtODMzNSw2ICs4MzM3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxhcy5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMmEzZTc5ZTNhYjcxNDczNTNkMDIzMGM2Y2UzOWE2MjJlMmQwN2Mz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0uaCIKKworI2luY2x1ZGUgImNjL0NDRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtPiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJDaHJvbWl1bSgpKTsKK30KKworRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6
RGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bSgpCisgICAgOiBMYXllckNocm9taXVtKCkK
K3sKK30KKworRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6fkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0oKQoreworfQorCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAg
cmV0dXJuIENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ0MmQxMmNmYzQ3NDU3MTViYzU5ZjUxMDQ5MTg3NjE3OTFhNzU2YzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtLmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2lmbmRlZiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtX2gKKyNkZWZp
bmUgRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVsZWdhdGluZ1JlbmRl
cmVyTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtPiBjcmVhdGUo
KTsKKyAgICB2aXJ0dWFsIH5EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtKCk7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVy
SW1wbCgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXJDaHJvbWl1bSgpOworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0MzQzZWYzZjE2
YThjMzUxMjY3NDQwZmU2MGVkNjgxNWJjOWY2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiY2MvQ0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbDo6Q0NEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckltcGwoaW50IGlkKQorICAgIDogQ0NMYXllckltcGwoaWQpCit7
Cit9CisKK0NDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjp+Q0NEZWxlZ2F0aW5nUmVuZGVy
ZXJMYXllckltcGwoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDM5Y2Y1MTQyMGU5ZDAxNmMzNjZm
M2ZhYjUxOGFjMmViZTRjYzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0RlbGVnYXRpbmdSZW5kZXJlckxh
eWVySW1wbF9oCisjZGVmaW5lIENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsX2gKKworI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBs
PiBjcmVhdGUoaW50IGlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0Rl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbChpZCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ0Rl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEND
RGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKGludCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIkRlbGVnYXRp
bmdSZW5kZXJlckxheWVyIjsgfQorfTsKKworfQorCisjZW5kaWYgLy8gQ0NEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJlYTZmOWVj
Zjk4MmY3NWIwOGQ4N2IyNWE4NDQ1NmMwZmEwNWFiYTQuLmFhMzIwZmQ1N2NiNTQ3NTgyYmNhYzgx
Y2UxYmY1NzI0ZTNmYzhmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTUwMiw2
ICs1MDIsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YWJhc2UuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEYXRhU291cmNlSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRlbGVn
YXRpbmdSZW5kZXJlckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGlu
Z1JlbmRlcmVyTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYjlkMDNjNTQzNjM4YTA1M2I3NTk2MDk5
OWQ2MjI0ZDRlZTQzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIuaD4KKworI2luY2x1ZGUgIkRlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21p
dW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgRGVsZWdhdGlu
Z1JlbmRlcmVyTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRGVsZWdh
dGluZ1JlbmRlcmVyTGF5ZXJJbXBsKCkKKyAgICAgICAgOiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXll
ckNocm9taXVtKCkKKyAgICB7CisgICAgfQorfTsKKworV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXIgV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXI6OmNyZWF0ZSgpCit7CisgICAgUmVmUHRyPERl
bGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFdlYkRl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbCk7CisgICAgcmV0dXJuIFdlYkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyKGxheWVyLnJlbGVhc2UoKSk7Cit9CisKK1dlYkRlbGVnYXRpbmdSZW5kZXJlckxh
eWVyOjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihQYXNzUmVmUHRyPERlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogV2ViTGF5ZXIobGF5ZXIpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCAyYzE0YTFjYzM0Yjdj
ZjBmNDRkZjU0MjI1NzU4ZmViN2JjNGNkOWNiLi5kMzBkZjE0NzkwYjAwNjVkZTkyYjc2ZDdjZDM5
MWM5MzcxNzRhMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMjM0Myw3ICsyMzQzLDYgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0
Q29udGV4dCkKICAgICByb290TGF5ZXItPmFkZENoaWxkKGh1ZExheWVyLnJlbGVhc2UoKSk7CiAK
ICAgICBPd25QdHI8RmFrZVNjcm9sbGJhckxheWVySW1wbD4gc2Nyb2xsYmFyTGF5ZXIoRmFrZVNj
cm9sbGJhckxheWVySW1wbDo6Y3JlYXRlKDgpKTsKLSAgICBzY3JvbGxiYXJMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNl
dEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXRDb250ZW50
Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKQEAgLTIzNTEsNiArMjM1MCwxMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogICAgIHNjcm9s
bGJhckxheWVyLT5jcmVhdGVSZXNvdXJjZXMobV9ob3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigp
KTsKICAgICByb290TGF5ZXItPmFkZENoaWxkKHNjcm9sbGJhckxheWVyLnJlbGVhc2UoKSk7CiAK
KyAgICBPd25QdHI8Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGw+IGRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyKENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUoOSkpOworICAg
IGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAg
ICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOworICAgIGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7
CisgICAgZGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9z
dEltcGwuZ2V0KCkpOworICAgIHJvb3RMYXllci0+YWRkQ2hpbGQoZGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXIucmVsZWFzZSgpKTsKKwogICAgIC8vIFVzZSBhIGNvbnRleHQgdGhhdCBzdXBwb3J0cyBJ
T1N1cmZhY2VzCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoRmFrZVdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFw
aGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2UpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKQEAg
LTI0NzgsNiArMjQ4NCwxMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGxheWVy
c0ZyZWVUZXh0dXJlcykKICAgICBpb1N1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdEltcGwo
bV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChpb1N1cmZhY2VMYXll
ci5yZWxlYXNlKCkpOwogCisgICAgT3duUHRyPENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBs
PiBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihDQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbDo6
Y3JlYXRlKDYpKTsKKyAgICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllci0+c2V0Qm91bmRzKEludFNp
emUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXItPnNldENvbnRlbnRCb3Vu
ZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5zZXRMYXllclRy
ZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICByb290TGF5ZXItPmFkZENoaWxkKGRl
bGVnYXRpbmdSZW5kZXJlckxheWVyLnJlbGVhc2UoKSk7CisKICAgICAvLyBMb3NlIHRoZSBjb250
ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0QgKHdo
aWNoIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHRha2VzIG93bmVyc2hpcCBvZikuCiAgICAgT3du
UHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRT
dXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIobmV3IFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0Qp
KSk7CiAgICAgVHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQzRCogdHJhY2tpbmdXZWJHcmFwaGlj
c0NvbnRleHQgPSBzdGF0aWNfY2FzdDxUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNEKj4oY2ND
b250ZXh0LT5jb250ZXh0M0QoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158635</attachid>
            <date>2012-08-15 14:13:59 -0700</date>
            <delta_ts>2012-08-24 13:32:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120815171325.patch</filename>
            <type>text/plain</type>
            <size>23458</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZWU2NzZmODQwZDM3
NDI2OWM5ZDRlNDlhZDJlNzQ3NzY4Nzk3M2YyLi43ZDVhZTdlNjg1OGQxYjBiYmUxOWJmNjRmZDQy
MDFhNGNiODVhMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0xNSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCBib2lsZGVycGxhdGUgZm9yIHViZXJjb21wIERlbGVnYXRpbmdSZW5kZXJlckxheWVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0u
Z3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
bGVnYXRpbmdSZW5kZXJlckxheWVyOjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyOjp+V2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIpOgorCiAyMDEyLTA4LTE0ICBHcmVnZyBUYXZhcmVzICA8Z21hbkBnb29nbGUu
Y29tPgogCiAgICAgICAgIFBsdW1iIHRocm91Z2ggRVhUX2RlYnVnX21hcmtlciBlbnRyeSBwb2lu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3MDI1MWFiYTFkNTExZGE0MWY5MThlYWUyOWU3OTE5ZjYxOGVlZDY4
Li44ZTYyNmNiMGExNTQ0ZGY1NzE1MGRlYjcyNThhOWI5YWE3Njk5YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTItMDgtMTUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgYm9pbGRlcnBsYXRlIGZvciB1YmVyY29t
cCBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBsYXllciB0eXBlIHRvIHRlc3RzOiBDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5kb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5sYXllcnNG
cmVlVGV4dHVyZXMKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRpbmdS
ZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtOjpEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW06On5E
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVn
YXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9t
aXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1w
bDo6Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGw6On5DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1w
bCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0aW5n
UmVuZGVyZXJMYXllckltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVs
ZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUpOgorCiAyMDEyLTA4LTE1ICBKb2FubWFy
aWUgRGlnZ3MgIDxqZGlnZ3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR3RrXSBhdGtfdGV4dF9n
ZXRfdGV4dF9hdF9vZmZzZXQoKSBmYWlscyB0byBwcm92aWRlIHRoZSBjb3JyZWN0IGxpbmUgZm9y
IHBhcmFncmFwaHMgaW4gbGlzdCBpdGVtcyB3aG9zZSB0ZXh0IHdyYXBzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGExYjhlZWE3MzMzNjAzYWViN2RjOTViZDk1Yzk5MjVjNmEzMmNjNDMu
LjZmZjExYzc4OWZjMjk2ZWY5YjU4OWUzNjY5Mzc4MDk4Zjk1NGRiOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgtMTUgIERhbmEgSmFuc2VucyAg
PGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgYm9pbGRlcnBs
YXRlIGZvciB1YmVyY29tcCBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICog
c3JjL1dlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpXZWJEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJM
YXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXI6OldlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyKToKKwogMjAxMi0wOC0xNSAgQW5uYSBDYXZl
bmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIHRoZSB0aW1lc3RhbXBP
ZmZzZXQgYXR0cmlidXRlIHRvIFNvdXJjZUJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXgg
N2FiMDgyNjJhZmU3NjA3MTQ2ZTdjZTRiYTY0YmY0ZTVmNDdmNjkwNS4uMzQzZTc3OGE2N2MxYmEy
ZjczNjdlMTk4M2FmZGE5NGNlMTc3YTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUxLDYg
KzUxLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYkRhdGEuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjMGIwZDdkY2M0ODU2NDI5MjZkODEyOWFmMGEyYTEwNGJlMDgzNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRpbmdS
ZW5kZXJlckxheWVyLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGVsZWdh
dGluZ1JlbmRlcmVyTGF5ZXJfaAorI2RlZmluZSBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcl9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDbGllbnQ7CisKKy8vIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyB0aGUgb3V0cHV0IG9mIGFub3RoZXIKKy8vIGRl
bGVnYXRpbmcgY29tcG9zaXRvci4KK2NsYXNzIFdlYkRlbGVnYXRpbmdSZW5kZXJlckxheWVyIDog
cHVibGljIFdlYkxheWVyIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJE
ZWxlZ2F0aW5nUmVuZGVyZXJMYXllciBjcmVhdGUoKTsKKworICAgIFdlYkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyKCkgeyB9CisgICAgdmlydHVhbCB+V2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXIo
KSB7IH0KKworcHJpdmF0ZToKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBleHBsaWNp
dCBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkRlbGVnYXRp
bmdSZW5kZXJlckxheWVyQ2hyb21pdW0+KTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMTE4ODc3M2U5OTMzYzQ1ZmI3ZDI3ZTk0Y2M3YTVkYjIwNjljZGM5Ni4uNzFh
ZjY0NTgxMGEzMTc5YWZmNzkxMDVhNzIwMDhjYmY1MjhiYjY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtODI3Miw2ICs4MjcyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0RlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dlb21ldHJ5QmluZGluZy5jcHAn
LApAQCAtODMzNSw2ICs4MzM3LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNlZFRpbWVTb3Vy
Y2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0ZvbnRBdGxhcy5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMmEzZTc5ZTNhYjcxNDczNTNkMDIzMGM2Y2UzOWE2MjJlMmQwN2Mz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0uaCIKKworI2luY2x1ZGUgImNjL0NDRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckNocm9taXVtPiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVt
OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJDaHJvbWl1bSgpKTsKK30KKworRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6
RGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bSgpCisgICAgOiBMYXllckNocm9taXVtKCkK
K3sKK30KKworRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6fkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0oKQoreworfQorCitQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAg
cmV0dXJuIENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUobV9sYXllcklkKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ0MmQxMmNmYzQ3NDU3MTViYzU5ZjUxMDQ5MTg3NjE3OTFhNzU2YzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtLmgKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKworI2lmbmRlZiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtX2gKKyNkZWZp
bmUgRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRlICJMYXllckNo
cm9taXVtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVsZWdhdGluZ1JlbmRl
cmVyTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtPiBjcmVhdGUo
KTsKKyAgICB2aXJ0dWFsIH5EZWxlZ2F0aW5nUmVuZGVyZXJMYXllckNocm9taXVtKCk7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVy
SW1wbCgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXJDaHJvbWl1bSgpOworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0MzQzZWYzZjE2
YThjMzUxMjY3NDQwZmU2MGVkNjgxNWJjOWY2ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiY2MvQ0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitDQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbDo6Q0NEZWxl
Z2F0aW5nUmVuZGVyZXJMYXllckltcGwoaW50IGlkKQorICAgIDogQ0NMYXllckltcGwoaWQpCit7
Cit9CisKK0NDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjp+Q0NEZWxlZ2F0aW5nUmVuZGVy
ZXJMYXllckltcGwoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRpbmdSZW5kZXJlckxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0
aW5nUmVuZGVyZXJMYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZDM5Y2Y1MTQyMGU5ZDAxNmMzNjZm
M2ZhYjUxOGFjMmViZTRjYzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ0RlbGVnYXRpbmdSZW5kZXJlckxh
eWVySW1wbF9oCisjZGVmaW5lIENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsX2gKKworI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBs
PiBjcmVhdGUoaW50IGlkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0Rl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbChpZCkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5DQ0Rl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEND
RGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsKGludCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIkRlbGVnYXRp
bmdSZW5kZXJlckxheWVyIjsgfQorfTsKKworfQorCisjZW5kaWYgLy8gQ0NEZWxlZ2F0aW5nUmVu
ZGVyZXJMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGJlYTZmOWVj
Zjk4MmY3NWIwOGQ4N2IyNWE4NDQ1NmMwZmEwNWFiYTQuLmFhMzIwZmQ1N2NiNTQ3NTgyYmNhYzgx
Y2UxYmY1NzI0ZTNmYzhmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTUwMiw2
ICs1MDIsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YWJhc2UuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEYXRhU291cmNlSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRlbGVn
YXRpbmdSZW5kZXJlckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGlu
Z1JlbmRlcmVyTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYjlkMDNjNTQzNjM4YTA1M2I3NTk2MDk5
OWQ2MjI0ZDRlZTQzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGVsZWdhdGluZ1Jl
bmRlcmVyTGF5ZXIuaD4KKworI2luY2x1ZGUgIkRlbGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21p
dW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgRGVsZWdhdGlu
Z1JlbmRlcmVyTGF5ZXJDaHJvbWl1bSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRGVsZWdh
dGluZ1JlbmRlcmVyTGF5ZXJJbXBsKCkKKyAgICAgICAgOiBEZWxlZ2F0aW5nUmVuZGVyZXJMYXll
ckNocm9taXVtKCkKKyAgICB7CisgICAgfQorfTsKKworV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5
ZXIgV2ViRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXI6OmNyZWF0ZSgpCit7CisgICAgUmVmUHRyPERl
bGVnYXRpbmdSZW5kZXJlckxheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFdlYkRl
bGVnYXRpbmdSZW5kZXJlckxheWVySW1wbCk7CisgICAgcmV0dXJuIFdlYkRlbGVnYXRpbmdSZW5k
ZXJlckxheWVyKGxheWVyLnJlbGVhc2UoKSk7Cit9CisKK1dlYkRlbGVnYXRpbmdSZW5kZXJlckxh
eWVyOjpXZWJEZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihQYXNzUmVmUHRyPERlbGVnYXRpbmdSZW5k
ZXJlckxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogV2ViTGF5ZXIobGF5ZXIpCit7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCAyYzE0YTFjYzM0Yjdj
ZjBmNDRkZjU0MjI1NzU4ZmViN2JjNGNkOWNiLi5mNmZhMzQzY2E0MTQ0MjVmODA3ODcwMzc0Nzdl
NDEzNGQ2OWJiNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkZha2VXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCisj
aW5jbHVkZSAiY2MvQ0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGwuaCIKICNpbmNsdWRlICJj
Yy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgpAQCAtMjM0Myw3ICsyMzQ0
LDYgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2Vz
QWZ0ZXJMb3N0Q29udGV4dCkKICAgICByb290TGF5ZXItPmFkZENoaWxkKGh1ZExheWVyLnJlbGVh
c2UoKSk7CiAKICAgICBPd25QdHI8RmFrZVNjcm9sbGJhckxheWVySW1wbD4gc2Nyb2xsYmFyTGF5
ZXIoRmFrZVNjcm9sbGJhckxheWVySW1wbDo6Y3JlYXRlKDgpKTsKLSAgICBzY3JvbGxiYXJMYXll
ci0+c2V0TGF5ZXJUcmVlSG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgc2Nyb2xsYmFy
TGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5z
ZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNl
dERyYXdzQ29udGVudCh0cnVlKTsKQEAgLTIzNTEsNiArMjM1MSwxMyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQog
ICAgIHNjcm9sbGJhckxheWVyLT5jcmVhdGVSZXNvdXJjZXMobV9ob3N0SW1wbC0+cmVzb3VyY2VQ
cm92aWRlcigpKTsKICAgICByb290TGF5ZXItPmFkZENoaWxkKHNjcm9sbGJhckxheWVyLnJlbGVh
c2UoKSk7CiAKKyAgICBPd25QdHI8Q0NEZWxlZ2F0aW5nUmVuZGVyZXJMYXllckltcGw+IGRlbGVn
YXRpbmdSZW5kZXJlckxheWVyKENDRGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUo
OSkpOworICAgIGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwg
MTApKTsKKyAgICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRT
aXplKDEwLCAxMCkpOworICAgIGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5zZXREcmF3c0NvbnRl
bnQodHJ1ZSk7CisgICAgZGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJ
bXBsKG1faG9zdEltcGwuZ2V0KCkpOworICAgIHJvb3RMYXllci0+YWRkQ2hpbGQoZGVsZWdhdGlu
Z1JlbmRlcmVyTGF5ZXIucmVsZWFzZSgpKTsKKwogICAgIC8vIFVzZSBhIGNvbnRleHQgdGhhdCBz
dXBwb3J0cyBJT1N1cmZhY2VzCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVy
ZXIoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIobmV3IEZh
a2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2UpKSwgVW50aHJvdHRsZWRVcGxvYWRl
cik7CiAKQEAgLTI0NzgsNiArMjQ4NSwxMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIGxheWVyc0ZyZWVUZXh0dXJlcykKICAgICBpb1N1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVl
SG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChpb1N1
cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCisgICAgT3duUHRyPENDRGVsZWdhdGluZ1JlbmRlcmVy
TGF5ZXJJbXBsPiBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllcihDQ0RlbGVnYXRpbmdSZW5kZXJlckxh
eWVySW1wbDo6Y3JlYXRlKDYpKTsKKyAgICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGluZ1JlbmRlcmVyTGF5ZXItPnNldENv
bnRlbnRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0aW5nUmVuZGVyZXJMYXll
ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLT5z
ZXRMYXllclRyZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICByb290TGF5ZXItPmFk
ZENoaWxkKGRlbGVnYXRpbmdSZW5kZXJlckxheWVyLnJlbGVhc2UoKSk7CisKICAgICAvLyBMb3Nl
IHRoZSBjb250ZXh0LCByZXBsYWNpbmcgaXQgd2l0aCBhIFRyYWNraW5nV2ViR3JhcGhpY3NDb250
ZXh0M0QgKHdoaWNoIHRoZSBDQ0xheWVyVHJlZUhvc3RJbXBsIHRha2VzIG93bmVyc2hpcCBvZiku
CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBjY0NvbnRleHQoRmFrZVdlYkNvbXBvc2l0
b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIobmV3IFRyYWNraW5nV2ViR3JhcGhpY3ND
b250ZXh0M0QpKSk7CiAgICAgVHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQzRCogdHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQgPSBzdGF0aWNfY2FzdDxUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4
dDNEKj4oY2NDb250ZXh0LT5jb250ZXh0M0QoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160489</attachid>
            <date>2012-08-24 13:33:00 -0700</date>
            <delta_ts>2012-08-31 14:45:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120824163255.patch</filename>
            <type>text/plain</type>
            <size>23399</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3OGQzM2E3MGE0NWI4
OWM2MGQ3MDZhOWZhZDk4ODBkOGQzMzU1ZDZjLi5jMjBkYzFmYjA0ZDEwNzYwM2MxYTFjOWQ1YjIw
MWY5MThjNDRmOTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOC0yNCAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCBib2lsZXJwbGF0ZSBmb3IgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5
cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXI6On5X
ZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKwogMjAxMi0wOC0yNCAgVG9tbXkgV2lkZW5mbHlj
aHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEFkZCBy
ZWFkeVN0YXRlIGZ1bmN0aW9uYWxpdHkgdG8gUlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwMjliN2IzMDdkYjkxNjZlY2JlOTNiNDk5ZGM0M2E4NTZkYzZjMjQ4Li4yNWMxN2FiMWM4NzA2
NzczYThhNmNiOGY3NDNmZmVjNGUyZmVhZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTItMDgtMjQgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBBZGQgYm9pbGVycGxhdGUgZm9yIHViZXJjb21wIERlbGVnYXRlZFJlbmRl
cmVyTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk0MTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbGF5ZXIgdHlwZSB0byB0ZXN0czogQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuZG9udFVz
ZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QubGF5ZXJzRnJlZVRleHR1cmVzCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJv
bWl1bTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6fkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21p
dW06OmNyZWF0ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6On5D
Q0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSk6
CisKIDIwMTItMDgtMjQgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJmaWVsZEByaW0uY29t
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFeHRlbmQgTGF5ZXJGaWx0ZXJSZW5kZXJlciBpbiBw
cmVwYXJhdGlvbiBmb3IgQ1NTIFNoYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YzE0Y2IzYzRmYWUxZDcyZmU2MzI2MGZhZjI3ZmY5YmM3ZjhjOWM4OS4uYjYwMWJjMWRkOGMxNzhi
NDE1ZGQxNDJiYjk5ZDM1ZDJmNGM0NGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMi0wOC0yNCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBib2lsZXJwbGF0ZSBmb3IgdWJlcmNvbXAg
RGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL1dlYkRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJJbXBsOjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+V2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKwogMjAxMi0wOC0yNCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEFkZCByZWFkeVN0YXRlIGZ1bmN0aW9uYWxp
dHkgdG8gUlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0
Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggN2FiMDgyNjJh
ZmU3NjA3MTQ2ZTdjZTRiYTY0YmY0ZTVmNDdmNjkwNS4uMjdjMmM5MzkzOGI5YjJmMmUwMDc0ZDA3
OTRhNDZmMmViMDcyNjNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5
cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUxLDYgKzUxLDcgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkRhdGEuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRy
YWdEYXRhLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZjRm
YTZlN2I4ZTBhNGU0OTE1YWRhZTM4N2FmODBmMDRlNWI1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIu
aApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyX2gKKyNkZWZpbmUgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJzIHRoZSBvdXRw
dXQgb2YgYW5vdGhlcgorLy8gZGVsZWdhdGluZyBjb21wb3NpdG9yLgorY2xhc3MgV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllciB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllciogY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJEZWxl
Z2F0ZWRSZW5kZXJlckxheWVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTdhYzIzMGYzMWZiY2FhNTdh
ZmE1MDhmYmJmYzQzZDM0M2VhZjIwNC4uYTM5MTZjMmQ5MjZiMTBlNGZkYzIwYTQ2OWE2ZjkwZDc4
ZWEwZGM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODMzNiw2ICs4MzM2LDggQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9HZW9tZXRyeUJpbmRpbmcuY3BwJywKQEAgLTgzOTksNiArODQwMSw4IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsYXlCYXNl
ZFRpbWVTb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwuY3BwJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGlyZWN0UmVuZGVyZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjOTkzZmI4
ZjM0Njc4MzAyMWZjNzY4MmMwN2Y1NzNiN2RjODZlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmgiCisKKyNpbmNs
dWRlICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+IERlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSgpKTsKK30KKworRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckNocm9taXVtOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0oKQorICAg
IDogTGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1
bTo6fkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKK1Bhc3NPd25QdHI8
Q0NMYXllckltcGw+IERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXll
ckltcGwoKQoreworICAgIHJldHVybiBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpjcmVh
dGUobV9sYXllcklkKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Zjk2MTExZDlmOWY2MGQ4NmFkYWFkNzlmOTMy
YWZiYTRlZTM4OTBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmgKQEAgLTAs
MCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21p
dW1faAorI2RlZmluZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW1faAorCisjaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+
IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSgp
OworCisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgUGFzc093blB0cjxDQ0xheWVySW1wbD4gY3JlYXRl
Q0NMYXllckltcGwoKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIERlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJDaHJvbWl1bSgpOworfTsKKworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNjhkZDIw
MzVlMjFiNTkyZjA3MjQ2OWZjMzhiYmVkYmY2N2U2MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OkNDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGwoaW50IGlkKQorICAgIDogQ0NMYXllckltcGwoaWQpCit7Cit9
CisKK0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6On5DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsKCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwODIxMTRjN2Q2MzhkMmVkMjdjMGU1YzY5Njk1
YzExZTBkN2E5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbF9o
CisjZGVmaW5lIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxfaAorCisjaW5jbHVkZSAiQ0NM
YXllckltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlk
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsKGlkKSk7CisgICAgfQorICAgIHZpcnR1YWwgfkNDRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsKGludCk7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3Ry
aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIiOyB9
Cit9OworCit9CisKKyNlbmRpZiAvLyBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxZmQyMTY0YmMyYzBkM2ViODJhYzM5NmNiYzhj
ZGQwODM0ZDM1YWEzLi4yN2E2Y2VjYzFhMDA3NDg1MjQ1NDVkYzdkZDNhNGVlYmJiMmU5YWQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00OTksNiArNDk5LDcgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkRhdGFiYXNlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJE
YXRhU291cmNlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YVNvdXJjZUlt
cGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZjcxMmE2ZTE5NzkxMmQ0ODhhY2NmZTA2NmU2OWNkYTgyZDAwZDUwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllci5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5oPgorCisjaW5jbHVk
ZSAiRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJ
bXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
Q2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgp
OworCisgICAgLy8gV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAg
ICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE93
blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9OworCitXZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwoUGFzc1JlZlB0cjxEZWxlZ2F0
ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihu
ZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwoKQoreworfQorCitXZWJMYXll
ciogV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4g
bV9sYXllci5nZXQoKTsKK30KKworV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciogV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8RGVsZWdhdGVkUmVuZGVy
ZXJMYXllckNocm9taXVtPiBsYXllciA9IERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CisgICAgcmV0dXJuIG5ldyBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbChs
YXllci5yZWxlYXNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKaW5kZXggYTcxNWY1YjlhNDk5OWEzNzRiYmE5YWRkNDI0NzAwMDY2ZmRlYWNhNy4uNTA4MzZh
NWFmYzBlYTY5NzZkYzY3YmMxYmM1MjA4MjAyMTQ5N2E4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAKICNpbmNs
dWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgog
I2luY2x1ZGUgIkNDSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwu
aCIKQEAgLTI0OTYsNyArMjQ5Nyw2IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwg
ZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAgICAgcm9vdExheWVyLT5hZGRD
aGlsZChodWRMYXllci5yZWxlYXNlKCkpOwogCiAgICAgT3duUHRyPEZha2VTY3JvbGxiYXJMYXll
ckltcGw+IHNjcm9sbGJhckxheWVyKEZha2VTY3JvbGxiYXJMYXllckltcGw6OmNyZWF0ZSg4KSk7
Ci0gICAgc2Nyb2xsYmFyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0
KCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAg
ICBzY3JvbGxiYXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAg
IHNjcm9sbGJhckxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CkBAIC0yNTA0LDYgKzI1MDQs
MTMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2Vz
QWZ0ZXJMb3N0Q29udGV4dCkKICAgICBzY3JvbGxiYXJMYXllci0+Y3JlYXRlUmVzb3VyY2VzKG1f
aG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGlsZChz
Y3JvbGxiYXJMYXllci5yZWxlYXNlKCkpOwogCisgICAgT3duUHRyPENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGw+IGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIoQ0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6Y3JlYXRlKDkpKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRDb250
ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+
c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXItPnNldExh
eWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOworICAgIHJvb3RMYXllci0+YWRkQ2hp
bGQoZGVsZWdhdGVkUmVuZGVyZXJMYXllci5yZWxlYXNlKCkpOworCiAgICAgLy8gVXNlIGEgY29u
dGV4dCB0aGF0IHN1cHBvcnRzIElPU3VyZmFjZXMKICAgICBtX2hvc3RJbXBsLT5pbml0aWFsaXpl
UmVuZGVyZXIoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIo
bmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZhY2UpKSwgVW50aHJvdHRsZWRV
cGxvYWRlcik7CiAKQEAgLTI2MzEsNiArMjYzOCwxMyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIGxheWVyc0ZyZWVUZXh0dXJlcykKICAgICBpb1N1cmZhY2VMYXllci0+c2V0TGF5
ZXJUcmVlSG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAgcm9vdExheWVyLT5hZGRDaGls
ZChpb1N1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCisgICAgT3duUHRyPENDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGw+IGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIoQ0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbDo6Y3JlYXRlKDYpKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRC
b3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRD
b250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJMYXll
ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXItPnNl
dExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOworICAgIHJvb3RMYXllci0+YWRk
Q2hpbGQoZGVsZWdhdGVkUmVuZGVyZXJMYXllci5yZWxlYXNlKCkpOworCiAgICAgLy8gTG9zZSB0
aGUgY29udGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4
dDNEICh3aGljaCB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0YWtlcyBvd25lcnNoaXAgb2YpLgog
ICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0KEZha2VXZWJDb21wb3NpdG9y
T3V0cHV0U3VyZmFjZTo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBUcmFja2luZ1dlYkdyYXBoaWNzQ29u
dGV4dDNEKSkpOwogICAgIFRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0M0QqIHRyYWNraW5nV2Vi
R3JhcGhpY3NDb250ZXh0ID0gc3RhdGljX2Nhc3Q8VHJhY2tpbmdXZWJHcmFwaGljc0NvbnRleHQz
RCo+KGNjQ29udGV4dC0+Y29udGV4dDNEKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161781</attachid>
            <date>2012-08-31 14:45:22 -0700</date>
            <delta_ts>2012-09-07 16:59:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120831174509.patch</filename>
            <type>text/plain</type>
            <size>62491</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhYjIxZTA1NWU0MGFm
ZTU1NzAxNTMyNzJkMDljNDFkMmQ4OTBmZGIxLi43YmU2Y2RlNzlhM2IzMjM1MjMxOWY0M2IwYzY0
MDNjNmIyNTZmNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0zMSAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9m
IHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1m
dW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
Lmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5
ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllcjo6fldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIpOgorCiAyMDEyLTA4LTI3
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gU2hvdWxkIGFjY2VsZXJhdGUgcm90YXRpb25zIG9mID49IDE4MCBkZWdyZWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNTdhYjU1OGU3MDUzNzVkYTJkOTIwOTE5MGMzNjBlZDJlODNmZTU3ZC4uNjg1NGVjZGU2
MjBjOTM2ODlmNmQ5ZWQxNDYxYzgyNTE1MzQ2YjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0
IEBACisyMDEyLTA4LTMxICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gQWRkIHRoZSB1YmVyY29tcCBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9u
YWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUu
IFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJDaHJvbWl1bS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmguCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6RGVs
ZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6fkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgIChXZWJDb3JlOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0
ZUNDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxl
Z2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRS
ZW5kZXJQYXNzZXMpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OmFkZENvbnRyaWJ1dGluZ0RlbGVnYXRlZFJl
bmRlclBhc3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06
OmNsZWFyTGF5ZXJMaXN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBcHBlbmRRdWFkc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQXBwZW5kUXVhZHNE
YXRhOjpDQ0FwcGVuZFF1YWRzRGF0YSk6CisgICAgICAgIChDQ0FwcGVuZFF1YWRzRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6
On5DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmRlc2NlbmRhbnREcmF3c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6aGFzQ29udHJpYnV0aW5n
RGVsZWdhdGVkUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGw6OnNldFJlbmRlclBhc3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjppbmRl
eFRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6aWRUb0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFwcGVuZENvbnRyaWJ1dGluZ1JlbmRlclBh
c3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsOjphcHBlbmRSb290UmVuZGVyUGFzc1F1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFwcGVuZENvbnRyaWJ1dGluZ1JlbmRlclBhc3NRdWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVySW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzZXMp
OgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
ZXR1cFJvb3RMYXllckFuZFN1cmZhY2VGb3JSZWN1cnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3M6OmNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFkZENv
bnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3NMYXllcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6Y2xlYXJMYXllckxpc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUmVuZGVyUGFzc2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKwogMjAxMi0w
OC0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIE1ha2UgUmVuZGVyUGFzcyBpZHMgaG9sZCBib3RoIGdlbmVyYXRpbmcgbGF5ZXIgaWQg
YW5kIGFuIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDFjODZjMzMwYmU4ODM1
NmM1NGMxN2RmZGY2MGM2ZTUxNzdiNzk3YjUuLjgxMTA2ZjU3ODZhYTE1NmExODVjYTdkMDAyZmIy
YjlmYWQ0ODk3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTItMDgtMzEgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBBZGQgdGhlIHViZXJjb21wIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHNyYy9X
ZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpXZWJEZWxlZ2F0
ZWRSZW5kZXJlckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyOjpjcmVhdGUpOgorICAgICAgICAqIHRl
c3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3QuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKENDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGxUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsVGVzdDo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0Ojpj
cmVhdGVDb250ZXh0KToKKyAgICAgICAgKERyYXdpbmdMYXllckltcGwpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkRyYXdpbmdMYXllckltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6RHJhd2luZ0xheWVySW1wbDo6RHJhd2luZ0xheWVySW1wbCk6CisgICAgICAgIChDQ1Rlc3RS
ZW5kZXJQYXNzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ1Rlc3RSZW5kZXJQYXNzOjpxdWFk
U2luayk6CisgICAgICAgIChXZWJLaXRUZXN0czo6YWRkUmVuZGVyUGFzcyk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6YWRkUXVhZCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6YWRkUmVuZGVyUGFz
c1F1YWQpOgorICAgICAgICAoQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3RTaW1wbGUp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0
U2ltcGxlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZSk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6VEVTVF9GKToKKyAgICAgICAgKiB0ZXN0cy9DQ0RyYXdRdWFkVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NSZW5kZXJQYXNzVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZh
Y2VUZXN0LmNwcDoKKwogMjAxMi0wOC0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgUmVuZGVyUGFzcyBpZHMgaG9sZCBib3Ro
IGdlbmVyYXRpbmcgbGF5ZXIgaWQgYW5kIGFuIGluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4
IDdhYjA4MjYyYWZlNzYwNzE0NmU3Y2U0YmE2NGJmNGU1ZjQ3ZjY5MDUuLjI3YzJjOTM5MzhiOWIy
ZjJlMDA3NGQwNzk0YTQ2ZjJlYjA3MjYzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC01MSw2
ICs1MSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llSmFyLmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OGY0ZmE2ZTdiOGUwYTRlNDkxNWFkYWUzODdhZjgwZjA0ZTViNTdmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllcl9oCisjZGVmaW5lIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVy
cyB0aGUgb3V0cHV0IG9mIGFub3RoZXIKKy8vIGRlbGVnYXRpbmcgY29tcG9zaXRvci4KK2NsYXNz
IFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIqIGNyZWF0ZSgpOworCisgICAgdmlydHVh
bCB+V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcigpIHsgfQorCisgICAgdmlydHVhbCBXZWJMYXll
ciogbGF5ZXIoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDliMjRmMmNm
MDkyNmI2ZWQwY2ViYzE3ZWJlN2Y0ZDA1MTAyMTQwOTguLjAwY2FjM2U3ZmU0OTNlOWRlZWIzNjM3
Y2I3YWMwM2FkMTI4NWYxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzNTEsNiArODM1MSw4IEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5nLmNwcCcsCkBAIC04NDE0LDYgKzg0MTYsOCBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlbGF5QmFzZWRUaW1lU291cmNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWxheUJhc2VkVGltZVNvdXJjZS5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBs
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxl
Z2F0ZWRSZW5kZXJlckxheWVySW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDNkMmYyMmNhZjQ2YWVlODFhNWI4ZDlhZjRmNDgyNDIzZTc2MWYzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVk
UmVuZGVyZXJMYXllckNocm9taXVtLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5o
IgorCisjaW5jbHVkZSAiQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVt
PiBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0oKSk7Cit9CisKK0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtKCkKKyAgICA6IExheWVyQ2hyb21pdW0oKQoreworICAgIHNldElzRHJhd2FibGUodHJ1ZSk7
CisgICAgc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKK30KKworRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckNocm9taXVtOjp+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKCkKK3sKK30KKworUGFz
c093blB0cjxDQ0xheWVySW1wbD4gRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVh
dGVDQ0xheWVySW1wbCgpCit7CisgICAgcmV0dXJuIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGw6OmNyZWF0ZShtX2xheWVySWQpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NDk1ZjA5ZDFhZDJmMWQxOGRl
MWRjYjc3NDIwN2ZmMWJlYjQ2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0u
aApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIERlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJDaHJvbWl1bV9oCisjZGVmaW5lIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisK
KyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJD
aHJvbWl1bT4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNo
cm9taXVtKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUND
TGF5ZXJJbXBsKCkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyQ2hyb21pdW0oKTsKK307CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDJlNTQxZWU3YmVjYzNlMzdiNzliOTQ0NjRhZTY1NTY2NGExZThjNDUuLjIwOGVkZTQzZmU3NGEx
NDdjNmNhNGU0ZGY4YzVmYzZhNWUxZjdjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTIwMiw2
ICsyMDIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChD
Q0xheWVyVHJlZUhvc3QqKTsKIAorICAgIGJvb2wgaGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVu
ZGVyUGFzc2VzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZvaWQgc2V0SXNEcmF3
YWJsZShib29sKTsKIAogICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKExheWVyQ2hyb21pdW0qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Jl
bmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggNzg3ZWFhZWMyNTcxN2Q1MTM1
OGZjMjMwMjZhYjg1YmNlZTcyMDA1Ny4uNWQyMDZlNWQ3ZTNiN2IwOTk2ZTM1MWE4NTMxMjgxNDdi
YThmZjcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTc4LDggKzc4
LDkgQEAgcHVibGljOgogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jbGlwUmVjdDsgfQogICAgIHZvaWQgc2V0Q2xpcFJlY3QoY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QpIHsgbV9jbGlwUmVjdCA9IGNsaXBSZWN0OyB9CiAKLSAgICB2b2lkIGNsZWFyTGF5ZXJM
aXN0KCkgeyBtX2xheWVyTGlzdC5jbGVhcigpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+JiBsYXllckxpc3QoKSB7IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQg
YWRkQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKExheWVyQ2hyb21pdW0qKSB7
IH0KKyAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0cygpIHsgbV9sYXllckxpc3QuY2xlYXIoKTsgfQog
CiAgICAgdm9pZCBzZXROZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMoUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiBzdXJmYWNlKSB7IG1fbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0g
c3VyZmFjZTsgfQogICAgIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmVhcmVzdEFuY2Vz
dG9yVGhhdE1vdmVzUGl4ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9uZWFyZXN0QW5jZXN0b3JUaGF0
TW92ZXNQaXhlbHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oCmluZGV4IGQ1M2Zk
YmJmMDYzNmZkMjQ3MDA5NWQyNGMwN2NkOWMxMWMyMjg3N2MuLjM2MWY5Yzk2N2VjMmU1OGVjMzU3
M2ZkNDYwZGRiZDhlYzg3NDA3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaApA
QCAtMjYsMTIgKzI2LDIyIEBACiAjaWZuZGVmIENDQXBwZW5kUXVhZHNEYXRhX2gKICNkZWZpbmUg
Q0NBcHBlbmRRdWFkc0RhdGFfaAogCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IENDQXBwZW5kUXVhZHNEYXRhIHsKICAgICBDQ0FwcGVu
ZFF1YWRzRGF0YSgpCiAgICAgICAgIDogaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKGZhbHNlKQogICAgICAgICAsIGhhZE1pc3NpbmdUaWxlcyhmYWxzZSkKKyAgICAgICAgLCBy
ZW5kZXJQYXNzSWQoMCwgMCkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgQ0NBcHBlbmRR
dWFkc0RhdGEoQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQpCisgICAgICAgIDogaGFkT2Nj
bHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQorICAgICAgICAsIGhhZE1pc3Np
bmdUaWxlcyhmYWxzZSkKKyAgICAgICAgLCByZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAg
IHsKICAgICB9CiAKQEAgLTM5LDYgKzQ5LDggQEAgc3RydWN0IENDQXBwZW5kUXVhZHNEYXRhIHsK
ICAgICBib29sIGhhZE9jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKICAgICAvLyBT
ZXQgYnkgdGhlIGxheWVyIGFwcGVuZGluZyBxdWFkcy4KICAgICBib29sIGhhZE1pc3NpbmdUaWxl
czsKKyAgICAvLyBHaXZlbiB0byB0aGUgbGF5ZXIgYXBwZW5kaW5nIHF1YWRzLgorICAgIGNvbnN0
IENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzVi
NGM4NzkxOTFmNTVkMjJmYzQzYjVjMzk5MDVlOGZlNDQwOTY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVySW1wbC5jcHAKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCisK
KyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgorI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIK
KyNpbmNsdWRlICJDQ1JlbmRlclBhc3NEcmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFz
c1NpbmsuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKGludCBpZCkKKyAgICA6IENDTGF5
ZXJJbXBsKGlkKQoreworfQorCitDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+Q0NEZWxl
Z2F0ZWRSZW5kZXJlckxheWVySW1wbCgpCit7Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbDo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgpCit7CisgICAgLy8gRklYTUU6IFRo
aXMgY291bGQgcG9zc2libHkgcmV0dXJuIGZhbHNlIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSBzb21l
CisgICAgLy8gcXVhZHMgcHJlc2VudCBhcyB0aGV5IGNvdWxkIGFsbCBiZSBmcm9tIGEgc2luZ2xl
IGxheWVyLgorICAgIHJldHVybiAhbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5pc0VtcHR5KCk7
Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6aGFzQ29udHJpYnV0aW5n
RGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkgY29uc3QKK3sKKyAgICAvLyBUaGUgcm9vdCBSZW5kZXJQ
YXNzIGZvciB0aGUgbGF5ZXIgaXMgbWVyZ2VkIHdpdGggaXRzIHRhcmdldAorICAgIC8vIFJlbmRl
clBhc3MgaW4gZWFjaCBmcmFtZS4gU28gd2Ugb25seSBoYXZlIGV4dHJhIFJlbmRlclBhc3Nlcwor
ICAgIC8vIHRvIG1lcmdlIHdoZW4gd2UgaGF2ZSBhIG5vbi1yb290IFJlbmRlclBhc3MgcHJlc2Vu
dC4KKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5zaXplKCkgPiAxOworfQor
Cit2b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OnNldFJlbmRlclBhc3NlcyhWZWN0
b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCit7Cisg
ICAgRmxvYXRSZWN0IG9sZFJvb3REYW1hZ2U7CisgICAgaWYgKCFtX3JlbmRlclBhc3Nlc0luRHJh
d09yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgb2xkUm9vdERhbWFnZSA9IG1fcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXIubGFzdCgpLT5kYW1hZ2VSZWN0KCk7CisKKyAgICBtX3JlbmRlclBhc3Nlc0lu
RHJhd09yZGVyLmNsZWFyKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW5kZXJQYXNz
ZXNJbkRyYXdPcmRlci5zaXplKCk7ICsraSkKKyAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdP
cmRlci5hcHBlbmQocmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0ucmVsZWFzZSgpKTsKKyAgICBy
ZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5jbGVhcigpOworCisgICAgaWYgKCFtX3JlbmRlclBhc3Nl
c0luRHJhd09yZGVyLmlzRW1wdHkoKSkgeworICAgICAgICBGbG9hdFJlY3QgbmV3Um9vdERhbWFn
ZSA9IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIubGFzdCgpLT5kYW1hZ2VSZWN0KCk7CisgICAg
ICAgIG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIubGFzdCgpLT5zZXREYW1hZ2VSZWN0KHVuaW9u
UmVjdChvbGRSb290RGFtYWdlLCBuZXdSb290RGFtYWdlKSk7CisgICAgfQorfQorCitzdGF0aWMg
aW5saW5lIGludCBpbmRleFRvSWQoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCArIDE7IH0KK3N0
YXRpYyBpbmxpbmUgaW50IGlkVG9JbmRleChpbnQgaWQpIHsgcmV0dXJuIGlkIC0gMTsgfQorCit2
b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFwcGVuZENvbnRyaWJ1dGluZ1JlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJiByZW5kZXJQYXNzU2luaykKK3sKKyAgICBBU1NFUlQo
aGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKSAtIDE7ICsraSkg
eworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG91dHB1dFJlbmRlclBhc3NJZChpZCgpLCBpbmRl
eFRvSWQoaSkpOworCisgICAgICAgIC8vIERvbid0IGNsYXNoIHdpdGggdGhlIFJlbmRlclBhc3Mg
d2UgZ2VuZXJhdGUgaWYgd2Ugb3duIGEgUmVuZGVyU3VyZmFjZS4KKyAgICAgICAgQVNTRVJUKG91
dHB1dFJlbmRlclBhc3NJZC5zZWNvbmQgPiAwKTsKKworICAgICAgICByZW5kZXJQYXNzU2luay5h
cHBlbmRSZW5kZXJQYXNzKG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0tPmNvcHkob3V0cHV0
UmVuZGVyUGFzc0lkKSk7CisgICAgfQorfQorCit2b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0
YSYgYXBwZW5kUXVhZHNEYXRhKQoreworICAgIGlmIChtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIHNlY29uZCBjb21w
b25lbnQgb2YgdGhlIHJlbmRlclBhc3NJZCBpcyAwLCB0aGVuIGl0IGlzIGEgcmVuZGVyUGFzcyBn
ZW5lcmF0ZWQgZm9yIGEgbGF5ZXIKKyAgICAvLyBpbiB0aGlzIGNvbXBvc2l0b3IsIG5vdCB0aGUg
ZGVsZWdhdGVkIHJlbmRlcmVyLiBUaGVuIHdlIHdhbnQgdG8gbWVyZ2Ugb3VyIHJvb3QgcmVuZGVy
UGFzcyB3aXRoCisgICAgLy8gdGhlIHRhcmdldCByZW5kZXJQYXNzLiBPdGhlcndpc2UsIGl0IGlz
IHNvbWUgcmVuZGVyUGFzcyB3aGljaCB3ZSBhZGRlZCBmcm9tIHRoZSBkZWxlZ2F0ZWQKKyAgICAv
LyByZW5kZXJlci4KKyAgICBib29sIHNob3VsZE1lcmdlUm9vdFJlbmRlclBhc3NXaXRoVGFyZ2V0
ID0gIWFwcGVuZFF1YWRzRGF0YS5yZW5kZXJQYXNzSWQuc2Vjb25kOworICAgIGlmIChzaG91bGRN
ZXJnZVJvb3RSZW5kZXJQYXNzV2l0aFRhcmdldCkgeworICAgICAgICAvLyBWZXJpZnkgdGhhdCB0
aGUgcmVuZGVyUGFzcyB3ZSBhcmUgYXBwZW5kaW5nIHRvIGlzIGNyZWF0ZWQgb3VyIHJlbmRlclRh
cmdldC4KKyAgICAgICAgQVNTRVJUKGFwcGVuZFF1YWRzRGF0YS5yZW5kZXJQYXNzSWQuZmlyc3Qg
PT0gcmVuZGVyVGFyZ2V0KCktPmlkKCkpOworCisgICAgICAgIGFwcGVuZFJvb3RSZW5kZXJQYXNz
UXVhZHMocXVhZFNpbmssIGFwcGVuZFF1YWRzRGF0YSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gVmVyaWZ5IHRoYXQgdGhlIHJlbmRlclBhc3Mgd2UgYXJlIGFwcGVuZGluZyB0byB3YXMgY3Jl
YXRlZCBieSB1cy4KKyAgICAgICAgQVNTRVJUKGFwcGVuZFF1YWRzRGF0YS5yZW5kZXJQYXNzSWQu
Zmlyc3QgPT0gaWQoKSk7CisKKyAgICAgICAgaW50IHJlbmRlclBhc3NJbmRleCA9IGlkVG9JbmRl
eChhcHBlbmRRdWFkc0RhdGEucmVuZGVyUGFzc0lkLnNlY29uZCk7CisgICAgICAgIENDUmVuZGVy
UGFzcyogZGVsZWdhdGVkUmVuZGVyUGFzcyA9IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbcmVu
ZGVyUGFzc0luZGV4XS5nZXQoKTsKKyAgICAgICAgYXBwZW5kQ29udHJpYnV0aW5nUmVuZGVyUGFz
c1F1YWRzKHF1YWRTaW5rLCBhcHBlbmRRdWFkc0RhdGEsIGRlbGVnYXRlZFJlbmRlclBhc3MpOwor
ICAgIH0KK30KKwordm9pZCBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjphcHBlbmRSb290
UmVuZGVyUGFzc1F1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYg
YXBwZW5kUXVhZHNEYXRhKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBhZGQgcXVhZHMgZnJvbSB0
aGUgcm9vdCByZW5kZXJQYXNzIHRvIHRoZSBxdWFkU2luay4gUmVuZGVyUGFzc0RyYXdRdWFkcyBu
ZWVkIHRvIGhhdmUgdGhlaXIgaWRzIGFkanVzdGVkIHRvIG1hdGNoCisgICAgLy8gd2hhdCB3YXMg
YXBwZW5kZWQgaW4gYXBwZW5kQ29udHJpYnV0aW5nUmVuZGVyUGFzc2VzLgorCisgICAgLy8gQ0NS
ZW5kZXJQYXNzKiByb290RGVsZWdhdGVkUmVuZGVyUGFzcyA9IG1fcmVuZGVyUGFzc2VzSW5EcmF3
T3JkZXIubGFzdCgpOworfQorCit2b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFw
cGVuZENvbnRyaWJ1dGluZ1JlbmRlclBhc3NRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NB
cHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgQ0NSZW5kZXJQYXNzKiBkZWxlZ2F0ZWRS
ZW5kZXJQYXNzKSBjb25zdAoreworICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBjdXJyZW50
U2hhcmVkUXVhZFN0YXRlID0gMDsKKyAgICBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogY29waWVk
U2hhcmVkUXVhZFN0YXRlID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlbGVnYXRl
ZFJlbmRlclBhc3MtPnF1YWRMaXN0KCkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ0NEcmF3UXVh
ZCogcXVhZCA9IGRlbGVnYXRlZFJlbmRlclBhc3MtPnF1YWRMaXN0KClbaV0uZ2V0KCk7CisKKyAg
ICAgICAgaWYgKHF1YWQtPnNoYXJlZFF1YWRTdGF0ZSgpICE9IGN1cnJlbnRTaGFyZWRRdWFkU3Rh
dGUpIHsKKyAgICAgICAgICAgIGN1cnJlbnRTaGFyZWRRdWFkU3RhdGUgPSBxdWFkLT5zaGFyZWRR
dWFkU3RhdGUoKTsKKyAgICAgICAgICAgIGNvcGllZFNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5r
LnVzZVNoYXJlZFF1YWRTdGF0ZShjdXJyZW50U2hhcmVkUXVhZFN0YXRlLT5jb3B5KCkpOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChjb3BpZWRTaGFyZWRRdWFkU3RhdGUpOworCisgICAgICAg
IE93blB0cjxDQ0RyYXdRdWFkPiBjb3B5UXVhZDsKKyAgICAgICAgaWYgKHF1YWQtPm1hdGVyaWFs
KCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKKyAgICAgICAgICAgIGNvcHlRdWFkID0gcXVh
ZC0+Y29weShjb3BpZWRTaGFyZWRRdWFkU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBEbyB0aGlzIHdpdGhvdXQgbmVlZGluZyB0byBrbm93IGRldGFpbHMgb2Yg
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ/IFJlbW92ZSB0aGUgLmggZmlsZSB0b28hCisgICAgICAgICAg
ICBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcGFzc1F1YWQgPSBDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWQpOworICAgICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMg
d2l0aG91dCBhIGxvb3AuIEFkZCBiYWNrIHRoZSBIYXNoTWFwIHJlbmRlclBhc3Nlc0J5SWQuCisg
ICAgICAgICAgICB1bnNpZ25lZCBjb250cmlidXRpbmdSZW5kZXJQYXNzSW5kZXggPSAwOworICAg
ICAgICAgICAgd2hpbGUgKG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbY29udHJpYnV0aW5nUmVu
ZGVyUGFzc0luZGV4XS0+aWQoKSAhPSBwYXNzUXVhZC0+cmVuZGVyUGFzc0lkKCkpCisgICAgICAg
ICAgICAgICAgKytjb250cmlidXRpbmdSZW5kZXJQYXNzSW5kZXg7CisgICAgICAgICAgICBDQ1Jl
bmRlclBhc3M6OklkIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZChpZCgpLCBpbmRleFRvSWQoY29u
dHJpYnV0aW5nUmVuZGVyUGFzc0luZGV4KSk7CisgICAgICAgICAgICBBU1NFUlQoY29udHJpYnV0
aW5nUmVuZGVyUGFzc0lkICE9IGFwcGVuZFF1YWRzRGF0YS5yZW5kZXJQYXNzSWQpOworICAgICAg
ICAgICAgY29weVF1YWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvcGllZFNoYXJl
ZFF1YWRTdGF0ZSwgcGFzc1F1YWQtPnF1YWRSZWN0KCksIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJ
ZCwgcGFzc1F1YWQtPmlzUmVwbGljYSgpLCBwYXNzUXVhZC0+bWFza1Jlc291cmNlSWQoKSwgcGFz
c1F1YWQtPmNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKCksIHBhc3NRdWFkLT5tYXNrVGV4
Q29vcmRTY2FsZVgoKSwgcGFzc1F1YWQtPm1hc2tUZXhDb29yZFNjYWxlWSgpLCBwYXNzUXVhZC0+
bWFza1RleENvb3JkT2Zmc2V0WCgpLCBwYXNzUXVhZC0+bWFza1RleENvb3JkT2Zmc2V0WSgpKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29weVF1YWQpOworCisgICAgICAgIHF1YWRTaW5r
LmFwcGVuZChjb3B5UXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7CisgICAgfQorfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDRlY2M4MDEwNjBlOGEwOGVhMTZkMzY2MTJmNzFhMGMxOTFkMWExMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwuaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsX2gKKyNkZWZpbmUgQ0NEZWxl
Z2F0ZWRSZW5kZXJlckxheWVySW1wbF9oCisKKyNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgorI2lu
Y2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEND
RGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw+IGNy
ZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsKGlkKSk7IH0KKyAgICB2aXJ0dWFsIH5DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBs
KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGVzY2VuZGFudERyYXdzQ29udGVudCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzZXMo
KSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIFRoaXMgZ2l2ZXMgb3duZXJzaGlwIG9mIHRoZSBS
ZW5kZXJQYXNzZXMgdG8gdGhlIGxheWVyLgorICAgIHZvaWQgc2V0UmVuZGVyUGFzc2VzKFZlY3Rv
cjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+Jik7CisKKyAgICB2b2lkIGFwcGVuZENvbnRyaWJ1dGlu
Z1JlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJik7CisgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwoaW50KTsKKwor
ICAgIHZvaWQgYXBwZW5kUm9vdFJlbmRlclBhc3NRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRR
dWFkc0RhdGEmKSBjb25zdDsKKyAgICB2b2lkIGFwcGVuZENvbnRyaWJ1dGluZ1JlbmRlclBhc3NR
dWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmLCBDQ1JlbmRlclBhc3MqKSBjb25z
dDsKKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAiRGVsZWdhdGVkUmVuZGVyZXJMYXllciI7IH0KKworICAgIFZlY3Rv
cjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCmluZGV4IGY4YWQwNjcwMWE2MGVhOThkMGJhY2UzODViMGQzNzEzMzQ5ZTJkY2Yu
LmNiMGVlYTJiOGI4ZGY2NzQwZjg3ODFjMGVmNWUwZGViYWRiNDE0ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaApAQCAtMTAyLDYgKzEwMiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0OwogCisg
ICAgdmlydHVhbCBib29sIGhhc0NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3NlcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXll
ciBoYXMgY29udGVudCB0byBkcmF3LgogICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwog
ICAgIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnQ7IH0K
QEAgLTExMCw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZh
Y2UoYm9vbCBmb3JjZSkgeyBtX2ZvcmNlUmVuZGVyU3VyZmFjZSA9IGZvcmNlOyB9CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBsYXllcidzIGRlc2NlbmRhbnRzIGhhcyBjb250
ZW50IHRvIGRyYXcuCi0gICAgYm9vbCBkZXNjZW5kYW50RHJhd3NDb250ZW50KCk7CisgICAgdmly
dHVhbCBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKTsKIAogICAgIHZvaWQgc2V0QW5jaG9y
UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpOwogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBv
aW50KCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JQb2ludDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggNjg5OGM5Nzc5OGZmNTAzNmMxYWNkODFkMTY1
YmIxNTg3ZDk5MGI3YS4uZWYzMzg4NDFmYWY0OWFlZjdjMjJhYjI1OWQzNDk0NTM3ODNmODc2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0zNTMsNyAr
MzUzLDcgQEAgdm9pZCBzZXR1cFJvb3RMYXllckFuZFN1cmZhY2VGb3JSZWN1cnNpb24oTGF5ZXJU
eXBlKiByb290TGF5ZXIsIExheWVyTGlzdCYgcmVuZGUKICAgICAgICAgcm9vdExheWVyLT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7CiAKICAgICByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBkZXZpY2VWaWV3cG9ydFNpemUp
KTsKLSAgICByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+Y2xlYXJMYXllckxpc3QoKTsKKyAg
ICByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+Y2xlYXJMYXllckxpc3RzKCk7CiAKICAgICBB
U1NFUlQocmVuZGVyU3VyZmFjZUxheWVyTGlzdC5pc0VtcHR5KCkpOwogICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHJvb3RMYXllcik7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGlj
IHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBM
YXllclR5cGUqIHJvb3RMYXkKICAgICAgICAgICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CiAKICAgICAgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHJlbmRlclN1cmZhY2UgPSBsYXllci0+
cmVuZGVyU3VyZmFjZSgpOwotICAgICAgICByZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgp
OworICAgICAgICByZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdHMoKTsKIAogICAgICAgICAv
LyBUaGUgb3JpZ2luIG9mIHRoZSBuZXcgc3VyZmFjZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIg
b2YgdGhlIGxheWVyLgogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKGRy
YXdUcmFuc2Zvcm0pOwpAQCAtNzEyLDcgKzcxMiw3IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5
CiAgICAgICAgIGNsaXBwZWRDb250ZW50UmVjdC5zZXRIZWlnaHQoc3RkOjptaW4oY2xpcHBlZENv
bnRlbnRSZWN0LmhlaWdodCgpLCBtYXhUZXh0dXJlU2l6ZSkpOwogCiAgICAgICAgIGlmIChjbGlw
cGVkQ29udGVudFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xl
YXJMYXllckxpc3QoKTsKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
cygpOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KGNsaXBwZWRDb250
ZW50UmVjdCk7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFNjcmVlblNwYWNlVHJhbnNmb3Jt
KGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKQEAgLTc2OCw3ICs3NjgsOCBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgIGVsc2UKICAgICAgICAgZHJhd2FibGVDb250ZW50UmVj
dE9mU3VidHJlZSA9IGxvY2FsRHJhd2FibGVDb250ZW50UmVjdE9mU3VidHJlZTsKIAotICAgIHJl
dHVybjsKKyAgICBpZiAobGF5ZXItPmhhc0NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3Nl
cygpKQorICAgICAgICBsYXllci0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+YWRk
Q29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKGxheWVyKTsKIH0KIAogLy8gRklY
TUU6IEluc3RlYWQgb2YgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiB0byBzZXQgdmlzaWJp
bGl0eSByZWN0cyBvbiBhIHNlY29uZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAppbmRleCBkNWZhZDA5YzI0YTZlZGJkZTBlNTRkMTA4NDkyNzhlZjI1ODgzOThjLi5lMDQy
NTg1MmU1ZTgzZDg1N2U3ZDYyYzkyOGU3NjhkYmI2YTgyMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA1LDEyICszMDUsMjUgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIAog
ICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKGZy
YW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlw
ZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKGZyYW1lLnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRl
ckxheWVyKGl0KTsKKworICAgICAgICBpZiAoaXQtPmhhc0NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJl
bmRlclBhc3NlcygpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1l
LnJlbmRlclBhc3Nlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIENDUmVuZGVyUGFz
cyogcmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc1tpXTsKKyAgICAgICAgICAgICAgICBp
bnQgcmVuZGVyUGFzc0dlbmVyYXRpbmdMYXllcklkID0gcmVuZGVyUGFzcy0+aWQoKS5maXJzdDsK
KyAgICAgICAgICAgICAgICBpZiAocmVuZGVyUGFzc0dlbmVyYXRpbmdMYXllcklkICE9IGl0LT5p
ZCgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIEND
QXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YShyZW5kZXJQYXNzLT5pZCgpKTsKKworICAg
ICAgICAgICAgICAgIHJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVz
aW9uVHJhY2tlciwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CiAgICAgICAgIENDUmVuZGVyUGFzczo6SWQgdGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQudGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKS0+cmVuZGVyUGFzc0lkKCk7CiAg
ICAgICAgIENDUmVuZGVyUGFzcyogdGFyZ2V0UmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nl
c0J5SWQuZ2V0KHRhcmdldFJlbmRlclBhc3NJZCk7CiAKLSAgICAgICAgb2NjbHVzaW9uVHJhY2tl
ci5lbnRlckxheWVyKGl0KTsKLQotICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFk
c0RhdGE7CisgICAgICAgIENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YSh0YXJnZXRS
ZW5kZXJQYXNzLT5pZCgpKTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGlu
Z1JlbmRlclN1cmZhY2UoKSkgewogICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmli
dXRpbmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IDZhNjQ0MmU2YTUzY2JiODVjMzRkZjY5NjMz
MWU0ZDQ0YjdkMzk1Y2IuLmJlMDA2YzM3NzI3OTQyNGRiMzIxMjFlMGY3NmIwZjNiYTQ5ZGFiNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBDQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybQogICAgIEFTU0VSVChpZC5zZWNvbmQgPj0gMCk7CiB9CiAKLVBhc3NPd25Q
dHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNvcHkoaW50IG5ld0lkKSBjb25zdAorUGFz
c093blB0cjxDQ1JlbmRlclBhc3M+IENDUmVuZGVyUGFzczo6Y29weShDQ1JlbmRlclBhc3M6Oklk
IG5ld0lkKSBjb25zdAogewogICAgIEFTU0VSVChuZXdJZCAhPSBtX2lkKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaAppbmRleCAxZjUyMjQ4ODBiNjQzMTA1MDAwZjM4YjkxN2Y3YWIzMmZkYWU5ZWI1
Li44MmVjNzk5ZDdkZWRlM2ExNDIxY2I4NjRkMDQ5ZjA5YjU4MmRlNzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoSWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKIAog
ICAgIC8vIEEgc2hhbGxvdyBjb3B5IG9mIHRoZSByZW5kZXIgcGFzcywgd2hpY2ggZG9lcyBub3Qg
aW5jbHVkZSBpdHMgcXVhZHMuCi0gICAgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNvcHkoaW50
IG5ld0lkKSBjb25zdDsKKyAgICBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY29weShDQ1JlbmRl
clBhc3M6OklkIG5ld0lkKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCosIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBDQ0FwcGVuZFF1YWRzRGF0YSYp
OwogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwq
LCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9u
VHJhY2tlckltcGwqLCBDQ0FwcGVuZFF1YWRzRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5jcHAKaW5kZXggMTYzOTNiOTMwZDkxNGE1ZGVjOTdlMzJhYjgyOWRiNDkzZmYxN2ZiZS4u
YWY5ZWE0NzNmZjY1MWJiNmIzYzQ3ZjM0ZTYxMDBmZTcyNTkyNWIxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDQ0RhbWFn
ZVRyYWNrZXIuaCIKICNpbmNsdWRlICJDQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKyNpbmNsdWRl
ICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwu
aCIKICNpbmNsdWRlICJDQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgpAQCAt
MTYxLDYgKzE2MiwxOSBAQCBib29sIENDUmVuZGVyU3VyZmFjZTo6c3VyZmFjZVByb3BlcnR5Q2hh
bmdlZE9ubHlGcm9tRGVzY2VuZGFudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZVByb3Bl
cnR5Q2hhbmdlZCAmJiAhbV9vd25pbmdMYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKIH0K
IAordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFkZENvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBh
c3NMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJMaXN0LmNv
bnRhaW5zKGxheWVyKSk7CisgICAgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCogZGVsZWdh
dGVkUmVuZGVyZXJMYXllciA9IHN0YXRpY19jYXN0PENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGwqPihsYXllcik7CisgICAgbV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJM
aXN0LmFwcGVuZChkZWxlZ2F0ZWRSZW5kZXJlckxheWVyKTsKK30KKwordm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmNsZWFyTGF5ZXJMaXN0cygpCit7CisgICAgbV9sYXllckxpc3QuY2xlYXIoKTsKKyAg
ICBtX2NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3NMYXllckxpc3QuY2xlYXIoKTsKK30K
Kwogc3RhdGljIGlubGluZSBJbnRSZWN0IGNvbXB1dGVDbGlwcGVkUmVjdEluVGFyZ2V0KGNvbnN0
IENDTGF5ZXJJbXBsKiBvd25pbmdMYXllcikKIHsKICAgICBBU1NFUlQob3duaW5nTGF5ZXItPnBh
cmVudCgpKTsKQEAgLTE5MSw2ICsyMDUsOSBAQCBDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3Vy
ZmFjZTo6cmVuZGVyUGFzc0lkKCkKIAogdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJlbmRl
clBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJiBwYXNzU2luaykKIHsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyTGlzdC5zaXpl
KCk7ICsraSkKKyAgICAgICAgbV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJM
aXN0W2ldLT5hcHBlbmRDb250cmlidXRpbmdSZW5kZXJQYXNzZXMocGFzc1NpbmspOworCiAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclBh
c3NJZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBwYXNz
LT5zZXREYW1hZ2VSZWN0KG1fZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFnZVJlY3QoKSk7CiAg
ICAgcGFzcy0+c2V0RmlsdGVycyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaAppbmRleCAyZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNm
NjYxM2ZkLi42MzIyMGEwNWUwZGEwYWJiMDhlODNmYTRlYTJlMjk4YTJmZjEwOWI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CitjbGFzcyBDQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsOwogY2xhc3MgQ0NRdWFkU2luazsKIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBj
bGFzcyBDQ0xheWVySW1wbDsKQEAgLTk1LDggKzk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q29udGVudFJlY3QoY29uc3QgSW50UmVjdCYpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQogCi0gICAgdm9pZCBjbGVhckxh
eWVyTGlzdCgpIHsgbV9sYXllckxpc3QuY2xlYXIoKTsgfQogICAgIFZlY3RvcjxDQ0xheWVySW1w
bCo+JiBsYXllckxpc3QoKSB7IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQgYWRkQ29u
dHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKENDTGF5ZXJJbXBsKik7CisgICAgdm9p
ZCBjbGVhckxheWVyTGlzdHMoKTsKIAogICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAK
QEAgLTEzMSw2ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKIAog
ICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fbGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJJbXBsKj4gbV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNz
TGF5ZXJMaXN0OwogCiAgICAgLy8gVGhlIG5lYXJlc3QgYW5jZXN0b3IgdGFyZ2V0IHN1cmZhY2Ug
dGhhdCB3aWxsIGNvbnRhaW4gdGhlIGNvbnRlbnRzIG9mIHRoaXMgc3VyZmFjZSwgYW5kIHRoYXQg
aXMgZ29pbmcKICAgICAvLyB0byBtb3ZlIHBpeGVscyB3aXRoaW4gdGhlIHN1cmZhY2UgKHN1Y2gg
YXMgd2l0aCBhIGJsdXIpLiBUaGlzIGNhbiBwb2ludCB0byBpdHNlbGYuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggOWNiMGVhNjUwZjQ2ZmNmZDRjNGE4YjVjOTYzNDMyYTRiYmE0ZjVl
My4uMzk0NGEwYTMyOWQyZTY4YjkyYzhiYTA3ODdiZDNmOTA3ZDI3OWYzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cApAQCAtNDk4LDYgKzQ5OCw3IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEYXRhYmFzZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YVNvdXJjZUlt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmlu
ZGV4IDMzNTlkOTIzY2ZiYjRjMTUzNDA3YzJjODMzMGJkMzI4NmYzMjQ1MzAuLjUwZGYxNTcxMWFm
MmNiMjMxNjcwNGE3ZDk5ZjdhNTRhODU1MDFhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwaQpAQCAtNjIsNiArNjIsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0NDQW5pbWF0aW9uVGVz
dENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvQ0NEZWxheUJhc2VkVGltZVNvdXJjZVRlc3QuY3BwJywKKyAg
ICAgICAgICAgICd0ZXN0cy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0NDRHJhd1F1YWRUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NGcmFtZVJhdGVDb250cm9sbGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ND
S2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmVUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVmNzEyYTZlMTk3OTEyZDQ4OGFjY2ZlMDY2ZTY5Y2RhODJkMDBkNTAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyLmNwcApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmg+CisKKyNpbmNsdWRlICJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCA6IHB1YmxpYyBXZWJEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJv
bWl1bT4pOworICAgIHZpcnR1YWwgfldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKCk7CisK
KyAgICAvLyBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZp
cnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRy
PFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsOjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbChQYXNzUmVmUHRyPERlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBX
ZWJMYXllckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGw6On5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgpCit7Cit9CisKK1dlYkxheWVyKiBX
ZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xh
eWVyLmdldCgpOworfQorCitXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKiBXZWJEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyOjpjcmVhdGUoKQoreworICAgIFJlZlB0cjxEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyQ2hyb21pdW0+IGxheWVyID0gRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICByZXR1cm4gbmV3IFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKGxheWVy
LnJlbGVhc2UoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKaW5kZXggZjll
ZWNkYjc1OTdlNTM5MTkwMzc5YjQ0NzdlZTg2OTc0MWMyNWU5Ny4uODc3MmRmNDEzZjM1YWZhNGQ2
MDE3OTJmMzUwNTMxZDBkYWZkYjE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCkBAIC0xMTE2LDcgKzExMTYsNyBAQCBU
RVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yRW1wdHlMYXllckxpc3Qp
CiAKICAgICBBU1NFUlRfVFJVRShyb290ID09IHJvb3QtPnJlbmRlclRhcmdldCgpKTsKICAgICBD
Q1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UgPSByb290LT5yZW5kZXJTdXJmYWNlKCk7Ci0g
ICAgdGFyZ2V0U3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKKyAgICB0YXJnZXRTdXJmYWNlLT5j
bGVhckxheWVyTGlzdHMoKTsKICAgICB0YXJnZXRTdXJmYWNlLT5kYW1hZ2VUcmFja2VyKCktPnVw
ZGF0ZURhbWFnZVRyYWNraW5nU3RhdGUodGFyZ2V0U3VyZmFjZS0+bGF5ZXJMaXN0KCksIHRhcmdl
dFN1cmZhY2UtPm93bmluZ0xheWVySWQoKSwgZmFsc2UsIEludFJlY3QoKSwgMCwgV2ViRmlsdGVy
T3BlcmF0aW9ucygpKTsKIAogICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0gdGFyZ2V0U3VyZmFj
ZS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzdlNzQ4YjdlZTUyOTY2YTgzODc0YmVlYWM4
M2M0NTVmNzc2Mzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTAsMCArMSwyNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNDRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkNDQXBwZW5kUXVhZHNEYXRh
LmgiCisjaW5jbHVkZSAiQ0NMYXllclRyZWVIb3N0SW1wbC5oIgorI2luY2x1ZGUgIkNDTGF5ZXJU
cmVlVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKKyNpbmNsdWRlICJDQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNp
bmNsdWRlICJDQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDU29saWRDb2xvckxh
eWVySW1wbC5oIgorI2luY2x1ZGUgIkZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oIgor
I2luY2x1ZGUgIkZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIk1vY2tDQ1F1
YWRDdWxsZXIuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgorCit1c2luZyBXZWJLaXQ6OkZha2VXZWJDb21wb3Np
dG9yT3V0cHV0U3VyZmFjZTsKK3VzaW5nIFdlYktpdDo6RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
OwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CisKK25hbWVzcGFjZSB7
CisKK2NsYXNzIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QsIHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdCgpCisgICAgeworICAgICAgICBDQ0xh
eWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOworICAgICAgICBzZXR0aW5ncy5taW5pbXVtT2NjbHVz
aW9uVHJhY2tpbmdTaXplID0gSW50U2l6ZSgpOworCisgICAgICAgIG1faG9zdEltcGwgPSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjcmVhdGUoc2V0dGluZ3MsIHRoaXMpOworICAgICAgICBtX2hvc3RJ
bXBsLT5pbml0aWFsaXplUmVuZGVyZXIoY3JlYXRlQ29udGV4dCgpLCBVbnRocm90dGxlZFVwbG9h
ZGVyKTsKKyAgICAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMTAsIDEw
KSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICB9CisKKyAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dE9u
SW1wbFRocmVhZCgpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJz
Q29tcGxldGVPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25W
U3luY1BhcmFtZXRlcnNDaGFuZ2VkKGRvdWJsZSwgZG91YmxlKSBPVkVSUklERSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNDb21taXRPbkltcGxUaHJlYWQoKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdEFuaW1hdGlvbkV2ZW50c1RvTWFpblRocmVhZE9uSW1wbFRo
cmVhZChQYXNzT3duUHRyPENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yPiwgZG91YmxlIHdhbGxDbG9j
a1RpbWUpIE9WRVJSSURFIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgUGFzc093blB0cjxDQ0dyYXBo
aWNzQ29udGV4dD4gY3JlYXRlQ29udGV4dCgpCisgICAgeworICAgICAgICByZXR1cm4gRmFrZVdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFw
aGljc0NvbnRleHQzRCkpOworICAgIH0KKworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBt
X2Fsd2F5c0ltcGxUaHJlYWQ7CisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBt
X2Fsd2F5c01haW5UaHJlYWRCbG9ja2VkOworCisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdElt
cGw+IG1faG9zdEltcGw7Cit9OworCitjbGFzcyBEcmF3aW5nTGF5ZXJJbXBsIDogcHVibGljIEND
U29saWRDb2xvckxheWVySW1wbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RHJh
d2luZ0xheWVySW1wbD4gY3JlYXRlKGludCBpZCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERyYXdp
bmdMYXllckltcGwoaWQpKTsgfQorcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IERyYXdpbmdMYXll
ckltcGwoaW50IGlkKSA6IENDU29saWRDb2xvckxheWVySW1wbChpZCkgeyBzZXREcmF3c0NvbnRl
bnQodHJ1ZSk7IH0KK307CisKK2NsYXNzIENDVGVzdFJlbmRlclBhc3MgOiBwdWJsaWMgQ0NSZW5k
ZXJQYXNzIHsKK3B1YmxpYzoKKyAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRTaW5rKCkgeyByZXR1
cm4gTW9ja0NDUXVhZEN1bGxlcihtX3F1YWRMaXN0LCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QpOyB9
Cit9OworCitzdGF0aWMgQ0NUZXN0UmVuZGVyUGFzcyogYWRkUmVuZGVyUGFzcyhWZWN0b3I8T3du
UHRyPENDUmVuZGVyUGFzcz4gPiYgcGFzc0xpc3QsIENDUmVuZGVyUGFzczo6SWQgaWQsIEludFJl
Y3Qgb3V0cHV0UmVjdCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9ybSkKK3sK
KyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzKENDUmVuZGVyUGFzczo6Y3JlYXRlKGlkLCBv
dXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSk7CisgICAgQ0NUZXN0UmVuZGVyUGFzcyogdGVzdFBh
c3MgPSBzdGF0aWNfY2FzdDxDQ1Rlc3RSZW5kZXJQYXNzKj4ocGFzcy5nZXQoKSk7CisgICAgcGFz
c0xpc3QuYXBwZW5kKHBhc3MucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gdGVzdFBhc3M7Cit9CisK
K3N0YXRpYyBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogYWRkUXVhZChDQ1Rlc3RSZW5kZXJQYXNzKiBw
YXNzLCBJbnRSZWN0IHJlY3QsIFNrQ29sb3IgY29sb3IpCit7CisgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkU2luayA9IHBhc3MtPnF1YWRTaW5rKCk7CisgICAgQ0NBcHBlbmRRdWFkc0RhdGEgZGF0
YShwYXNzLT5pZCgpKTsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkU3RhdGUgPSBxdWFk
U2luay51c2VTaGFyZWRRdWFkU3RhdGUoQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCByZWN0LCByZWN0LCAxLCBmYWxzZSkpOworICAgIE93blB0cjxD
Q1NvbGlkQ29sb3JEcmF3UXVhZD4gcXVhZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFN0YXRlLCByZWN0LCBjb2xvcikpOworICAgIENDU29saWRDb2xvckRyYXdRdWFkKiBxdWFk
UHRyID0gcXVhZC5nZXQoKTsKKyAgICBxdWFkU2luay5hcHBlbmQocXVhZC5yZWxlYXNlKCksIGRh
dGEpOworICAgIHJldHVybiBxdWFkUHRyOworfQorCitzdGF0aWMgdm9pZCBhZGRSZW5kZXJQYXNz
UXVhZChDQ1Rlc3RSZW5kZXJQYXNzKiB0b1Bhc3MsIENDVGVzdFJlbmRlclBhc3MqIGNvbnRyaWJ1
dGluZ1Bhc3MpCit7CisgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkU2luayA9IHRvUGFzcy0+cXVh
ZFNpbmsoKTsKKyAgICBDQ0FwcGVuZFF1YWRzRGF0YSBkYXRhKHRvUGFzcy0+aWQoKSk7CisgICAg
SW50UmVjdCBvdXRwdXRSZWN0ID0gY29udHJpYnV0aW5nUGFzcy0+b3V0cHV0UmVjdCgpOworICAg
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRT
dGF0ZShDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IG91dHB1dFJlY3QsIG91dHB1dFJlY3QsIDEsIGZhbHNlKSk7CisgICAgT3duUHRyPENDUmVuZGVy
UGFzc0RyYXdRdWFkPiBxdWFkKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkU3Rh
dGUsIG91dHB1dFJlY3QsIGNvbnRyaWJ1dGluZ1Bhc3MtPmlkKCksIGZhbHNlLCAwLCBvdXRwdXRS
ZWN0LCAwLCAwLCAwLCAwKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpLCBk
YXRhKTsKK30KKworY2xhc3MgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3RTaW1wbGUg
OiBwdWJsaWMgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3QgeworcHVibGljOgorICAg
IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlKCkKKyAgICAgICAgOiBDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdCgpCisgICAgICAgICwgbV9yb290TGF5ZXIoQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoMSkpCisgICAgICAgICwgbV9sYXllckJlZm9yZShD
Q1NvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgyKSkKKyAgICAgICAgLCBtX2xheWVyQWZ0ZXIo
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoMykpCisgICAgICAgICwgbV9kZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyKENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSg0KSkKKyAg
ICB7CisgICAgICAgIG1faG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICBtX3Jvb3RMYXllci0+c2V0Qm91bmRzKElu
dFNpemUoMTAwLCAxMDApKTsKKworICAgICAgICBtX2xheWVyQmVmb3JlLT5zZXRQb3NpdGlvbihJ
bnRQb2ludCgyMCwgMjApKTsKKyAgICAgICAgbV9sYXllckJlZm9yZS0+c2V0Qm91bmRzKEludFNp
emUoMTAsIDEwKSk7CisgICAgICAgIG1fbGF5ZXJCZWZvcmUtPnNldENvbnRlbnRCb3VuZHMoSW50
U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9sYXllckJlZm9yZS0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOworICAgICAgICBtX2xheWVyQmVmb3JlLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7
CisKKyAgICAgICAgbV9sYXllckFmdGVyLT5zZXRQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7Cisg
ICAgICAgIG1fbGF5ZXJBZnRlci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgICAg
IG1fbGF5ZXJBZnRlci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgICAg
ICBtX2xheWVyQWZ0ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICAgICAgbV9sYXllckFm
dGVyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CisKKyAgICAgICAgbV9kZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLT5zZXRQb3NpdGlvbihJbnRQb2ludCgwLCAwKSk7CisgICAgICAgIG1fZGVs
ZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgICAg
IG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAx
MCkpOworICAgICAgICBtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXItPnNldERyYXdzQ29udGVudCh0
cnVlKTsKKworICAgICAgICBWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiBkZWxlZ2F0ZWRS
ZW5kZXJQYXNzZXM7CisgICAgICAgIENDVGVzdFJlbmRlclBhc3MqIHBhc3MxID0gYWRkUmVuZGVy
UGFzcyhkZWxlZ2F0ZWRSZW5kZXJQYXNzZXMsIENDUmVuZGVyUGFzczo6SWQoOSwgNiksIEludFJl
Y3QoNiwgNiwgNiwgNiksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBhZGRR
dWFkKHBhc3MxLCBJbnRSZWN0KDAsIDAsIDYsIDYpLCAzM3UpOworICAgICAgICBDQ1Rlc3RSZW5k
ZXJQYXNzKiBwYXNzMiA9IGFkZFJlbmRlclBhc3MoZGVsZWdhdGVkUmVuZGVyUGFzc2VzLCBDQ1Jl
bmRlclBhc3M6OklkKDksIDcpLCBJbnRSZWN0KDcsIDcsIDcsIDcpLCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgYWRkUXVhZChwYXNzMiwgSW50UmVjdCgwLCAwLCA3LCA3KSwg
MjJ1KTsKKyAgICAgICAgYWRkUmVuZGVyUGFzc1F1YWQocGFzczIsIHBhc3MxKTsKKyAgICAgICAg
Q0NUZXN0UmVuZGVyUGFzcyogcGFzczMgPSBhZGRSZW5kZXJQYXNzKGRlbGVnYXRlZFJlbmRlclBh
c3NlcywgQ0NSZW5kZXJQYXNzOjpJZCg5LCA4KSwgSW50UmVjdCg4LCA4LCA4LCA4KSwgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGFkZFJlbmRlclBhc3NRdWFkKHBhc3MzLCBw
YXNzMik7CisgICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0UmVuZGVyUGFzc2Vz
KGRlbGVnYXRlZFJlbmRlclBhc3Nlcyk7CisKKyAgICAgICAgLy8gVGhlIFJlbmRlclBhc3NlcyBz
aG91bGQgYmUgdGFrZW4gYnkgdGhlIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVEoMHUsIGRlbGVn
YXRlZFJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIC8vIEZvcmNlIHRoZSBkZWxlZ2F0
ZWQgUmVuZGVyUGFzc2VzIHRvIGNvbWUgYmVmb3JlIHRoZSBSZW5kZXJQYXNzIGZyb20gbV9sYXll
ckFmdGVyLgorICAgICAgICBtX2xheWVyQWZ0ZXItPmFkZENoaWxkKG1fZGVsZWdhdGVkUmVuZGVy
ZXJMYXllci5yZWxlYXNlKCkpOworICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9sYXll
ckFmdGVyLnJlbGVhc2UoKSk7CisKKyAgICAgICAgLy8gR2V0IHRoZSBSZW5kZXJQYXNzIGdlbmVy
YXRlZCBieSBtX2xheWVyQmVmb3JlIHRvIGNvbWUgYmVmb3JlIHRoZSBkZWxlZ2F0ZWQgUmVuZGVy
UGFzc2VzLgorICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9sYXllckJlZm9yZS5yZWxl
YXNlKCkpOworCisgICAgICAgIG1faG9zdEltcGwtPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci5y
ZWxlYXNlKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIE93blB0cjxDQ1NvbGlkQ29sb3JM
YXllckltcGw+IG1fcm9vdExheWVyOworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+
IG1fbGF5ZXJCZWZvcmU7CisgICAgT3duUHRyPENDU29saWRDb2xvckxheWVySW1wbD4gbV9sYXll
ckFmdGVyOworICAgIE93blB0cjxDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBtX2RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXI7Cit9OworCitURVNUX0YoQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
SW1wbFRlc3RTaW1wbGUsIEFkZHNDb250cmlidXRpbmdSZW5kZXJQYXNzZXMpCit7CisgICAgQ0NM
YXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9z
dEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJz
KGZyYW1lKTsKKyAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKworICAg
IC8vIEVhY2ggbm9uLURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgb25lIFJlbmRlclBhc3Mu
IFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFkZGVkIHR3byBjb250cmlidXRpbmcgcGFzc2Vz
LgorICAgIEFTU0VSVF9FUSg1dSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAv
LyBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBzaG91bGQgaGF2ZSBhZGRlZCBpdHMgY29udHJp
YnV0aW5nIFJlbmRlclBhc3NlcyB0byB0aGUgZnJhbWUuCisgICAgRVhQRUNUX0VRKDEsIGZyYW1l
LnJlbmRlclBhc3Nlc1sxXS0+aWQoKS5zZWNvbmQpOworICAgIEVYUEVDVF9FUSgyLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMl0tPmlkKCkuc2Vjb25kKTsKKyAgICAvLyBBbmQgYWxsIG90aGVyIFJlbmRl
clBhc3NlcyBzaG91bGQgYmUgbm9uLWRlbGVnYXRlZC4KKyAgICBFWFBFQ1RfRVEoMCwgZnJhbWUu
cmVuZGVyUGFzc2VzWzBdLT5pZCgpLnNlY29uZCk7CisgICAgRVhQRUNUX0VRKDAsIGZyYW1lLnJl
bmRlclBhc3Nlc1szXS0+aWQoKS5zZWNvbmQpOworICAgIEVYUEVDVF9FUSgwLCBmcmFtZS5yZW5k
ZXJQYXNzZXNbNF0tPmlkKCkuc2Vjb25kKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyIHNob3VsZCBoYXZlIGFkZGVkIGl0cyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lIGlu
IG9yZGVyLgorICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDYsIDYsIDYsIDYpLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMV0tPm91dHB1dFJlY3QoKSk7CisgICAgRVhQRUNUX0lOVF9SRUNUX0VR
KEludFJlY3QoNywgNywgNywgNyksIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+b3V0cHV0UmVjdCgp
KTsgICAKK30KKworVEVTVF9GKENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxl
LCBBZGRzUXVhZHNUb0NvbnRyaWJ1dGluZ1JlbmRlclBhc3NlcykKK3sKKyAgICBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+
cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUp
OworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworCisgICAgLy8gRWFj
aCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUgUmVuZGVyUGFzcy4gVGhlIERl
bGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1dGluZyBwYXNzZXMuCisgICAg
QVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKworICAgIC8vIFRoZSBE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVyIHNob3VsZCBoYXZlIGFkZGVkIGl0cyBjb250cmlidXRpbmcg
UmVuZGVyUGFzc2VzIHRvIHRoZSBmcmFtZS4KKyAgICBFWFBFQ1RfRVEoMSwgZnJhbWUucmVuZGVy
UGFzc2VzWzFdLT5pZCgpLnNlY29uZCk7CisgICAgRVhQRUNUX0VRKDIsIGZyYW1lLnJlbmRlclBh
c3Nlc1syXS0+aWQoKS5zZWNvbmQpOworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5
ZXIgc2hvdWxkIGhhdmUgYWRkZWQgY29waWVzIG9mIGl0cyBxdWFkcyB0byBjb250cmlidXRpbmcg
UmVuZGVyUGFzc2VzLgorICAgIEVYUEVDVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5x
dWFkTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwg
NiwgNiksIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+cXVhZFJlY3QoKSk7
CisKKyAgICBFWFBFQ1RfRVEoMnUsIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKS5z
aXplKCkpOworICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDcsIDcpLCBmcmFt
ZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KClbMF0tPnF1YWRSZWN0KCkpOworICAgIEVYUEVD
VF9JTlRfUkVDVF9FUShJbnRSZWN0KDYsIDYsIDYsIDYpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0t
PnF1YWRMaXN0KClbMV0tPnF1YWRSZWN0KCkpOworfQorCitURVNUX0YoQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbFRlc3RTaW1wbGUsIEFkZHNRdWFkc1RvVGFyZ2V0UmVuZGVyUGFzcykKK3sK
KyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RS
VUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRy
YXdMYXllcnMoZnJhbWUpOworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUp
OworCisgICAgLy8gRWFjaCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUgUmVu
ZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1dGlu
ZyBwYXNzZXMuCisgICAgQVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsK
KworICAgIC8vIFRoZSBsYXllcidzIHRhcmdldCBpcyB0aGUgUmVuZGVyUGFzcyBmcm9tIG1fbGF5
ZXJBZnRlci4KKyAgICBFWFBFQ1RfRVEoQ0NSZW5kZXJQYXNzOjpJZCgzLCAwKSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzNdLT5pZCgpKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
IHNob3VsZCBoYXZlIGFkZGVkIGNvcGllcyBvZiBxdWFkcyBpbiBpdHMgcm9vdCBSZW5kZXJQYXNz
IHRvIGl0cyB0YXJnZXQgUmVuZGVyUGFzcy4KKyAgICAvLyBUaGUgbV9sYXllckFmdGVyIGFsc28g
YWRkcyBvbmUgcXVhZC4KKyAgICBBU1NFUlRfRVEoMnUsIGZyYW1lLnJlbmRlclBhc3Nlc1szXS0+
cXVhZExpc3QoKS5zaXplKCkpOworCit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRHJhd1F1YWRUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEcmF3UXVhZFRlc3QuY3BwCmluZGV4IDcyNmRlYzgzNmVh
NWNjNmEzMjhlYmVlOWJkZTM5NDgyMTA0YjI5NjQuLmU4MzU4MTRkODBlYTczMTQyMTJjOTUzN2Fi
N2Y1ZmFkZWQ2YmVlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEcmF3UXVhZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NE
cmF3UXVhZFRlc3QuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgVEVTVChDQ0RyYXdRdWFkVGVzdCwg
Y29weUlPU3VyZmFjZURyYXdRdWFkKQogCiBURVNUKENDRHJhd1F1YWRUZXN0LCBjb3B5UmVuZGVy
UGFzc0RyYXdRdWFkKQogewotICAgIGludCByZW5kZXJQYXNzSWQgPSAyMjsKKyAgICBDQ1JlbmRl
clBhc3M6OklkIHJlbmRlclBhc3NJZCgyMiwgNTIpOwogICAgIGJvb2wgaXNSZXBsaWNhID0gdHJ1
ZTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQgPSA3
ODsKICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKDQyLCAxMSwgNzQs
IDI0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZjFiMWY3ODkxOGZhNGI5ZjZlZjRlOTUzZjU4ODJj
OTkwZmExMmU0Yy4uZDhlYzNkMWIwYzFiZjdmZDQ5ZGViMGZkOGEwZjNhZGUxZjIwNWE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhv
c3RJbXBsLmgiCiAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKKyNpbmNsdWRl
ICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiQ0NMYXllckltcGwuaCIKQEAgLTI0OTcsNyArMjQ5OCw2IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgZG9udFVzZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAg
ICAgcm9vdExheWVyLT5hZGRDaGlsZChodWRMYXllci5yZWxlYXNlKCkpOwogCiAgICAgT3duUHRy
PEZha2VTY3JvbGxiYXJMYXllckltcGw+IHNjcm9sbGJhckxheWVyKEZha2VTY3JvbGxiYXJMYXll
ckltcGw6OmNyZWF0ZSg4KSk7Ci0gICAgc2Nyb2xsYmFyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJ
bXBsKG1faG9zdEltcGwuZ2V0KCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXRCb3VuZHMoSW50
U2l6ZSgxMCwgMTApKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRT
aXplKDEwLCAxMCkpOwogICAgIHNjcm9sbGJhckxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7
CkBAIC0yNTA1LDYgKzI1MDUsMTMgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
b250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKICAgICBzY3JvbGxiYXJMYXllci0+
Y3JlYXRlUmVzb3VyY2VzKG1faG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgcm9v
dExheWVyLT5hZGRDaGlsZChzY3JvbGxiYXJMYXllci5yZWxlYXNlKCkpOwogCisgICAgT3duUHRy
PENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw+IGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIoQ0NE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6Y3JlYXRlKDkpKTsKKyAgICBkZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdh
dGVkUmVuZGVyZXJMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOworICAg
IHJvb3RMYXllci0+YWRkQ2hpbGQoZGVsZWdhdGVkUmVuZGVyZXJMYXllci5yZWxlYXNlKCkpOwor
CiAgICAgLy8gVXNlIGEgY29udGV4dCB0aGF0IHN1cHBvcnRzIElPU3VyZmFjZXMKICAgICBtX2hv
c3RJbXBsLT5pbml0aWFsaXplUmVuZGVyZXIoRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNl
OjpjcmVhdGUoYWRvcHRQdHIobmV3IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRFdpdGhJT1N1cmZh
Y2UpKSwgVW50aHJvdHRsZWRVcGxvYWRlcik7CiAKQEAgLTI2MzIsNiArMjYzOSwxMyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIGxheWVyc0ZyZWVUZXh0dXJlcykKICAgICBpb1N1
cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdEltcGwobV9ob3N0SW1wbC5nZXQoKSk7CiAgICAg
cm9vdExheWVyLT5hZGRDaGlsZChpb1N1cmZhY2VMYXllci5yZWxlYXNlKCkpOwogCisgICAgT3du
UHRyPENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw+IGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIo
Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6Y3JlYXRlKDYpKTsKKyAgICBkZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICBkZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVs
ZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIGRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOwor
ICAgIHJvb3RMYXllci0+YWRkQ2hpbGQoZGVsZWdhdGVkUmVuZGVyZXJMYXllci5yZWxlYXNlKCkp
OworCiAgICAgLy8gTG9zZSB0aGUgY29udGV4dCwgcmVwbGFjaW5nIGl0IHdpdGggYSBUcmFja2lu
Z1dlYkdyYXBoaWNzQ29udGV4dDNEICh3aGljaCB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0YWtl
cyBvd25lcnNoaXAgb2YpLgogICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gY2NDb250ZXh0
KEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKGFkb3B0UHRyKG5ldyBUcmFj
a2luZ1dlYkdyYXBoaWNzQ29udGV4dDNEKSkpOwogICAgIFRyYWNraW5nV2ViR3JhcGhpY3NDb250
ZXh0M0QqIHRyYWNraW5nV2ViR3JhcGhpY3NDb250ZXh0ID0gc3RhdGljX2Nhc3Q8VHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQzRCo+KGNjQ29udGV4dC0+Y29udGV4dDNEKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclBhc3NUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJQYXNzVGVzdC5jcHAKaW5kZXggMzk3
ZDQxMDU3YmU1YTQxYjJmNmY2ODM5MGY2ODY0ZDViZDc5YzBhYS4uYmQ4ZTIwZDg4MWY0ZGQ5NTE5
ZTAzYWUzNTMwZjQwMzcwNWIxMWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1JlbmRlclBhc3NUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUmVuZGVyUGFzc1Rlc3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBDQ1Jl
bmRlclBhc3NTaXplIHsKIAogVEVTVChDQ1JlbmRlclBhc3NUZXN0LCBjb3B5U2hvdWxkQmVJZGVu
dGljYWxFeGNlcHRJZEFuZFF1YWRzKQogewotICAgIGludCBpZCA9IDM7CisgICAgQ0NSZW5kZXJQ
YXNzOjpJZCBpZCgzLCA2KTsKICAgICBJbnRSZWN0IG91dHB1dFJlY3QoNDUsIDIyLCAxMjAsIDEz
KTsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1Ub1Jvb3QoMSwgMC41LCAw
LjUsIC0wLjUsIC0xLCAwKTsKIApAQCAtODgsNyArODgsNyBAQCBURVNUKENDUmVuZGVyUGFzc1Rl
c3QsIGNvcHlTaG91bGRCZUlkZW50aWNhbEV4Y2VwdElkQW5kUXVhZHMpCiAgICAgdGVzdFBhc3Mt
PnNoYXJlZFF1YWRTdGF0ZUxpc3QoKS5hcHBlbmQoQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSwgMSwgZmFsc2Up
KTsKICAgICB0ZXN0UGFzcy0+cXVhZExpc3QoKS5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVh
ZDo6Y3JlYXRlKHRlc3RQYXNzLT5zaGFyZWRRdWFkU3RhdGVMaXN0KCkubGFzdCgpLmdldCgpLCBJ
bnRSZWN0KCkpKTsKIAotICAgIGludCBuZXdJZCA9IDYzOworICAgIENDUmVuZGVyUGFzczo6SWQg
bmV3SWQoNjMsIDM2KTsKIAogICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IGNvcHkocGFzcy0+Y29w
eShuZXdJZCkpOwogICAgIEVYUEVDVF9FUShuZXdJZCwgY29weS0+aWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAppbmRl
eCBkNjZiOGM5NTE2YTNlODgyODZlMzZiODE1N2E0MDYxYjA2Y2FhNGNhLi41ZmExM2JlMzk2Njhk
ZmIzMTY4NTcyZWE1Zjc2MmE2ZDY3YmY2OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
VEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCB2ZXJpZnlTdXJmYWNlQ2hhbmdlc0FyZVRyYWNrZWRQ
cm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShy
ZW5kZXJTdXJmYWNlLT5zZXREcmF3T3BhY2l0eSgwLjUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3Jt
KGR1bW15TWF0cml4KSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVUkZBQ0VfRElEX05PVF9D
SEFOR0UocmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0oZHVtbXlNYXRyaXgp
KTsKLSAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5HRShyZW5kZXJT
dXJmYWNlLT5jbGVhckxheWVyTGlzdCgpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFD
RV9ESURfTk9UX0NIQU5HRShyZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdHMoKSk7CiB9CiAK
IFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJl
Y3RTaGFyZWRRdWFkU3RhdGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162908</attachid>
            <date>2012-09-07 16:59:43 -0700</date>
            <delta_ts>2012-09-07 17:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120907195922.patch</filename>
            <type>text/plain</type>
            <size>69612</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzM2U4NjU3M2NiYjAz
N2IzMGFkZGFiMjQ2M2VjYTc5MTg0M2EwMDExLi5mNTc0MmIxY2ViMjU4MmM2YTczYTg3YTMxMjY5
NzM4ZmE3NjJlYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNyAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBXZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyIHRvIGFsbG93IHRoZSBicm93c2VyIGNvbXBvc2l0b3IgdG8KKyAgICAgICAgZW1i
ZWQgc3VjaCBhIGxheWVyIGluIGl0cyB0cmVlLiBUaGlzIGxheWVyIHdpbGwgYmUgY29ubmVjdGVk
IHRvIElQQworICAgICAgICBtYWNoaW5lcnkgaW4gdGhlIGNvbXBvc2l0b3IgdGhhdCBpcyB5ZXQg
VEJEIHdoaWNoIHdpbGwgZ2l2ZSBhIHNldCBvZgorICAgICAgICBSZW5kZXJQYXNzZXMgd2l0aCBE
cmF3UXVhZHMgdG8gdGhlIGltcGwgY29weSBvZiB0aGUgbGF5ZXIuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXI6On5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKwogMjAxMi0w
OS0wNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IGFkZCBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlQW5zd2VyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMjJmZmVjYzQ3YzExM2M0ODQwYTgzMGZiYzc0ZTQ2MDBjZmJiMGQ1Zi4uNWI3OTI3
ZDAwMTIyNmE3MDg0MmVkMjNkM2QyNzA5YmNmMjhmMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDg2IEBACisyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHRoZSB1YmVyY29tcCBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
YWRkcyBhIGxheWVyIHRoYXQgb3ducyBhIHNldCBvZiBSZW5kZXJQYXNzZXMgd2l0aCBEcmF3UXVh
ZHMsIGFuZCBpcworICAgICAgICBhYmxlIHRvIGluc2VydCB0aG9zZSBSZW5kZXJQYXNzZXMgYW5k
IERyYXdRdWFkcyBpbnRvIHRoZSBjdXJyZW50IGZyYW1lCisgICAgICAgIGR1cmluZyBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoKS4KKworICAgICAgICBUaGUgbGF5
ZXIgb3ducyB3aGF0ZXZlciBxdWFkcy9wYXNzZXMgeW91IGdpdmUgdG8gaXQsIGFuZCBjb3BpZXMg
dGhlbQorICAgICAgICB3aXRoIG1vZGlmaWNhdGlvbnMgYXMgbmVlZGVkIGludG8gdGhlIGN1cnJl
bnQgZnJhbWUgdmlhIHRoZSBRdWFkU2luay4KKworICAgICAgICBRdWFkcyBmcm9tIHRoZSBsYXll
cidzIHJvb3QgUmVuZGVyUGFzcyBhcmUgbWVyZ2VkIGludG8gaXRzIHRhcmdldAorICAgICAgICBS
ZW5kZXJQYXNzLCB3aXRoIHRoZSB0cmFuc2Zvcm0gYW5kIG9wYWNpdHkgYmVpbmcgbW9kaWZpZWQg
aWYgbmVlZGVkLgorICAgICAgICBPdGhlciBSZW5kZXJQYXNzZXMgYXJlIGluc2VydGVkIGludG8g
dGhlIGZyYW1lIGFzLWlzLCB3aXRoIFJlbmRlclBhc3MKKyAgICAgICAgaWRzIGJlaW5nIGFkanVz
dGVkIHRvIG5vdCBjb2xsaWRlIHdpdGggYW55IG90aGVyIFJlbmRlclBhc3NlcyBpbiB0aGUKKyAg
ICAgICAgZnJhbWUsIGFuZCB1c2luZyBhIHNjaGVtZSB0aGF0IGFsbG93cyB0aGUgbGF5ZXIgdG8g
cmV2ZXJzZS1sb29rdXAKKyAgICAgICAgaXRzIG93biBjb3B5IG9mIGEgUmVuZGVyUGFzcyBmcm9t
IHRoZSBpZCBpdCBnZW5lcmF0ZWQuCisKKyAgICAgICAgVGVzdHM6IENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0U2ltcGxlLkFkZHNDb250cmlidXRpbmdSZW5kZXJQYXNzZXMKKyAgICAg
ICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLkFkZHNRdWFk
c1RvQ29udHJpYnV0aW5nUmVuZGVyUGFzc2VzCisgICAgICAgICAgICAgICBDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZS5BZGRzUXVhZHNUb1RhcmdldFJlbmRlclBhc3MKKyAg
ICAgICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLlF1YWRz
RnJvbVJvb3RSZW5kZXJQYXNzQXJlTW9kaWZpZWRGb3JUaGVUYXJnZXQKKyAgICAgICAgICAgICAg
IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZS5BZGRzUmVuZGVyUGFz
c2VzCisgICAgICAgICAgICAgICBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1
cmZhY2UuQWRkc1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQYXNzZXMKKyAgICAgICAgICAgICAg
IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZS5BZGRzUXVhZHNUb1Rh
cmdldFJlbmRlclBhc3MKKyAgICAgICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGxUZXN0T3duU3VyZmFjZS5RdWFkc0Zyb21Sb290UmVuZGVyUGFzc0FyZU5vdE1vZGlmaWVkRm9y
VGhlVGFyZ2V0CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NB
cHBlbmRRdWFkc0RhdGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtOjp+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJD
aHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06Omhhc0NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3Nlcyk6CisgICAg
ICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZh
Y2VDaHJvbWl1bTo6YWRkQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6Y2xlYXJMYXllckxpc3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NBcHBlbmRRdWFkc0RhdGE6OkNDQXBwZW5kUXVhZHNE
YXRhKToKKyAgICAgICAgKENDQXBwZW5kUXVhZHNEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGw6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6fkNDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
SW1wbDo6ZGVzY2VuZGFudERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6c2V0
UmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4VG9JZCk6CisgICAgICAgIChX
ZWJDb3JlOjppZFRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbDo6Y29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjphcHBlbmRDb250cmlidXRpbmdSZW5k
ZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6YXBwZW5kUmVuZGVyUGFzc1F1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5k
UXVhZHNEYXRhLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6Omhhc0NvbnRy
aWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3Nlcyk6CisgICAgICAgIChDQ0xheWVySW1wbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUm9vdExheWVyQW5kU3VyZmFjZUZvclJl
Y3Vyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVy
bmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6YWRkQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjbGVhckxheWVy
TGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQ
YXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2Up
OgorCiAyMDEyLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTExLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA1MDYzNTA2NjA1MjQwZjc1NDZmNmQ0Mzg5ODRiMzY4ZjZhNTIw
NDA0Li5mYzUzMDg1ZDA0YzI1NDA1MTliOTc5ZmI5ZTY0YWVjZTUwMDZlM2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTA5LTA3ICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHRoZSB1
YmVyY29tcCBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIg
dG8gYWxsb3cgdGhlIGJyb3dzZXIgY29tcG9zaXRvciB0bworICAgICAgICBlbWJlZCBzdWNoIGEg
bGF5ZXIgaW4gaXRzIHRyZWUuIFRoaXMgbGF5ZXIgd2lsbCBiZSBjb25uZWN0ZWQgdG8gSVBDCisg
ICAgICAgIG1hY2hpbmVyeSBpbiB0aGUgY29tcG9zaXRvciB0aGF0IGlzIHlldCBUQkQgd2hpY2gg
d2lsbCBnaXZlIGEgc2V0IG9mCisgICAgICAgIFJlbmRlclBhc3NlcyB3aXRoIERyYXdRdWFkcyB0
byB0aGUgaW1wbCBjb3B5IG9mIHRoZSBsYXllci4KKworICAgICAgICBBbHNvIGFkZGluZyB1bml0
IHRlc3RzIGZvciB0aGUgbGF5ZXIncyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViS2l0
Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6fldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0RhbWFn
ZVRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdCk6CisgICAgICAgIChDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdDo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bFRlc3QpOgorICAgICAgICAoQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3Q6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoRHJhd2luZ0xheWVySW1wbCk6CisgICAgICAgIChEcmF3aW5n
TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAoRHJhd2luZ0xheWVySW1wbDo6RHJhd2luZ0xh
eWVySW1wbCk6CisgICAgICAgIChDQ1Rlc3RSZW5kZXJQYXNzKToKKyAgICAgICAgKENDVGVzdFJl
bmRlclBhc3M6OnF1YWRTaW5rKToKKyAgICAgICAgKGFkZFJlbmRlclBhc3MpOgorICAgICAgICAo
YWRkUXVhZCk6CisgICAgICAgIChhZGRSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChDQ0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRl
c3RTaW1wbGUpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsVGVzdE93blN1cmZhY2U6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0
T3duU3VyZmFjZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorCisyMDEyLTA5LTA3
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1
bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQg
YW4gaW5kZXgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NTAwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggNmZhMzk0ZWM5OWJlYWJlNzY2ODAyZmEz
MzVhYWVjYmUwNmMyNTRmZS4uZGQyZTdkYjA4ZDgzNzBiYzBjOTUzZDg1ODdhOTIwZWIyZDllZGZm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUzLDYgKzUzLDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRhdGEu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5
ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZjRmYTZlN2I4ZTBhNGU0OTE1
YWRhZTM4N2FmODBmMDRlNWI1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyX2gKKyNkZWZpbmUg
V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFz
cyByZXByZXNlbnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJzIHRoZSBvdXRwdXQgb2YgYW5vdGhlcgor
Ly8gZGVsZWdhdGluZyBjb21wb3NpdG9yLgorY2xhc3MgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXll
ciB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllciogY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXll
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTBhZWVhYjZiNmFjM2ZjYmYwZWVmNzE3OTEzZTNlNzRj
YmZiODI3Mi4uZDQ1MzU0OTU4ZWEzMzJmMzQ5MTE5YjJkZjllZTg0NzQ3YThjYWE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtODM5MCw2ICs4MzkwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
Q2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlC
aW5kaW5nLmNwcCcsCkBAIC04NDUyLDYgKzg0NTQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJh
c2VkVGltZVNvdXJjZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJl
bmRlcmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGlyZWN0UmVuZGVyZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDNkMmYyMmNhZjQ2YWVlODFhNWI4
ZDlhZjRmNDgyNDIzZTc2MWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNw
cApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQ0NEZWxlZ2F0
ZWRSZW5kZXJlckxheWVySW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtPiBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
Q2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyQ2hyb21pdW0oKSk7Cit9CisKK0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJv
bWl1bTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKCkKKyAgICA6IExheWVyQ2hyb21p
dW0oKQoreworICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgc2V0TWFza3NUb0JvdW5kcyh0
cnVlKTsKK30KKworRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjp+RGVsZWdhdGVkUmVu
ZGVyZXJMYXllckNocm9taXVtKCkKK3sKK30KKworUGFzc093blB0cjxDQ0xheWVySW1wbD4gRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAg
cmV0dXJuIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5NDk1ZjA5ZDFhZDJmMWQxOGRlMWRjYjc3NDIwN2ZmMWJlYjQ2YWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaWZuZGVmIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisjZGVmaW5lIERl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRlICJMYXllckNocm9taXVt
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CisgICAg
dmlydHVhbCB+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKCk7CisKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7CisK
K3Byb3RlY3RlZDoKKyAgICBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0oKTsKK307CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVlMGVhNzc1NmE1ZWYzODc1Y2NhMTQ2
ZWMxMWIxMTA3MDZmNTg0MmMuLmQwMjFmYmNlZjg0ZTAxNWJlMzNiOTQ5ZWJjMzU2NzhmMGNmYTM5
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE5Myw2ICsxOTMsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAg
IGJvb2wgaGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKwogICAgIHZvaWQgc2V0SXNEcmF3YWJsZShib29sKTsKIAogICAgIHZvaWQg
c2V0UmVwbGljYUxheWVyKExheWVyQ2hyb21pdW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKaW5kZXggNzg3ZWFhZWMyNTcxN2Q1MTM1OGZjMjMwMjZhYjg1YmNlZTcyMDA1Ny4u
NWQyMDZlNWQ3ZTNiN2IwOTk2ZTM1MWE4NTMxMjgxNDdiYThmZjcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTc4LDggKzc4LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQogICAgIHZv
aWQgc2V0Q2xpcFJlY3QoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIHsgbV9jbGlwUmVjdCA9IGNs
aXBSZWN0OyB9CiAKLSAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkgeyBtX2xheWVyTGlzdC5jbGVh
cigpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckxpc3QoKSB7
IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQgYWRkQ29udHJpYnV0aW5nRGVsZWdhdGVk
UmVuZGVyUGFzc0xheWVyKExheWVyQ2hyb21pdW0qKSB7IH0KKyAgICB2b2lkIGNsZWFyTGF5ZXJM
aXN0cygpIHsgbV9sYXllckxpc3QuY2xlYXIoKTsgfQogCiAgICAgdm9pZCBzZXROZWFyZXN0QW5j
ZXN0b3JUaGF0TW92ZXNQaXhlbHMoUmVuZGVyU3VyZmFjZUNocm9taXVtKiBzdXJmYWNlKSB7IG1f
bmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gc3VyZmFjZTsgfQogICAgIGNvbnN0IFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9uZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5k
UXVhZHNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FwcGVuZFF1YWRzRGF0YS5oCmluZGV4IGQ1M2ZkYmJmMDYzNmZkMjQ3MDA5NWQyNGMwN2Nk
OWMxMWMyMjg3N2MuLjM2MWY5Yzk2N2VjMmU1OGVjMzU3M2ZkNDYwZGRiZDhlYzg3NDA3YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QXBwZW5kUXVhZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaApAQCAtMjYsMTIgKzI2LDIyIEBACiAjaWZu
ZGVmIENDQXBwZW5kUXVhZHNEYXRhX2gKICNkZWZpbmUgQ0NBcHBlbmRRdWFkc0RhdGFfaAogCisj
aW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IENDQXBwZW5kUXVhZHNEYXRhIHsKICAgICBDQ0FwcGVuZFF1YWRzRGF0YSgpCiAgICAgICAgIDog
aGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogICAgICAgICAsIGhh
ZE1pc3NpbmdUaWxlcyhmYWxzZSkKKyAgICAgICAgLCByZW5kZXJQYXNzSWQoMCwgMCkKKyAgICB7
CisgICAgfQorCisgICAgZXhwbGljaXQgQ0NBcHBlbmRRdWFkc0RhdGEoQ0NSZW5kZXJQYXNzOjpJ
ZCByZW5kZXJQYXNzSWQpCisgICAgICAgIDogaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKGZhbHNlKQorICAgICAgICAsIGhhZE1pc3NpbmdUaWxlcyhmYWxzZSkKKyAgICAgICAg
LCByZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgIHsKICAgICB9CiAKQEAgLTM5LDYgKzQ5
LDggQEAgc3RydWN0IENDQXBwZW5kUXVhZHNEYXRhIHsKICAgICBib29sIGhhZE9jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKICAgICAvLyBTZXQgYnkgdGhlIGxheWVyIGFwcGVuZGlu
ZyBxdWFkcy4KICAgICBib29sIGhhZE1pc3NpbmdUaWxlczsKKyAgICAvLyBHaXZlbiB0byB0aGUg
bGF5ZXIgYXBwZW5kaW5nIHF1YWRzLgorICAgIGNvbnN0IENDUmVuZGVyUGFzczo6SWQgcmVuZGVy
UGFzc0lkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmM4ZDUwNTljOWIyODUwNWM3MzNkM2M0ZjRl
OWIyMGJiMzZkMTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5jcHAKQEAg
LTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJD
Q0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRz
RGF0YS5oIgorI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3NE
cmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzc1NpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpDQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsKGludCBpZCkKKyAgICA6IENDTGF5ZXJJbXBsKGlkKQoreworfQorCitDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgp
Cit7Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6ZGVzY2VuZGFudERy
YXdzQ29udGVudCgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgcG9zc2libHkgcmV0dXJu
IGZhbHNlIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSBzb21lCisgICAgLy8gcXVhZHMgcHJlc2VudCBh
cyB0aGV5IGNvdWxkIGFsbCBiZSBmcm9tIGEgc2luZ2xlIGxheWVyIChvciBzZXQgb2YKKyAgICAv
LyBsYXllcnMgd2l0aG91dCBjaGlsZHJlbikuIElmIHRoaXMgaGFwcGVucywgdGhlbiBtYWtlIGEg
dGVzdCB0aGF0CisgICAgLy8gZW5zdXJlcyB0aGUgb3BhY2l0eSBpcyBiZWluZyBjaGFuZ2VkIG9u
IHF1YWRzIGluIHRoZSByb290IFJlbmRlclBhc3MKKyAgICAvLyB3aGVuIHRoaXMgbGF5ZXIgZG9l
c24ndCBvd24gYSBSZW5kZXJTdXJmYWNlLgorICAgIHJldHVybiAhbV9yZW5kZXJQYXNzZXNJbkRy
YXdPcmRlci5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6aGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkgY29uc3QKK3sKKyAgICAv
LyBUaGUgcm9vdCBSZW5kZXJQYXNzIGZvciB0aGUgbGF5ZXIgaXMgbWVyZ2VkIHdpdGggaXRzIHRh
cmdldAorICAgIC8vIFJlbmRlclBhc3MgaW4gZWFjaCBmcmFtZS4gU28gd2Ugb25seSBoYXZlIGV4
dHJhIFJlbmRlclBhc3NlcworICAgIC8vIHRvIG1lcmdlIHdoZW4gd2UgaGF2ZSBhIG5vbi1yb290
IFJlbmRlclBhc3MgcHJlc2VudC4KKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRl
ci5zaXplKCkgPiAxOworfQorCit2b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OnNl
dFJlbmRlclBhc3NlcyhWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiYgcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXIpCit7CisgICAgRmxvYXRSZWN0IG9sZFJvb3REYW1hZ2U7CisgICAgaWYgKCFt
X3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgb2xkUm9vdERhbWFn
ZSA9IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIubGFzdCgpLT5kYW1hZ2VSZWN0KCk7CisKKyAg
ICBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZC5jbGVhcigpOworICAgIG1fcmVuZGVyUGFzc2VzSW5E
cmF3T3JkZXIuY2xlYXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRlclBhc3Nl
c0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgIG1fcmVuZGVyUGFzc2VzSW5kZXhC
eUlkLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgaSk7CisgICAgICAgIG1f
cmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuYXBwZW5kKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ld
LnJlbGVhc2UoKSk7CisgICAgfQorICAgIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLmNsZWFyKCk7
CisKKyAgICBpZiAoIW1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEZsb2F0UmVjdCBuZXdSb290RGFtYWdlID0gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5s
YXN0KCktPmRhbWFnZVJlY3QoKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5s
YXN0KCktPnNldERhbWFnZVJlY3QodW5pb25SZWN0KG9sZFJvb3REYW1hZ2UsIG5ld1Jvb3REYW1h
Z2UpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGluZGV4VG9JZChpbnQgaW5kZXgp
IHsgcmV0dXJuIGluZGV4ICsgMTsgfQorc3RhdGljIGlubGluZSBpbnQgaWRUb0luZGV4KGludCBp
ZCkgeyByZXR1cm4gaWQgLSAxOyB9CisKK0NDUmVuZGVyUGFzczo6SWQgQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbDo6Y29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6
OklkIGRlbGVnYXRlZFJlbmRlclBhc3NJZCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBkZWxlZ2F0
ZWRSZW5kZXJQYXNzSW5kZXggPSBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZC5nZXQoZGVsZWdhdGVk
UmVuZGVyUGFzc0lkKTsKKyAgICByZXR1cm4gQ0NSZW5kZXJQYXNzOjpJZChpZCgpLCBpbmRleFRv
SWQoZGVsZWdhdGVkUmVuZGVyUGFzc0luZGV4KSk7Cit9CisKK3ZvaWQgQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbDo6YXBwZW5kQ29udHJpYnV0aW5nUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFz
c1NpbmsmIHJlbmRlclBhc3NTaW5rKQoreworICAgIEFTU0VSVChoYXNDb250cmlidXRpbmdEZWxl
Z2F0ZWRSZW5kZXJQYXNzZXMoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIENDUmVuZGVy
UGFzczo6SWQgb3V0cHV0UmVuZGVyUGFzc0lkID0gY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJ
ZChtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKTsKKworICAgICAgICAvLyBEb24n
dCBjbGFzaCB3aXRoIHRoZSBSZW5kZXJQYXNzIHdlIGdlbmVyYXRlIGlmIHdlIG93biBhIFJlbmRl
clN1cmZhY2UuCisgICAgICAgIEFTU0VSVChvdXRwdXRSZW5kZXJQYXNzSWQuaW5kZXggPiAwKTsK
KworICAgICAgICByZW5kZXJQYXNzU2luay5hcHBlbmRSZW5kZXJQYXNzKG1fcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXJbaV0tPmNvcHkob3V0cHV0UmVuZGVyUGFzc0lkKSk7CisgICAgfQorfQorCit2
b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQoreworICAgIGlm
IChtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQ0NSZW5kZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBhcHBlbmRRdWFkc0Rh
dGEucmVuZGVyUGFzc0lkOworCisgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByZW5kZXJQYXNz
SWQgaXMgMCwgdGhlbiBpdCBpcyBhIHJlbmRlclBhc3MgZ2VuZXJhdGVkIGZvciBhIGxheWVyCisg
ICAgLy8gaW4gdGhpcyBjb21wb3NpdG9yLCBub3QgdGhlIGRlbGVnYXRlZCByZW5kZXJlci4gVGhl
biB3ZSB3YW50IHRvIG1lcmdlIG91ciByb290IHJlbmRlclBhc3Mgd2l0aAorICAgIC8vIHRoZSB0
YXJnZXQgcmVuZGVyUGFzcy4gT3RoZXJ3aXNlLCBpdCBpcyBzb21lIHJlbmRlclBhc3Mgd2hpY2gg
d2UgYWRkZWQgZnJvbSB0aGUgZGVsZWdhdGVkCisgICAgLy8gcmVuZGVyZXIuCisgICAgYm9vbCBz
aG91bGRNZXJnZVJvb3RSZW5kZXJQYXNzV2l0aFRhcmdldCA9ICF0YXJnZXRSZW5kZXJQYXNzSWQu
aW5kZXg7CisgICAgaWYgKHNob3VsZE1lcmdlUm9vdFJlbmRlclBhc3NXaXRoVGFyZ2V0KSB7Cisg
ICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZW5kZXJQYXNzIHdlIGFyZSBhcHBlbmRpbmcgdG8g
aXMgY3JlYXRlZCBvdXIgcmVuZGVyVGFyZ2V0LgorICAgICAgICBBU1NFUlQodGFyZ2V0UmVuZGVy
UGFzc0lkLmxheWVySWQgPT0gcmVuZGVyVGFyZ2V0KCktPmlkKCkpOworCisgICAgICAgIENDUmVu
ZGVyUGFzcyogcm9vdERlbGVnYXRlZFJlbmRlclBhc3MgPSBtX3JlbmRlclBhc3Nlc0luRHJhd09y
ZGVyLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgYXBwZW5kUmVuZGVyUGFzc1F1YWRzKHF1YWRTaW5r
LCBhcHBlbmRRdWFkc0RhdGEsIHJvb3REZWxlZ2F0ZWRSZW5kZXJQYXNzKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcmVuZGVyUGFzcyB3ZSBhcmUgYXBwZW5kaW5n
IHRvIHdhcyBjcmVhdGVkIGJ5IHVzLgorICAgICAgICBBU1NFUlQodGFyZ2V0UmVuZGVyUGFzc0lk
LmxheWVySWQgPT0gaWQoKSk7CisKKyAgICAgICAgaW50IHJlbmRlclBhc3NJbmRleCA9IGlkVG9J
bmRleCh0YXJnZXRSZW5kZXJQYXNzSWQuaW5kZXgpOworICAgICAgICBDQ1JlbmRlclBhc3MqIGRl
bGVnYXRlZFJlbmRlclBhc3MgPSBtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyW3JlbmRlclBhc3NJ
bmRleF0uZ2V0KCk7CisgICAgICAgIGFwcGVuZFJlbmRlclBhc3NRdWFkcyhxdWFkU2luaywgYXBw
ZW5kUXVhZHNEYXRhLCBkZWxlZ2F0ZWRSZW5kZXJQYXNzKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6YXBwZW5kUmVuZGVyUGFzc1F1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhLCBDQ1JlbmRl
clBhc3MqIGRlbGVnYXRlZFJlbmRlclBhc3MpIGNvbnN0Cit7CisgICAgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIGN1cnJlbnRTaGFyZWRRdWFkU3RhdGUgPSAwOworICAgIENDU2hhcmVkUXVhZFN0
YXRlKiBjb3BpZWRTaGFyZWRRdWFkU3RhdGUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGVsZWdhdGVkUmVuZGVyUGFzcy0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkgeworICAgICAg
ICBDQ0RyYXdRdWFkKiBxdWFkID0gZGVsZWdhdGVkUmVuZGVyUGFzcy0+cXVhZExpc3QoKVtpXS5n
ZXQoKTsKKworICAgICAgICBpZiAocXVhZC0+c2hhcmVkUXVhZFN0YXRlKCkgIT0gY3VycmVudFNo
YXJlZFF1YWRTdGF0ZSkgeworICAgICAgICAgICAgY3VycmVudFNoYXJlZFF1YWRTdGF0ZSA9IHF1
YWQtPnNoYXJlZFF1YWRTdGF0ZSgpOworICAgICAgICAgICAgY29waWVkU2hhcmVkUXVhZFN0YXRl
ID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGN1cnJlbnRTaGFyZWRRdWFkU3RhdGUtPmNv
cHkoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNvcGllZFNoYXJlZFF1YWRTdGF0ZSk7
CisKKyAgICAgICAgYm9vbCB0YXJnZXRJc0Zyb21EZWxlZ2F0ZWRSZW5kZXJlckxheWVyID0gYXBw
ZW5kUXVhZHNEYXRhLnJlbmRlclBhc3NJZC5sYXllcklkID09IGlkKCk7CisgICAgICAgIGlmICgh
dGFyZ2V0SXNGcm9tRGVsZWdhdGVkUmVuZGVyZXJMYXllcikgeworICAgICAgICAgICAgLy8gU2hv
dWxkIGJlIHRoZSByb290IHJlbmRlciBwYXNzLgorICAgICAgICAgICAgQVNTRVJUKGRlbGVnYXRl
ZFJlbmRlclBhc3MgPT0gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5sYXN0KCkpOworICAgICAg
ICAgICAgLy8gVGhpcyBsYXllciBtdXN0IGJlIGRyYXdpbmcgdG8gYSByZW5kZXJUYXJnZXQgb3Ro
ZXIgdGhhbiBpdHNlbGYuCisgICAgICAgICAgICBBU1NFUlQocmVuZGVydGFyZ2V0KCkgIT0gdGhp
cyk7CisKKyAgICAgICAgICAgIGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybSA9
IGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybSAqIGRyYXdUcmFuc2Zvcm0oKTsK
KyAgICAgICAgICAgIGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSAqPSBkcmF3T3BhY2l0
eSgpOworICAgICAgICB9CisKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IGNvcHlRdWFkOwor
ICAgICAgICBpZiAocXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzKQor
ICAgICAgICAgICAgY29weVF1YWQgPSBxdWFkLT5jb3B5KGNvcGllZFNoYXJlZFF1YWRTdGF0ZSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdEZWxlZ2F0ZWRSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzczo6SWQg
Y29udHJpYnV0aW5nUmVuZGVyUGFzc0lkID0gY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZChj
b250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAgQVNTRVJUKGNv
bnRyaWJ1dGluZ1JlbmRlclBhc3NJZCAhPSBhcHBlbmRRdWFkc0RhdGEucmVuZGVyUGFzc0lkKTsK
KworICAgICAgICAgICAgY29weVF1YWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpLT5jb3B5KGNvcGllZFNoYXJlZFF1YWRTdGF0ZSwgY29udHJpYnV0aW5nUmVuZGVy
UGFzc0lkKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29weVF1YWQpOworCisgICAgICAg
IHF1YWRTaW5rLmFwcGVuZChjb3B5UXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7Cisg
ICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZkZDM4ZWMyOTA3MjRjNDNiOGZlOWQwZWE3ZDlkZjg2NWMy
Njk0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsX2gKKyNkZWZp
bmUgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbF9oCisKKyNpbmNsdWRlICJDQ0xheWVySW1w
bC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckltcGw+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsKGlkKSk7IH0KKyAgICB2aXJ0dWFsIH5DQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGVzY2VuZGFudERyYXdzQ29udGVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5k
ZXJQYXNzZXMoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIFRoaXMgZ2l2ZXMgb3duZXJzaGlw
IG9mIHRoZSBSZW5kZXJQYXNzZXMgdG8gdGhlIGxheWVyLgorICAgIHZvaWQgc2V0UmVuZGVyUGFz
c2VzKFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+Jik7CisKKyAgICB2b2lkIGFwcGVuZENv
bnRyaWJ1dGluZ1JlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwo
aW50KTsKKworICAgIENDUmVuZGVyUGFzczo6SWQgY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJ
ZChDQ1JlbmRlclBhc3M6OklkIGRlbGVnYXRlZFJlbmRlclBhc3NJZCkgY29uc3Q7CisKKyAgICB2
b2lkIGFwcGVuZFJlbmRlclBhc3NRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEm
LCBDQ1JlbmRlclBhc3MqIGZyb21EZWxlZ2F0ZWRSZW5kZXJQYXNzKSBjb25zdDsKKworICAgIFBh
c3NPd25QdHI8Q0NEcmF3UXVhZD4gY3JlYXRlQ29weU9mUXVhZChjb25zdCBDQ0RyYXdRdWFkKik7
CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gIkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIiOyB9CisKKyAgICBWZWN0b3I8
T3duUHRyPENDUmVuZGVyUGFzcz4gPiBtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyOworICAgIEhh
c2hNYXA8Q0NSZW5kZXJQYXNzOjpJZCwgaW50PiBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZDsKK307
CisKK30KKworI2VuZGlmIC8vIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKaW5kZXggZjhhZDA2NzAxYTYwZWE5OGQwYmFjZTM4NWIwZDM3MTMzNDllMmRj
Zi4uY2IwZWVhMmI4YjhkZjY3NDBmODc4MWMwZWY1ZTBkZWJhZGI0MTRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCkBAIC0xMDIsNiArMTAyLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCiAgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7
CiAgICAgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQ29udGVudDsg
fQpAQCAtMTEwLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvcmNlUmVuZGVyU3Vy
ZmFjZShib29sIGZvcmNlKSB7IG1fZm9yY2VSZW5kZXJTdXJmYWNlID0gZm9yY2U7IH0KIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMgaGFzIGNv
bnRlbnQgdG8gZHJhdy4KLSAgICBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVzY2VuZGFudERyYXdzQ29udGVudCgpOwogCiAgICAgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCAyMTQwZGYwNTZhNGNlM2EwMDFhOGQyYzc0
NTE4NzZlMjNiZjk2MTA2Li5jMWEwYzY0ZmI0MzE3ZmVjNDgzOWFkMDQwYmU2ZDBjMjQ3NzRiMmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTM1Myw3
ICszNTMsNyBAQCB2b2lkIHNldHVwUm9vdExheWVyQW5kU3VyZmFjZUZvclJlY3Vyc2lvbihMYXll
clR5cGUqIHJvb3RMYXllciwgTGF5ZXJMaXN0JiByZW5kZQogICAgICAgICByb290TGF5ZXItPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKIAogICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGRldmljZVZpZXdwb3J0U2l6
ZSkpOwotICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5jbGVhckxheWVyTGlzdCgpOwor
ICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5jbGVhckxheWVyTGlzdHMoKTsKIAogICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmlzRW1wdHkoKSk7CiAgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKIAogICAgICAgICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVyU3VyZmFjZSA9IGxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0cygpOwogCiAgICAgICAg
IC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlzIHRoZSB1cHBlciBsZWZ0IGNvcm5l
ciBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0o
ZHJhd1RyYW5zZm9ybSk7CkBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RM
YXkKICAgICAgICAgY2xpcHBlZENvbnRlbnRSZWN0LnNldEhlaWdodChzdGQ6Om1pbihjbGlwcGVk
Q29udGVudFJlY3QuaGVpZ2h0KCksIG1heFRleHR1cmVTaXplKSk7CiAKICAgICAgICAgaWYgKGNs
aXBwZWRDb250ZW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5j
bGVhckxheWVyTGlzdCgpOworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxp
c3RzKCk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3QoY2xpcHBlZENv
bnRlbnRSZWN0KTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zv
cm0obGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwpAQCAtNzY1LDcgKzc2NSw4IEBAIHN0
YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXll
ciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgZWxzZQogICAgICAgICBkcmF3YWJsZUNvbnRlbnRS
ZWN0T2ZTdWJ0cmVlID0gbG9jYWxEcmF3YWJsZUNvbnRlbnRSZWN0T2ZTdWJ0cmVlOwogCi0gICAg
cmV0dXJuOworICAgIGlmIChsYXllci0+aGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFz
c2VzKCkpCisgICAgICAgIGxheWVyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5h
ZGRDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXIobGF5ZXIpOwogfQogCiAvLyBG
SVhNRTogSW5zdGVhZCBvZiB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIHRvIHNldCB2aXNp
YmlsaXR5IHJlY3RzIG9uIGEgc2Vjb25kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDNkYjBlMGZmN2Q0NzIyYTYyYTYxOWJhNGY2MGM4NWFkMjk2MTQwN2EuLjZj
NjFjMTFhZjcxZGVmYmVkMmE2ZmQxNGRkMDE1NzBjYjI1NWY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIAog
ICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwogCi0gICAgICAgIENDQXBw
ZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEg
YXBwZW5kUXVhZHNEYXRhKHRhcmdldFJlbmRlclBhc3MtPmlkKCkpOwogCiAgICAgICAgIGlmIChp
dC5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBD
Q1JlbmRlclBhc3M6OklkIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCA9IGl0LT5yZW5kZXJTdXJm
YWNlKCktPnJlbmRlclBhc3NJZCgpOwpAQCAtMzE3LDYgKzMxNywyMSBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBw
ZW5kKCppdCk7CisKKyAgICAgICAgICAgICAgICBpZiAoaXQtPmhhc0NvbnRyaWJ1dGluZ0RlbGVn
YXRlZFJlbmRlclBhc3NlcygpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUGFzcyA9PSB0YXJnZXRSZW5k
ZXJQYXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHJlbmRlclBhc3NHZW5lcmF0aW5nTGF5ZXJJZCA9IHJlbmRlclBh
c3MtPmlkKCkubGF5ZXJJZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQYXNz
R2VuZXJhdGluZ0xheWVySWQgIT0gaXQtPmlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YShyZW5kZXJQYXNzLT5pZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tl
ciwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIHRhcmdldFJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9y
TGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggMTYz
OTNiOTMwZDkxNGE1ZGVjOTdlMzJhYjgyOWRiNDkzZmYxN2ZiZS4uYWY5ZWE0NzNmZjY1MWJiNmIz
YzQ3ZjM0ZTYxMDBmZTcyNTkyNWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJDQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ01h
dGhVdGlsLmgiCiAjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgpAQCAtMTYxLDYgKzE2MiwxOSBAQCBi
b29sIENDUmVuZGVyU3VyZmFjZTo6c3VyZmFjZVByb3BlcnR5Q2hhbmdlZE9ubHlGcm9tRGVzY2Vu
ZGFudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZCAmJiAhbV9v
d25pbmdMYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKIH0KIAordm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmFkZENvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3NMYXllcihDQ0xheWVySW1w
bCogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJMaXN0LmNvbnRhaW5zKGxheWVyKSk7Cisg
ICAgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCogZGVsZWdhdGVkUmVuZGVyZXJMYXllciA9
IHN0YXRpY19jYXN0PENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwqPihsYXllcik7CisgICAg
bV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0LmFwcGVuZChkZWxlZ2F0
ZWRSZW5kZXJlckxheWVyKTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmNsZWFyTGF5ZXJM
aXN0cygpCit7CisgICAgbV9sYXllckxpc3QuY2xlYXIoKTsKKyAgICBtX2NvbnRyaWJ1dGluZ0Rl
bGVnYXRlZFJlbmRlclBhc3NMYXllckxpc3QuY2xlYXIoKTsKK30KKwogc3RhdGljIGlubGluZSBJ
bnRSZWN0IGNvbXB1dGVDbGlwcGVkUmVjdEluVGFyZ2V0KGNvbnN0IENDTGF5ZXJJbXBsKiBvd25p
bmdMYXllcikKIHsKICAgICBBU1NFUlQob3duaW5nTGF5ZXItPnBhcmVudCgpKTsKQEAgLTE5MSw2
ICsyMDUsOSBAQCBDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lk
KCkKIAogdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBh
c3NTaW5rJiBwYXNzU2luaykKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29udHJp
YnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAg
bV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0W2ldLT5hcHBlbmRDb250
cmlidXRpbmdSZW5kZXJQYXNzZXMocGFzc1NpbmspOworCiAgICAgT3duUHRyPENDUmVuZGVyUGFz
cz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclBhc3NJZCgpLCBtX2NvbnRlbnRS
ZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBwYXNzLT5zZXREYW1hZ2VSZWN0KG1f
ZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFnZVJlY3QoKSk7CiAgICAgcGFzcy0+c2V0RmlsdGVy
cyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApp
bmRleCAyZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNmNjYxM2ZkLi42MzIyMGEwNWUw
ZGEwYWJiMDhlODNmYTRlYTJlMjk4YTJmZjEwOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0Rh
bWFnZVRyYWNrZXI7CitjbGFzcyBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOwogY2xhc3Mg
Q0NRdWFkU2luazsKIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsK
QEAgLTk1LDggKzk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCi0gICAgdm9pZCBjbGVhckxheWVyTGlzdCgpIHsgbV9sYXll
ckxpc3QuY2xlYXIoKTsgfQogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QoKSB7
IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQgYWRkQ29udHJpYnV0aW5nRGVsZWdhdGVk
UmVuZGVyUGFzc0xheWVyKENDTGF5ZXJJbXBsKik7CisgICAgdm9pZCBjbGVhckxheWVyTGlzdHMo
KTsKIAogICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAKQEAgLTEzMSw2ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKIAogICAgIFZlY3RvcjxDQ0xheWVy
SW1wbCo+IG1fbGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsKj4gbV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0OwogCiAgICAg
Ly8gVGhlIG5lYXJlc3QgYW5jZXN0b3IgdGFyZ2V0IHN1cmZhY2UgdGhhdCB3aWxsIGNvbnRhaW4g
dGhlIGNvbnRlbnRzIG9mIHRoaXMgc3VyZmFjZSwgYW5kIHRoYXQgaXMgZ29pbmcKICAgICAvLyB0
byBtb3ZlIHBpeGVscyB3aXRoaW4gdGhlIHN1cmZhY2UgKHN1Y2ggYXMgd2l0aCBhIGJsdXIpLiBU
aGlzIGNhbiBwb2ludCB0byBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXgg
YjNlYjk1NGViMDlkMDYwNmU5YTNhYjQxZDQ2MjA5MDVlNWUyMmY2OC4uOThjMmQ3ZTBlNGI0YTlh
MTZjOTAxNjhiMDVlNjlkYjQzODVlNzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtNDk4LDYgKzQ5OCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEYXRhYmFzZS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNGcm9udGVuZElt
cGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDgwY2YxZDI0NWQxMmNm
ZDVkYzhjNmFlYjY5ZjhmMTg1MjE3NDhjMTAuLjU5ZGRhNzcwYWY2YWJkOTg0MDdiZTg2MzMwNjMy
ZGU5ZDJmNmIxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTE3LDYgKzEx
Nyw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3Rz
L0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NEcmF3UXVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0ZyYW1lUmF0ZUNv
bnRyb2xsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NHZW9tZXRyeVRlc3RVdGls
cy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZWxl
Z2F0ZWRSZW5kZXJlckxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjJhMGNlOWFiMDNhZWI3MjRmYzA0
Y2NkOTg2YjNhM2JkNGU1MDQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllci5oPgorCisjaW5jbHVkZSAiRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwgOiBwdWJsaWMgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJD
b3JlOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgpOworCisgICAgLy8gV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9
OworCitXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwoUGFzc1JlZlB0cjxEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+IGxheWVy
KQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9
CisKK1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKworV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllciogV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcjo6Y3JlYXRlKCkKK3sK
KyAgICBSZWZQdHI8RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtPiBsYXllciA9IERlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIG5ldyBXZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
RGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IGU1MGExZjcwYWJmMDU5Y2I2NjQ1MzMyYmZkZDc3
Y2EzNmI4Nzg5NzguLjY4NTc2ODAxYjg4MTJkNTk4MDZlY2UwNGI4YTdlM2ZjY2VkNmE4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJU
ZXN0LmNwcApAQCAtMTExNiw3ICsxMTE2LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvckVtcHR5TGF5ZXJMaXN0KQogCiAgICAgQVNTRVJUX1RSVUUocm9vdCA9
PSByb290LT5yZW5kZXJUYXJnZXQoKSk7CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJm
YWNlID0gcm9vdC0+cmVuZGVyU3VyZmFjZSgpOwotICAgIHRhcmdldFN1cmZhY2UtPmNsZWFyTGF5
ZXJMaXN0KCk7CisgICAgdGFyZ2V0U3VyZmFjZS0+Y2xlYXJMYXllckxpc3RzKCk7CiAgICAgdGFy
Z2V0U3VyZmFjZS0+ZGFtYWdlVHJhY2tlcigpLT51cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKHRh
cmdldFN1cmZhY2UtPmxheWVyTGlzdCgpLCB0YXJnZXRTdXJmYWNlLT5vd25pbmdMYXllcklkKCks
IGZhbHNlLCBJbnRSZWN0KCksIDAsIFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7CiAKICAgICBGbG9h
dFJlY3QgZGFtYWdlUmVjdCA9IHRhcmdldFN1cmZhY2UtPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVu
dERhbWFnZVJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODMwMTM5ODQ5YzdmZjEyNGEyZmEyNTgzMjAwYjM4OGViMmY2ZDU2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbFRlc3QuY3BwCkBAIC0wLDAgKzEsNDEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgi
CisKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgorI2luY2x1ZGUgIkNDR2VvbWV0cnlU
ZXN0VXRpbHMuaCIKKyNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAi
Q0NRdWFkU2luay5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCisjaW5jbHVk
ZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgIkNDU29saWRDb2xvckRyYXdRdWFk
LmgiCisjaW5jbHVkZSAiQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiRmFrZVdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgiCisjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiTW9ja0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisK
K3VzaW5nIFdlYktpdDo6RmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwordXNpbmcgV2Vi
S2l0OjpGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXRUZXN0czsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgQ0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQgeworcHVibGljOgorICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGxUZXN0KCkKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgICAgIHNldHRpbmdzLm1pbmltdW1PY2NsdXNpb25UcmFja2luZ1NpemUgPSBJbnRTaXplKCk7
CisKKyAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0
aW5ncywgdGhpcyk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIH0K
KworICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAg
dmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91Ymxl
LCBkb3VibGUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkNhbkRyYXdTdGF0ZUNo
YW5nZWQoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KKworcHJv
dGVjdGVkOgorICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6
Y3JlYXRlKGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QpKTsKKyAgICB9CisK
KyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgbV9hbHdheXNJbXBsVGhyZWFkOworICAgIERl
YnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbV9hbHdheXNNYWluVGhyZWFkQmxvY2tlZDsK
KworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBtX2hvc3RJbXBsOworfTsKKworY2xh
c3MgRHJhd2luZ0xheWVySW1wbCA6IHB1YmxpYyBDQ1NvbGlkQ29sb3JMYXllckltcGwgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdMYXllckltcGw+IGNyZWF0ZShpbnQg
aWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3aW5nTGF5ZXJJbXBsKGlkKSk7IH0KK3Byb3Rl
Y3RlZDoKKyAgICBleHBsaWNpdCBEcmF3aW5nTGF5ZXJJbXBsKGludCBpZCkgOiBDQ1NvbGlkQ29s
b3JMYXllckltcGwoaWQpIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9Cit9OworCitjbGFzcyBD
Q1Rlc3RSZW5kZXJQYXNzIDogcHVibGljIENDUmVuZGVyUGFzcyB7CitwdWJsaWM6CisgICAgTW9j
a0NDUXVhZEN1bGxlciBxdWFkU2luaygpIHsgcmV0dXJuIE1vY2tDQ1F1YWRDdWxsZXIobV9xdWFk
TGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0KTsgfQorfTsKKworc3RhdGljIENDVGVzdFJlbmRl
clBhc3MqIGFkZFJlbmRlclBhc3MoVmVjdG9yPE93blB0cjxDQ1JlbmRlclBhc3M+ID4mIHBhc3NM
aXN0LCBDQ1JlbmRlclBhc3M6OklkIGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHJvb3RUcmFuc2Zvcm0pCit7CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4g
cGFzcyhDQ1JlbmRlclBhc3M6OmNyZWF0ZShpZCwgb3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkp
OworICAgIENDVGVzdFJlbmRlclBhc3MqIHRlc3RQYXNzID0gc3RhdGljX2Nhc3Q8Q0NUZXN0UmVu
ZGVyUGFzcyo+KHBhc3MuZ2V0KCkpOworICAgIHBhc3NMaXN0LmFwcGVuZChwYXNzLnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIHRlc3RQYXNzOworfQorCitzdGF0aWMgQ0NTb2xpZENvbG9yRHJhd1F1
YWQqIGFkZFF1YWQoQ0NUZXN0UmVuZGVyUGFzcyogcGFzcywgSW50UmVjdCByZWN0LCBTa0NvbG9y
IGNvbG9yKQoreworICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZFNpbmsgPSBwYXNzLT5xdWFkU2lu
aygpOworICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGEocGFzcy0+aWQoKSk7CisgICAgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdCwg
cmVjdCwgMSwgZmFsc2UpKTsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IHF1YWQo
Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRTdGF0ZSwgcmVjdCwgY29sb3IpKTsK
KyAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZFB0ciA9IHF1YWQuZ2V0KCk7CisgICAgcXVh
ZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpLCBkYXRhKTsKKyAgICByZXR1cm4gcXVhZFB0cjsK
K30KKworc3RhdGljIHZvaWQgYWRkUmVuZGVyUGFzc1F1YWQoQ0NUZXN0UmVuZGVyUGFzcyogdG9Q
YXNzLCBDQ1Rlc3RSZW5kZXJQYXNzKiBjb250cmlidXRpbmdQYXNzKQoreworICAgIE1vY2tDQ1F1
YWRDdWxsZXIgcXVhZFNpbmsgPSB0b1Bhc3MtPnF1YWRTaW5rKCk7CisgICAgQ0NBcHBlbmRRdWFk
c0RhdGEgZGF0YSh0b1Bhc3MtPmlkKCkpOworICAgIEludFJlY3Qgb3V0cHV0UmVjdCA9IGNvbnRy
aWJ1dGluZ1Bhc3MtPm91dHB1dFJlY3QoKTsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
U3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvdXRwdXRSZWN0LCBvdXRwdXRSZWN0LCAx
LCBmYWxzZSkpOworICAgIE93blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gcXVhZChDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFN0YXRlLCBvdXRwdXRSZWN0LCBjb250cmlidXRp
bmdQYXNzLT5pZCgpLCBmYWxzZSwgMCwgb3V0cHV0UmVjdCwgMCwgMCwgMCwgMCkpOworICAgIHF1
YWRTaW5rLmFwcGVuZChxdWFkLnJlbGVhc2UoKSwgZGF0YSk7Cit9CisKK2NsYXNzIENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlIDogcHVibGljIENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsVGVzdFNpbXBsZSgpCisgICAgICAgIDogQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRl
c3QoKQorICAgICAgICAsIG1fcm9vdExheWVyKENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRl
KDEpKQorICAgICAgICAsIG1fbGF5ZXJCZWZvcmUoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVh
dGUoMikpCisgICAgICAgICwgbV9sYXllckFmdGVyKENDU29saWRDb2xvckxheWVySW1wbDo6Y3Jl
YXRlKDMpKQorICAgICAgICAsIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllcihDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUoNCkpCisgICAgeworICAgICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAg
ICAgICAgbV9yb290TGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7CisKKyAgICAg
ICAgbV9sYXllckJlZm9yZS0+c2V0UG9zaXRpb24oSW50UG9pbnQoMjAsIDIwKSk7CisgICAgICAg
IG1fbGF5ZXJCZWZvcmUtPnNldEJvdW5kcyhJbnRTaXplKDE0LCAxNCkpOworICAgICAgICBtX2xh
eWVyQmVmb3JlLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTQsIDE0KSk7CisgICAgICAgIG1f
bGF5ZXJCZWZvcmUtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICAgICAgbV9sYXllckJlZm9y
ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAgICAgIG1fbGF5ZXJBZnRlci0+
c2V0UG9zaXRpb24oSW50UG9pbnQoNSwgNSkpOworICAgICAgICBtX2xheWVyQWZ0ZXItPnNldEJv
dW5kcyhJbnRTaXplKDE1LCAxNSkpOworICAgICAgICBtX2xheWVyQWZ0ZXItPnNldENvbnRlbnRC
b3VuZHMoSW50U2l6ZSgxNSwgMTUpKTsKKyAgICAgICAgbV9sYXllckFmdGVyLT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgICAgIG1fbGF5ZXJBZnRlci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNl
KHRydWUpOworCisgICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0UG9zaXRpb24o
SW50UG9pbnQoMywgMykpOworICAgICAgICBtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXIt
PnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9kZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxLCAx
KTsKKyAgICAgICAgbV9kZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKKworICAgICAgICBWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiBkZWxlZ2F0ZWRS
ZW5kZXJQYXNzZXM7CisgICAgICAgIENDVGVzdFJlbmRlclBhc3MqIHBhc3MxID0gYWRkUmVuZGVy
UGFzcyhkZWxlZ2F0ZWRSZW5kZXJQYXNzZXMsIENDUmVuZGVyUGFzczo6SWQoOSwgNiksIEludFJl
Y3QoNiwgNiwgNiwgNiksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBhZGRR
dWFkKHBhc3MxLCBJbnRSZWN0KDAsIDAsIDYsIDYpLCAzM3UpOworICAgICAgICBDQ1Rlc3RSZW5k
ZXJQYXNzKiBwYXNzMiA9IGFkZFJlbmRlclBhc3MoZGVsZWdhdGVkUmVuZGVyUGFzc2VzLCBDQ1Jl
bmRlclBhc3M6OklkKDksIDcpLCBJbnRSZWN0KDcsIDcsIDcsIDcpLCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgYWRkUXVhZChwYXNzMiwgSW50UmVjdCgwLCAwLCA3LCA3KSwg
MjJ1KTsKKyAgICAgICAgYWRkUmVuZGVyUGFzc1F1YWQocGFzczIsIHBhc3MxKTsKKyAgICAgICAg
Q0NUZXN0UmVuZGVyUGFzcyogcGFzczMgPSBhZGRSZW5kZXJQYXNzKGRlbGVnYXRlZFJlbmRlclBh
c3NlcywgQ0NSZW5kZXJQYXNzOjpJZCg5LCA4KSwgSW50UmVjdCg4LCA4LCA4LCA4KSwgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGFkZFJlbmRlclBhc3NRdWFkKHBhc3MzLCBw
YXNzMik7CisgICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0UmVuZGVyUGFzc2Vz
KGRlbGVnYXRlZFJlbmRlclBhc3Nlcyk7CisKKyAgICAgICAgLy8gVGhlIFJlbmRlclBhc3NlcyBz
aG91bGQgYmUgdGFrZW4gYnkgdGhlIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVEoMHUsIGRlbGVn
YXRlZFJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIG1fcm9vdExheWVyUHRyID0gbV9y
b290TGF5ZXIuZ2V0KCk7CisgICAgICAgIG1fbGF5ZXJCZWZvcmVQdHIgPSBtX2xheWVyQmVmb3Jl
LmdldCgpOworICAgICAgICBtX2xheWVyQWZ0ZXJQdHIgPSBtX2xheWVyQWZ0ZXIuZ2V0KCk7Cisg
ICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllclB0ciA9IG1fZGVsZWdhdGVkUmVuZGVyZXJM
YXllci5nZXQoKTsKKworICAgICAgICAvLyBGb3JjZSB0aGUgZGVsZWdhdGVkIFJlbmRlclBhc3Nl
cyB0byBjb21lIGJlZm9yZSB0aGUgUmVuZGVyUGFzcyBmcm9tIG1fbGF5ZXJBZnRlci4KKyAgICAg
ICAgbV9sYXllckFmdGVyLT5hZGRDaGlsZChtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFz
ZSgpKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXJBZnRlci5yZWxlYXNl
KCkpOworCisgICAgICAgIC8vIEdldCB0aGUgUmVuZGVyUGFzcyBnZW5lcmF0ZWQgYnkgbV9sYXll
ckJlZm9yZSB0byBjb21lIGJlZm9yZSB0aGUgZGVsZWdhdGVkIFJlbmRlclBhc3Nlcy4KKyAgICAg
ICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXJCZWZvcmUucmVsZWFzZSgpKTsKKworICAg
ICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIucmVsZWFzZSgpKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBtX3Jv
b3RMYXllcjsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBtX2xheWVyQmVmb3Jl
OworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IG1fbGF5ZXJBZnRlcjsKKyAgICBP
d25QdHI8Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbD4gbV9kZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyOworCisgICAgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKiBtX3Jvb3RMYXllclB0cjsKKyAgICBD
Q1NvbGlkQ29sb3JMYXllckltcGwqIG1fbGF5ZXJCZWZvcmVQdHI7CisgICAgQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsKiBtX2xheWVyQWZ0ZXJQdHI7CisgICAgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
SW1wbCogbV9kZWxlZ2F0ZWRSZW5kZXJlckxheWVyUHRyOworfTsKKworVEVTVF9GKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLCBBZGRzQ29udHJpYnV0aW5nUmVuZGVyUGFz
c2VzKQoreworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBF
WFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVy
cyhmcmFtZSk7CisKKyAgICAvLyBFYWNoIG5vbi1EZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFkZGVk
IG9uZSBSZW5kZXJQYXNzLiBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCB0d28gY29u
dHJpYnV0aW5nIHBhc3Nlcy4KKyAgICBBU1NFUlRfRVEoNXUsIGZyYW1lLnJlbmRlclBhc3Nlcy5z
aXplKCkpOworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUg
YWRkZWQgaXRzIGNvbnRyaWJ1dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVY
UEVDVF9FUSg0LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQ
RUNUX0VRKDEsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNU
X0VRKDQsIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKyAgICAvLyBBbmQgYWxs
IG90aGVyIFJlbmRlclBhc3NlcyBzaG91bGQgYmUgbm9uLWRlbGVnYXRlZC4KKyAgICBFWFBFQ1Rf
TkUoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5pZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9F
USgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPmlkKCkuaW5kZXgpOworICAgIEVYUEVDVF9ORSg0
LCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDAs
IGZyYW1lLnJlbmRlclBhc3Nlc1szXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX05FKDQsIGZy
YW1lLnJlbmRlclBhc3Nlc1s0XS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMCwgZnJh
bWUucmVuZGVyUGFzc2VzWzRdLT5pZCgpLmluZGV4KTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyIHNob3VsZCBoYXZlIGFkZGVkIGl0cyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZy
YW1lIGluIG9yZGVyLgorICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNiwgNiwgNiwgNiksIGZy
YW1lLnJlbmRlclBhc3Nlc1sxXS0+b3V0cHV0UmVjdCgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJ
bnRSZWN0KDcsIDcsIDcsIDcpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPm91dHB1dFJlY3QoKSk7
Cit9CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZSwgQWRk
c1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQYXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBh
cmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9u
LURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0
ZWRSZW5kZXJlckxheWVyIGFkZGVkIHR3byBjb250cmlidXRpbmcgcGFzc2VzLgorICAgIEFTU0VS
VF9FUSg1dSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAvLyBUaGUgRGVsZWdh
dGVkUmVuZGVyZXJMYXllciBzaG91bGQgaGF2ZSBhZGRlZCBpdHMgY29udHJpYnV0aW5nIFJlbmRl
clBhc3NlcyB0byB0aGUgZnJhbWUuCisgICAgRVhQRUNUX0VRKDQsIGZyYW1lLnJlbmRlclBhc3Nl
c1sxXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMSwgZnJhbWUucmVuZGVyUGFzc2Vz
WzFdLT5pZCgpLmluZGV4KTsKKyAgICBFWFBFQ1RfRVEoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzJd
LT5pZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9FUSgyLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0t
PmlkKCkuaW5kZXgpOworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxk
IGhhdmUgYWRkZWQgY29waWVzIG9mIGl0cyBxdWFkcyB0byBjb250cmlidXRpbmcgUmVuZGVyUGFz
c2VzLgorICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgp
LnNpemUoKSk7CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA2LCA2KSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKKworICAgIC8vIFZl
cmlmeSBpdCBhZGRlZCB0aGUgcmlnaHQgcXVhZHMuCisgICAgQVNTRVJUX0VRKDJ1LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJ
bnRSZWN0KDAsIDAsIDcsIDcpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KClbMF0t
PnF1YWRSZWN0KCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNiwgNiwgNiwgNiksIGZy
YW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVsxXS0+cXVhZFJlY3QoKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDYsIDYpLCBmcmFtZS5yZW5kZXJQYXNzZXNb
MV0tPnF1YWRMaXN0KClbMF0tPnF1YWRSZWN0KCkpOworfQorCitURVNUX0YoQ0NEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVySW1wbFRlc3RTaW1wbGUsIEFkZHNRdWFkc1RvVGFyZ2V0UmVuZGVyUGFzcykK
K3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNU
X1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJh
bWUpOworCisgICAgLy8gRWFjaCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUg
UmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1
dGluZyBwYXNzZXMuCisgICAgQVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgIC8vIFRoZSBsYXllcidzIHRhcmdldCBpcyB0aGUgUmVuZGVyUGFzcyBmcm9tIG1f
bGF5ZXJBZnRlci4KKyAgICBFWFBFQ1RfRVEoQ0NSZW5kZXJQYXNzOjpJZCgzLCAwKSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzNdLT5pZCgpKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIHNob3VsZCBoYXZlIGFkZGVkIGNvcGllcyBvZiBxdWFkcyBpbiBpdHMgcm9vdCBSZW5kZXJQ
YXNzIHRvIGl0cyB0YXJnZXQgUmVuZGVyUGFzcy4KKyAgICAvLyBUaGUgbV9sYXllckFmdGVyIGFs
c28gYWRkcyBvbmUgcXVhZC4KKyAgICBBU1NFUlRfRVEoMnUsIGZyYW1lLnJlbmRlclBhc3Nlc1sz
XS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgLy8gVmVyaWZ5IGl0IGFkZGVkIHRoZSByaWdo
dCBxdWFkcy4KKyAgICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDcsIDcsIDcsIDcpLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbM10tPnF1YWRMaXN0KClbMF0tPnF1YWRSZWN0KCkpOworCisgICAgLy8gSXRz
IHRhcmdldCBsYXllciBzaG91bGQgaGF2ZSBhIHF1YWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfUkVD
VF9FUShJbnRSZWN0KDAsIDAsIDE1LCAxNSksIGZyYW1lLnJlbmRlclBhc3Nlc1szXS0+cXVhZExp
c3QoKVsxXS0+cXVhZFJlY3QoKSk7Cit9CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsVGVzdFNpbXBsZSwgUXVhZHNGcm9tUm9vdFJlbmRlclBhc3NBcmVNb2RpZmllZEZvclRo
ZVRhcmdldCkKK3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxM
YXllcnMoZnJhbWUpOworCisgICAgLy8gRWFjaCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBh
ZGRlZCBvbmUgUmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdv
IGNvbnRyaWJ1dGluZyBwYXNzZXMuCisgICAgQVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNz
ZXMuc2l6ZSgpKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGlzIGF0IHBv
c2l0aW9uIDMsMyBjb21wYXJlZCB0byBpdHMgdGFyZ2V0LCBhbmQgaGFzIGEgdHJhbnNsYXRpb24g
dHJhbnNmb3JtIG9mIDEsMS4KKyAgICAvLyBTbyBpdHMgcm9vdCBSZW5kZXJQYXNzJyBxdWFkcyBz
aG91bGQgYWxsIGJlIHRyYW5zZm9ybWVkIGJ5IHRoYXQgY29tYmluZWQgYW1vdW50LgorICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KDQsIDQpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEodHJhbnNmb3JtLCBm
cmFtZS5yZW5kZXJQYXNzZXNbM10tPnF1YWRMaXN0KClbMF0tPnF1YWRUcmFuc2Zvcm0oKSk7CisK
KyAgICAvLyBRdWFkcyBmcm9tIG5vbi1yb290IFJlbmRlclBhc3NlcyBzaG91bGQgbm90IGJlIHNo
aWZ0ZWQgdGhvdWdoLgorICAgIEFTU0VSVF9FUSgydSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5x
dWFkTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0
KClbMF0tPnF1YWRUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1
YWRMaXN0KClbMV0tPnF1YWRUcmFuc2Zvcm0oKSk7CisgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBh
c3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+cXVhZFRyYW5zZm9ybSgpKTsKK30KKworY2xhc3MgQ0NE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3RPd25TdXJmYWNlIDogcHVibGljIENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlIHsKK3B1YmxpYzoKKyAgICBDQ0RlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1cmZhY2UoKQorICAgICAgICA6IENDRGVsZWdhdGVk
UmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlKCkKKyAgICB7CisgICAgICAgIG1fZGVsZWdhdGVk
UmVuZGVyZXJMYXllclB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworICAgIH0KK307
CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1cmZhY2UsIEFk
ZHNSZW5kZXJQYXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZy
YW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICBtX2hvc3RJbXBsLT5kaWRE
cmF3QWxsTGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9uLURlbGVnYXRlZFJlbmRlcmVy
TGF5ZXIgYWRkZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFk
ZGVkIHR3byBjb250cmlidXRpbmcgcGFzc2VzIGFuZCBpdHMgb3duZWQgc3VyZmFjZSBhZGRlZCBv
bmUgcGFzcy4KKyAgICBBU1NFUlRfRVEoNnUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwor
CisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQgaXRz
IGNvbnRyaWJ1dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVYUEVDVF9FUSg0
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDEs
IGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX0VRKDQsIGZy
YW1lLnJlbmRlclBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMiwgZnJh
bWUucmVuZGVyUGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKyAgICAvLyBUaGUgRGVsZWdhdGVkUmVu
ZGVyZXJMYXllciBzaG91bGQgaGF2ZSBhZGRlZCBhIFJlbmRlclBhc3MgZm9yIGl0cyBzdXJmYWNl
IHRvIHRoZSBmcmFtZS4KKyAgICBFWFBFQ1RfRVEoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5p
ZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9FUSgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPmlk
KCkuaW5kZXgpOworICAgIC8vIEFuZCBhbGwgb3RoZXIgUmVuZGVyUGFzc2VzIHNob3VsZCBiZSBu
b24tZGVsZWdhdGVkLgorICAgIEVYUEVDVF9ORSg0LCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPmlk
KCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDAsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+aWQo
KS5pbmRleCk7CisgICAgRVhQRUNUX05FKDQsIGZyYW1lLnJlbmRlclBhc3Nlc1s0XS0+aWQoKS5s
YXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMCwgZnJhbWUucmVuZGVyUGFzc2VzWzRdLT5pZCgpLmlu
ZGV4KTsKKyAgICBFWFBFQ1RfTkUoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzVdLT5pZCgpLmxheWVy
SWQpOworICAgIEVYUEVDVF9FUSgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbNV0tPmlkKCkuaW5kZXgp
OworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQg
aXRzIFJlbmRlclBhc3NlcyB0byB0aGUgZnJhbWUgaW4gb3JkZXIuCisgICAgRVhQRUNUX1JFQ1Rf
RVEoSW50UmVjdCg2LCA2LCA2LCA2KSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5vdXRwdXRSZWN0
KCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNywgNywgNywgNyksIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+b3V0cHV0UmVjdCgpKTsKK30KKworVEVTVF9GKENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgQWRkc1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQ
YXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAg
IEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5
ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9uLURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRk
ZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFkZGVkIHR3byBj
b250cmlidXRpbmcgcGFzc2VzIGFuZCBpdHMgb3duZWQgc3VyZmFjZSBhZGRlZCBvbmUgcGFzcy4K
KyAgICBBU1NFUlRfRVEoNnUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgLy8g
VGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQgaXRzIGNvbnRyaWJ1
dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVYUEVDVF9FUSg0LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDEsIGZyYW1lLnJl
bmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX0VRKDQsIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMiwgZnJhbWUucmVuZGVy
UGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIHNob3VsZCBoYXZlIGFkZGVkIGNvcGllcyBvZiBpdHMgcXVhZHMgdG8gY29udHJpYnV0aW5n
IFJlbmRlclBhc3Nlcy4KKyAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+
cXVhZExpc3QoKS5zaXplKCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgNiwg
NiksIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+cXVhZFJlY3QoKSk7CisK
KyAgICAvLyBWZXJpZnkgaXQgYWRkZWQgdGhlIHJpZ2h0IHF1YWRzLgorICAgIEFTU0VSVF9FUSgy
dSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNU
X1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA3LCA3KSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFk
TGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDYsIDYs
IDYsIDYpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KClbMV0tPnF1YWRSZWN0KCkp
OworICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNp
emUoKSk7CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA2LCA2KSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKK30KKworVEVTVF9GKEND
RGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgQWRkc1F1YWRzVG9UYXJn
ZXRSZW5kZXJQYXNzKQoreworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgbV9ob3N0SW1wbC0+ZGlkRHJh
d0FsbExheWVycyhmcmFtZSk7CisKKyAgICAvLyBFYWNoIG5vbi1EZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIGFkZGVkIG9uZSBSZW5kZXJQYXNzLiBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRl
ZCB0d28gY29udHJpYnV0aW5nIHBhc3NlcyBhbmQgaXRzIG93bmVkIHN1cmZhY2UgYWRkZWQgb25l
IHBhc3MuCisgICAgQVNTRVJUX0VRKDZ1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKwor
ICAgIC8vIFRoZSBsYXllcidzIHRhcmdldCBpcyB0aGUgUmVuZGVyUGFzcyBvd25lZCBieSBpdHNl
bGYuCisgICAgRVhQRUNUX0VRKENDUmVuZGVyUGFzczo6SWQoNCwgMCksIGZyYW1lLnJlbmRlclBh
c3Nlc1szXS0+aWQoKSk7CisKKyAgICAvLyBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBzaG91
bGQgaGF2ZSBhZGRlZCBjb3BpZXMgb2YgcXVhZHMgaW4gaXRzIHJvb3QgUmVuZGVyUGFzcyB0byBp
dHMgdGFyZ2V0IFJlbmRlclBhc3MuCisgICAgLy8gVGhlIG1fbGF5ZXJBZnRlciBhbHNvIGFkZHMg
b25lIHF1YWQuCisgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFZlcmlmeSBpdCBhZGRlZCB0aGUgcmlnaHQgcXVhZHMu
CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCg3LCA3LCA3LCA3KSwgZnJhbWUucmVuZGVyUGFz
c2VzWzNdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKK30KKworVEVTVF9GKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgUXVhZHNGcm9tUm9vdFJlbmRlclBh
c3NBcmVOb3RNb2RpZmllZEZvclRoZVRhcmdldCkKK3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1f
aG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworCisgICAgLy8gRWFjaCBub24tRGVs
ZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUgUmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJl
bmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1dGluZyBwYXNzZXMgYW5kIGl0cyBvd25lZCBz
dXJmYWNlIGFkZGVkIG9uZSBwYXNzLgorICAgIEFTU0VSVF9FUSg2dSwgZnJhbWUucmVuZGVyUGFz
c2VzLnNpemUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
IG93bnMgYSBSZW5kZXJTdXJmYWNlLCBpdHMgcm9vdCBSZW5kZXJQYXNzJyBxdWFkcyBkbyBub3Qg
bmVlZCB0byBiZQorICAgIC8vIG1vZGlmaWVkIGF0IGFsbC4KKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBh
c3Nlc1szXS0+cXVhZExpc3QoKVswXS0+cXVhZFRyYW5zZm9ybSgpKTsKKworICAgIC8vIFF1YWRz
IGZyb20gbm9uLXJvb3QgUmVuZGVyUGFzc2VzIHNob3VsZCBub3QgYmUgc2hpZnRlZCB0aG91Z2gu
CisgICAgQVNTRVJUX0VRKDJ1LCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVswXS0+cXVhZFRy
YW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVsxXS0+
cXVhZFRyYW5zZm9ybSgpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFk
TGlzdCgpWzBdLT5xdWFkVHJhbnNmb3JtKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcAppbmRleCBkN2U5NTU3ODMzNGM4Y2UwYzFlNGQyNGRlZWEyZWUzZTdiYTI4MTAyLi44
MWM0YzlkYThhNjlhYWUwNGViZDFmMWYxZWU5YTlkZDM5MTg5NDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAog
I2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDRGVsZWdhdGVk
UmVuZGVyZXJMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ0dlb21ldHJ5VGVzdFV0aWxzLmgiCiAj
aW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDSU9TdXJm
YWNlTGF5ZXJJbXBsLmgiCkBAIC0yNTY1LDcgKzI1NjYsNiBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogICAgIHJv
b3RMYXllci0+YWRkQ2hpbGQoaHVkTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIE93blB0cjxGYWtl
U2Nyb2xsYmFyTGF5ZXJJbXBsPiBzY3JvbGxiYXJMYXllcihGYWtlU2Nyb2xsYmFyTGF5ZXJJbXBs
OjpjcmVhdGUoOCkpOwotICAgIHNjcm9sbGJhckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbCht
X2hvc3RJbXBsLmdldCgpKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0Qm91bmRzKEludFNpemUo
MTAsIDEwKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgx
MCwgMTApKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwpAQCAt
MjU3Myw2ICsyNTczLDEzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVz
ZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAgICAgc2Nyb2xsYmFyTGF5ZXItPmNyZWF0
ZVJlc291cmNlcyhtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIHJvb3RMYXll
ci0+YWRkQ2hpbGQoc2Nyb2xsYmFyTGF5ZXIucmVsZWFzZSgpKTsKIAorICAgIE93blB0cjxDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSg5KSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJM
YXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJM
YXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgIGRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICByb290
TGF5ZXItPmFkZENoaWxkKGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFzZSgpKTsKKwogICAg
IC8vIFVzZSBhIGNvbnRleHQgdGhhdCBzdXBwb3J0cyBJT1N1cmZhY2VzCiAgICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZVJlbmRlcmVyKEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3Jl
YXRlKGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoSU9TdXJmYWNlKSks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOwogCkBAIC0yNzAwLDYgKzI3MDcsMTMgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBsYXllcnNGcmVlVGV4dHVyZXMpCiAgICAgaW9TdXJmYWNl
TGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOwogICAgIHJvb3RM
YXllci0+YWRkQ2hpbGQoaW9TdXJmYWNlTGF5ZXIucmVsZWFzZSgpKTsKIAorICAgIE93blB0cjxD
Q0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyKENDRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSg2KSk7CisgICAgZGVsZWdhdGVkUmVuZGVy
ZXJMYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVy
ZXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgIGRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBkZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICBy
b290TGF5ZXItPmFkZENoaWxkKGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFzZSgpKTsKKwog
ICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2luZyBpdCB3aXRoIGEgVHJhY2tpbmdXZWJH
cmFwaGljc0NvbnRleHQzRCAod2hpY2ggdGhlIENDTGF5ZXJUcmVlSG9zdEltcGwgdGFrZXMgb3du
ZXJzaGlwIG9mKS4KICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChGYWtl
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShhZG9wdFB0cihuZXcgVHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQzRCkpKTsKICAgICBUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNE
KiB0cmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dCA9IHN0YXRpY19jYXN0PFRyYWNraW5nV2ViR3Jh
cGhpY3NDb250ZXh0M0QqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGQ2
NmI4Yzk1MTZhM2U4ODI4NmUzNmI4MTU3YTQwNjFiMDZjYWE0Y2EuLjVmYTEzYmUzOTY2OGRmYjMx
Njg1NzJlYTVmNzYyYTZkNjdiZjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtODksNyArODksNyBAQCBURVNU
KENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Bl
cmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRl
clN1cmZhY2UtPnNldERyYXdPcGFjaXR5KDAuNSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0oZHVt
bXlNYXRyaXgpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5H
RShyZW5kZXJTdXJmYWNlLT5zZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShkdW1teU1hdHJpeCkpOwot
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZh
Y2UtPmNsZWFyTGF5ZXJMaXN0KCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJ
RF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0cygpKTsKIH0KIAogVEVT
VChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNo
YXJlZFF1YWRTdGF0ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162910</attachid>
            <date>2012-09-07 17:03:26 -0700</date>
            <delta_ts>2012-09-13 14:08:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120907200305.patch</filename>
            <type>text/plain</type>
            <size>69612</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzM2U4NjU3M2NiYjAz
N2IzMGFkZGFiMjQ2M2VjYTc5MTg0M2EwMDExLi5mNTc0MmIxY2ViMjU4MmM2YTczYTg3YTMxMjY5
NzM4ZmE3NjJlYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNyAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBXZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyIHRvIGFsbG93IHRoZSBicm93c2VyIGNvbXBvc2l0b3IgdG8KKyAgICAgICAgZW1i
ZWQgc3VjaCBhIGxheWVyIGluIGl0cyB0cmVlLiBUaGlzIGxheWVyIHdpbGwgYmUgY29ubmVjdGVk
IHRvIElQQworICAgICAgICBtYWNoaW5lcnkgaW4gdGhlIGNvbXBvc2l0b3IgdGhhdCBpcyB5ZXQg
VEJEIHdoaWNoIHdpbGwgZ2l2ZSBhIHNldCBvZgorICAgICAgICBSZW5kZXJQYXNzZXMgd2l0aCBE
cmF3UXVhZHMgdG8gdGhlIGltcGwgY29weSBvZiB0aGUgbGF5ZXIuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXI6On5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKwogMjAxMi0w
OS0wNyAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IGFkZCBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlQW5zd2VyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMjJmZmVjYzQ3YzExM2M0ODQwYTgzMGZiYzc0ZTQ2MDBjZmJiMGQ1Zi4uNWI3OTI3
ZDAwMTIyNmE3MDg0MmVkMjNkM2QyNzA5YmNmMjhmMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDg2IEBACisyMDEyLTA5LTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHRoZSB1YmVyY29tcCBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
YWRkcyBhIGxheWVyIHRoYXQgb3ducyBhIHNldCBvZiBSZW5kZXJQYXNzZXMgd2l0aCBEcmF3UXVh
ZHMsIGFuZCBpcworICAgICAgICBhYmxlIHRvIGluc2VydCB0aG9zZSBSZW5kZXJQYXNzZXMgYW5k
IERyYXdRdWFkcyBpbnRvIHRoZSBjdXJyZW50IGZyYW1lCisgICAgICAgIGR1cmluZyBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoKS4KKworICAgICAgICBUaGUgbGF5
ZXIgb3ducyB3aGF0ZXZlciBxdWFkcy9wYXNzZXMgeW91IGdpdmUgdG8gaXQsIGFuZCBjb3BpZXMg
dGhlbQorICAgICAgICB3aXRoIG1vZGlmaWNhdGlvbnMgYXMgbmVlZGVkIGludG8gdGhlIGN1cnJl
bnQgZnJhbWUgdmlhIHRoZSBRdWFkU2luay4KKworICAgICAgICBRdWFkcyBmcm9tIHRoZSBsYXll
cidzIHJvb3QgUmVuZGVyUGFzcyBhcmUgbWVyZ2VkIGludG8gaXRzIHRhcmdldAorICAgICAgICBS
ZW5kZXJQYXNzLCB3aXRoIHRoZSB0cmFuc2Zvcm0gYW5kIG9wYWNpdHkgYmVpbmcgbW9kaWZpZWQg
aWYgbmVlZGVkLgorICAgICAgICBPdGhlciBSZW5kZXJQYXNzZXMgYXJlIGluc2VydGVkIGludG8g
dGhlIGZyYW1lIGFzLWlzLCB3aXRoIFJlbmRlclBhc3MKKyAgICAgICAgaWRzIGJlaW5nIGFkanVz
dGVkIHRvIG5vdCBjb2xsaWRlIHdpdGggYW55IG90aGVyIFJlbmRlclBhc3NlcyBpbiB0aGUKKyAg
ICAgICAgZnJhbWUsIGFuZCB1c2luZyBhIHNjaGVtZSB0aGF0IGFsbG93cyB0aGUgbGF5ZXIgdG8g
cmV2ZXJzZS1sb29rdXAKKyAgICAgICAgaXRzIG93biBjb3B5IG9mIGEgUmVuZGVyUGFzcyBmcm9t
IHRoZSBpZCBpdCBnZW5lcmF0ZWQuCisKKyAgICAgICAgVGVzdHM6IENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0U2ltcGxlLkFkZHNDb250cmlidXRpbmdSZW5kZXJQYXNzZXMKKyAgICAg
ICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLkFkZHNRdWFk
c1RvQ29udHJpYnV0aW5nUmVuZGVyUGFzc2VzCisgICAgICAgICAgICAgICBDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZS5BZGRzUXVhZHNUb1RhcmdldFJlbmRlclBhc3MKKyAg
ICAgICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLlF1YWRz
RnJvbVJvb3RSZW5kZXJQYXNzQXJlTW9kaWZpZWRGb3JUaGVUYXJnZXQKKyAgICAgICAgICAgICAg
IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZS5BZGRzUmVuZGVyUGFz
c2VzCisgICAgICAgICAgICAgICBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1
cmZhY2UuQWRkc1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQYXNzZXMKKyAgICAgICAgICAgICAg
IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZS5BZGRzUXVhZHNUb1Rh
cmdldFJlbmRlclBhc3MKKyAgICAgICAgICAgICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGxUZXN0T3duU3VyZmFjZS5RdWFkc0Zyb21Sb290UmVuZGVyUGFzc0FyZU5vdE1vZGlmaWVkRm9y
VGhlVGFyZ2V0CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NB
cHBlbmRRdWFkc0RhdGEuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtOjp+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlQ0NMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJD
aHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0YS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06Omhhc0NvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3Nlcyk6CisgICAg
ICAgIChMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZh
Y2VDaHJvbWl1bTo6YWRkQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6Y2xlYXJMYXllckxpc3RzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FwcGVuZFF1YWRzRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NBcHBlbmRRdWFkc0RhdGE6OkNDQXBwZW5kUXVhZHNE
YXRhKToKKyAgICAgICAgKENDQXBwZW5kUXVhZHNEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGw6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6fkNDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
SW1wbDo6ZGVzY2VuZGFudERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6c2V0
UmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4VG9JZCk6CisgICAgICAgIChX
ZWJDb3JlOjppZFRvSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbDo6Y29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjphcHBlbmRDb250cmlidXRpbmdSZW5k
ZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6YXBwZW5kUmVuZGVyUGFzc1F1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5k
UXVhZHNEYXRhLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6Omhhc0NvbnRy
aWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3Nlcyk6CisgICAgICAgIChDQ0xheWVySW1wbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwUm9vdExheWVyQW5kU3VyZmFjZUZvclJl
Y3Vyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVy
bmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNh
bGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6YWRkQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpjbGVhckxheWVy
TGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQ
YXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2Up
OgorCiAyMDEyLTA5LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI3OTExLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA1MDYzNTA2NjA1MjQwZjc1NDZmNmQ0Mzg5ODRiMzY4ZjZhNTIw
NDA0Li5mYzUzMDg1ZDA0YzI1NDA1MTliOTc5ZmI5ZTY0YWVjZTUwMDZlM2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEyLTA5LTA3ICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIHRoZSB1
YmVyY29tcCBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIg
dG8gYWxsb3cgdGhlIGJyb3dzZXIgY29tcG9zaXRvciB0bworICAgICAgICBlbWJlZCBzdWNoIGEg
bGF5ZXIgaW4gaXRzIHRyZWUuIFRoaXMgbGF5ZXIgd2lsbCBiZSBjb25uZWN0ZWQgdG8gSVBDCisg
ICAgICAgIG1hY2hpbmVyeSBpbiB0aGUgY29tcG9zaXRvciB0aGF0IGlzIHlldCBUQkQgd2hpY2gg
d2lsbCBnaXZlIGEgc2V0IG9mCisgICAgICAgIFJlbmRlclBhc3NlcyB3aXRoIERyYXdRdWFkcyB0
byB0aGUgaW1wbCBjb3B5IG9mIHRoZSBsYXllci4KKworICAgICAgICBBbHNvIGFkZGluZyB1bml0
IHRlc3RzIGZvciB0aGUgbGF5ZXIncyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogV2ViS2l0
Lmd5cDoKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5kUXVhZHNEYXRhLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6fldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0RhbWFn
ZVRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAgICAg
ICAqIHRlc3RzL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdCk6CisgICAgICAgIChDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdDo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bFRlc3QpOgorICAgICAgICAoQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3Q6OmNyZWF0
ZUNvbnRleHQpOgorICAgICAgICAoRHJhd2luZ0xheWVySW1wbCk6CisgICAgICAgIChEcmF3aW5n
TGF5ZXJJbXBsOjpjcmVhdGUpOgorICAgICAgICAoRHJhd2luZ0xheWVySW1wbDo6RHJhd2luZ0xh
eWVySW1wbCk6CisgICAgICAgIChDQ1Rlc3RSZW5kZXJQYXNzKToKKyAgICAgICAgKENDVGVzdFJl
bmRlclBhc3M6OnF1YWRTaW5rKToKKyAgICAgICAgKGFkZFJlbmRlclBhc3MpOgorICAgICAgICAo
YWRkUXVhZCk6CisgICAgICAgIChhZGRSZW5kZXJQYXNzUXVhZCk6CisgICAgICAgIChDQ0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZTo6Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRl
c3RTaW1wbGUpOgorICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSk6CisgICAgICAgIChDQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsVGVzdE93blN1cmZhY2U6OkNDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0
T3duU3VyZmFjZSk6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3Bw
OgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorCisyMDEyLTA5LTA3
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1
bV0gTWFrZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQg
YW4gaW5kZXgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NTAwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggNmZhMzk0ZWM5OWJlYWJlNzY2ODAyZmEz
MzVhYWVjYmUwNmMyNTRmZS4uZGQyZTdkYjA4ZDgzNzBiYzBjOTUzZDg1ODdhOTIwZWIyZDllZGZm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUzLDYgKzUzLDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRhdGEu
aCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5
ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQu
aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
RGVsZWdhdGVkUmVuZGVyZXJMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZjRmYTZlN2I4ZTBhNGU0OTE1
YWRhZTM4N2FmODBmMDRlNWI1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyX2gKKyNkZWZpbmUg
V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJMYXllci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFz
cyByZXByZXNlbnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJzIHRoZSBvdXRwdXQgb2YgYW5vdGhlcgor
Ly8gZGVsZWdhdGluZyBjb21wb3NpdG9yLgorY2xhc3MgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXll
ciB7CitwdWJsaWM6CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllciogY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXll
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTBhZWVhYjZiNmFjM2ZjYmYwZWVmNzE3OTEzZTNlNzRj
YmZiODI3Mi4uZDQ1MzU0OTU4ZWEzMzJmMzQ5MTE5YjJkZjllZTg0NzQ3YThjYWE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtODM5MCw2ICs4MzkwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
Q2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlC
aW5kaW5nLmNwcCcsCkBAIC04NDUyLDYgKzg0NTQsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxheUJh
c2VkVGltZVNvdXJjZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJl
bmRlcmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGlyZWN0UmVuZGVyZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RyYXdRdWFkLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVu
ZGVyZXJMYXllckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDNkMmYyMmNhZjQ2YWVlODFhNWI4
ZDlhZjRmNDgyNDIzZTc2MWYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtLmNw
cApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5oIgorCisjaW5jbHVkZSAiQ0NEZWxlZ2F0
ZWRSZW5kZXJlckxheWVySW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtPiBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
Q2hyb21pdW06OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyQ2hyb21pdW0oKSk7Cit9CisKK0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJv
bWl1bTo6RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKCkKKyAgICA6IExheWVyQ2hyb21p
dW0oKQoreworICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgc2V0TWFza3NUb0JvdW5kcyh0
cnVlKTsKK30KKworRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjp+RGVsZWdhdGVkUmVu
ZGVyZXJMYXllckNocm9taXVtKCkKK3sKK30KKworUGFzc093blB0cjxDQ0xheWVySW1wbD4gRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCit7CisgICAg
cmV0dXJuIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZShtX2xheWVySWQpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU5NDk1ZjA5ZDFhZDJmMWQxOGRlMWRjYjc3NDIwN2ZmMWJlYjQ2YWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9EZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDQ2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaWZuZGVmIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisjZGVmaW5lIERl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRlICJMYXllckNocm9taXVt
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0geworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlbGVnYXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKCk7CisgICAg
dmlydHVhbCB+RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtKCk7CisKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCkgT1ZFUlJJREU7CisK
K3Byb3RlY3RlZDoKKyAgICBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0oKTsKK307CisK
K30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVlMGVhNzc1NmE1ZWYzODc1Y2NhMTQ2
ZWMxMWIxMTA3MDZmNTg0MmMuLmQwMjFmYmNlZjg0ZTAxNWJlMzNiOTQ5ZWJjMzU2NzhmMGNmYTM5
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE5Myw2ICsxOTMsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3QqKTsKIAorICAg
IGJvb2wgaGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKwogICAgIHZvaWQgc2V0SXNEcmF3YWJsZShib29sKTsKIAogICAgIHZvaWQg
c2V0UmVwbGljYUxheWVyKExheWVyQ2hyb21pdW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmgKaW5kZXggNzg3ZWFhZWMyNTcxN2Q1MTM1OGZjMjMwMjZhYjg1YmNlZTcyMDA1Ny4u
NWQyMDZlNWQ3ZTNiN2IwOTk2ZTM1MWE4NTMxMjgxNDdiYThmZjcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVu
ZGVyU3VyZmFjZUNocm9taXVtLmgKQEAgLTc4LDggKzc4LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQogICAgIHZv
aWQgc2V0Q2xpcFJlY3QoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIHsgbV9jbGlwUmVjdCA9IGNs
aXBSZWN0OyB9CiAKLSAgICB2b2lkIGNsZWFyTGF5ZXJMaXN0KCkgeyBtX2xheWVyTGlzdC5jbGVh
cigpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckxpc3QoKSB7
IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQgYWRkQ29udHJpYnV0aW5nRGVsZWdhdGVk
UmVuZGVyUGFzc0xheWVyKExheWVyQ2hyb21pdW0qKSB7IH0KKyAgICB2b2lkIGNsZWFyTGF5ZXJM
aXN0cygpIHsgbV9sYXllckxpc3QuY2xlYXIoKTsgfQogCiAgICAgdm9pZCBzZXROZWFyZXN0QW5j
ZXN0b3JUaGF0TW92ZXNQaXhlbHMoUmVuZGVyU3VyZmFjZUNocm9taXVtKiBzdXJmYWNlKSB7IG1f
bmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzID0gc3VyZmFjZTsgfQogICAgIGNvbnN0IFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogbmVhcmVzdEFuY2VzdG9yVGhhdE1vdmVzUGl4ZWxzKCkgY29u
c3QgeyByZXR1cm4gbV9uZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHM7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQXBwZW5k
UXVhZHNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FwcGVuZFF1YWRzRGF0YS5oCmluZGV4IGQ1M2ZkYmJmMDYzNmZkMjQ3MDA5NWQyNGMwN2Nk
OWMxMWMyMjg3N2MuLjM2MWY5Yzk2N2VjMmU1OGVjMzU3M2ZkNDYwZGRiZDhlYzg3NDA3YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QXBwZW5kUXVhZHNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NBcHBlbmRRdWFkc0RhdGEuaApAQCAtMjYsMTIgKzI2LDIyIEBACiAjaWZu
ZGVmIENDQXBwZW5kUXVhZHNEYXRhX2gKICNkZWZpbmUgQ0NBcHBlbmRRdWFkc0RhdGFfaAogCisj
aW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IENDQXBwZW5kUXVhZHNEYXRhIHsKICAgICBDQ0FwcGVuZFF1YWRzRGF0YSgpCiAgICAgICAgIDog
aGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogICAgICAgICAsIGhh
ZE1pc3NpbmdUaWxlcyhmYWxzZSkKKyAgICAgICAgLCByZW5kZXJQYXNzSWQoMCwgMCkKKyAgICB7
CisgICAgfQorCisgICAgZXhwbGljaXQgQ0NBcHBlbmRRdWFkc0RhdGEoQ0NSZW5kZXJQYXNzOjpJ
ZCByZW5kZXJQYXNzSWQpCisgICAgICAgIDogaGFkT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlKGZhbHNlKQorICAgICAgICAsIGhhZE1pc3NpbmdUaWxlcyhmYWxzZSkKKyAgICAgICAg
LCByZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgIHsKICAgICB9CiAKQEAgLTM5LDYgKzQ5
LDggQEAgc3RydWN0IENDQXBwZW5kUXVhZHNEYXRhIHsKICAgICBib29sIGhhZE9jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKICAgICAvLyBTZXQgYnkgdGhlIGxheWVyIGFwcGVuZGlu
ZyBxdWFkcy4KICAgICBib29sIGhhZE1pc3NpbmdUaWxlczsKKyAgICAvLyBHaXZlbiB0byB0aGUg
bGF5ZXIgYXBwZW5kaW5nIHF1YWRzLgorICAgIGNvbnN0IENDUmVuZGVyUGFzczo6SWQgcmVuZGVy
UGFzc0lkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTI0ZmNlMmZiOTJjMzYzMTNiNmQ5NjExNTQx
MzI2N2RmNTcxMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbC5jcHAKQEAg
LTAsMCArMSwxNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJD
Q0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRz
RGF0YS5oIgorI2luY2x1ZGUgIkNDUXVhZFNpbmsuaCIKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3NE
cmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzc1NpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjpDQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsKGludCBpZCkKKyAgICA6IENDTGF5ZXJJbXBsKGlkKQoreworfQorCitDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgp
Cit7Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6ZGVzY2VuZGFudERy
YXdzQ29udGVudCgpCit7CisgICAgLy8gRklYTUU6IFRoaXMgY291bGQgcG9zc2libHkgcmV0dXJu
IGZhbHNlIGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSBzb21lCisgICAgLy8gcXVhZHMgcHJlc2VudCBh
cyB0aGV5IGNvdWxkIGFsbCBiZSBmcm9tIGEgc2luZ2xlIGxheWVyIChvciBzZXQgb2YKKyAgICAv
LyBsYXllcnMgd2l0aG91dCBjaGlsZHJlbikuIElmIHRoaXMgaGFwcGVucywgdGhlbiBtYWtlIGEg
dGVzdCB0aGF0CisgICAgLy8gZW5zdXJlcyB0aGUgb3BhY2l0eSBpcyBiZWluZyBjaGFuZ2VkIG9u
IHF1YWRzIGluIHRoZSByb290IFJlbmRlclBhc3MKKyAgICAvLyB3aGVuIHRoaXMgbGF5ZXIgZG9l
c24ndCBvd24gYSBSZW5kZXJTdXJmYWNlLgorICAgIHJldHVybiAhbV9yZW5kZXJQYXNzZXNJbkRy
YXdPcmRlci5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1w
bDo6aGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkgY29uc3QKK3sKKyAgICAv
LyBUaGUgcm9vdCBSZW5kZXJQYXNzIGZvciB0aGUgbGF5ZXIgaXMgbWVyZ2VkIHdpdGggaXRzIHRh
cmdldAorICAgIC8vIFJlbmRlclBhc3MgaW4gZWFjaCBmcmFtZS4gU28gd2Ugb25seSBoYXZlIGV4
dHJhIFJlbmRlclBhc3NlcworICAgIC8vIHRvIG1lcmdlIHdoZW4gd2UgaGF2ZSBhIG5vbi1yb290
IFJlbmRlclBhc3MgcHJlc2VudC4KKyAgICByZXR1cm4gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRl
ci5zaXplKCkgPiAxOworfQorCit2b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OnNl
dFJlbmRlclBhc3NlcyhWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiYgcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXIpCit7CisgICAgRmxvYXRSZWN0IG9sZFJvb3REYW1hZ2U7CisgICAgaWYgKCFt
X3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgb2xkUm9vdERhbWFn
ZSA9IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIubGFzdCgpLT5kYW1hZ2VSZWN0KCk7CisKKyAg
ICBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZC5jbGVhcigpOworICAgIG1fcmVuZGVyUGFzc2VzSW5E
cmF3T3JkZXIuY2xlYXIoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRlclBhc3Nl
c0luRHJhd09yZGVyLnNpemUoKTsgKytpKSB7CisgICAgICAgIG1fcmVuZGVyUGFzc2VzSW5kZXhC
eUlkLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQoKSwgaSk7CisgICAgICAgIG1f
cmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuYXBwZW5kKHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ld
LnJlbGVhc2UoKSk7CisgICAgfQorICAgIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLmNsZWFyKCk7
CisKKyAgICBpZiAoIW1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuaXNFbXB0eSgpKSB7CisgICAg
ICAgIEZsb2F0UmVjdCBuZXdSb290RGFtYWdlID0gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5s
YXN0KCktPmRhbWFnZVJlY3QoKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5s
YXN0KCktPnNldERhbWFnZVJlY3QodW5pb25SZWN0KG9sZFJvb3REYW1hZ2UsIG5ld1Jvb3REYW1h
Z2UpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGluZGV4VG9JZChpbnQgaW5kZXgp
IHsgcmV0dXJuIGluZGV4ICsgMTsgfQorc3RhdGljIGlubGluZSBpbnQgaWRUb0luZGV4KGludCBp
ZCkgeyByZXR1cm4gaWQgLSAxOyB9CisKK0NDUmVuZGVyUGFzczo6SWQgQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbDo6Y29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6
OklkIGRlbGVnYXRlZFJlbmRlclBhc3NJZCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBkZWxlZ2F0
ZWRSZW5kZXJQYXNzSW5kZXggPSBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZC5nZXQoZGVsZWdhdGVk
UmVuZGVyUGFzc0lkKTsKKyAgICByZXR1cm4gQ0NSZW5kZXJQYXNzOjpJZChpZCgpLCBpbmRleFRv
SWQoZGVsZWdhdGVkUmVuZGVyUGFzc0luZGV4KSk7Cit9CisKK3ZvaWQgQ0NEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVySW1wbDo6YXBwZW5kQ29udHJpYnV0aW5nUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFz
c1NpbmsmIHJlbmRlclBhc3NTaW5rKQoreworICAgIEFTU0VSVChoYXNDb250cmlidXRpbmdEZWxl
Z2F0ZWRSZW5kZXJQYXNzZXMoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpIC0gMTsgKytpKSB7CisgICAgICAgIENDUmVuZGVy
UGFzczo6SWQgb3V0cHV0UmVuZGVyUGFzc0lkID0gY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJ
ZChtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpKTsKKworICAgICAgICAvLyBEb24n
dCBjbGFzaCB3aXRoIHRoZSBSZW5kZXJQYXNzIHdlIGdlbmVyYXRlIGlmIHdlIG93biBhIFJlbmRl
clN1cmZhY2UuCisgICAgICAgIEFTU0VSVChvdXRwdXRSZW5kZXJQYXNzSWQuaW5kZXggPiAwKTsK
KworICAgICAgICByZW5kZXJQYXNzU2luay5hcHBlbmRSZW5kZXJQYXNzKG1fcmVuZGVyUGFzc2Vz
SW5EcmF3T3JkZXJbaV0tPmNvcHkob3V0cHV0UmVuZGVyUGFzc0lkKSk7CisgICAgfQorfQorCit2
b2lkIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhKQoreworICAgIGlm
IChtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQ0NSZW5kZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBhcHBlbmRRdWFkc0Rh
dGEucmVuZGVyUGFzc0lkOworCisgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByZW5kZXJQYXNz
SWQgaXMgMCwgdGhlbiBpdCBpcyBhIHJlbmRlclBhc3MgZ2VuZXJhdGVkIGZvciBhIGxheWVyCisg
ICAgLy8gaW4gdGhpcyBjb21wb3NpdG9yLCBub3QgdGhlIGRlbGVnYXRlZCByZW5kZXJlci4gVGhl
biB3ZSB3YW50IHRvIG1lcmdlIG91ciByb290IHJlbmRlclBhc3Mgd2l0aAorICAgIC8vIHRoZSB0
YXJnZXQgcmVuZGVyUGFzcy4gT3RoZXJ3aXNlLCBpdCBpcyBzb21lIHJlbmRlclBhc3Mgd2hpY2gg
d2UgYWRkZWQgZnJvbSB0aGUgZGVsZWdhdGVkCisgICAgLy8gcmVuZGVyZXIuCisgICAgYm9vbCBz
aG91bGRNZXJnZVJvb3RSZW5kZXJQYXNzV2l0aFRhcmdldCA9ICF0YXJnZXRSZW5kZXJQYXNzSWQu
aW5kZXg7CisgICAgaWYgKHNob3VsZE1lcmdlUm9vdFJlbmRlclBhc3NXaXRoVGFyZ2V0KSB7Cisg
ICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSByZW5kZXJQYXNzIHdlIGFyZSBhcHBlbmRpbmcgdG8g
aXMgY3JlYXRlZCBvdXIgcmVuZGVyVGFyZ2V0LgorICAgICAgICBBU1NFUlQodGFyZ2V0UmVuZGVy
UGFzc0lkLmxheWVySWQgPT0gcmVuZGVyVGFyZ2V0KCktPmlkKCkpOworCisgICAgICAgIENDUmVu
ZGVyUGFzcyogcm9vdERlbGVnYXRlZFJlbmRlclBhc3MgPSBtX3JlbmRlclBhc3Nlc0luRHJhd09y
ZGVyLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgYXBwZW5kUmVuZGVyUGFzc1F1YWRzKHF1YWRTaW5r
LCBhcHBlbmRRdWFkc0RhdGEsIHJvb3REZWxlZ2F0ZWRSZW5kZXJQYXNzKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcmVuZGVyUGFzcyB3ZSBhcmUgYXBwZW5kaW5n
IHRvIHdhcyBjcmVhdGVkIGJ5IHVzLgorICAgICAgICBBU1NFUlQodGFyZ2V0UmVuZGVyUGFzc0lk
LmxheWVySWQgPT0gaWQoKSk7CisKKyAgICAgICAgaW50IHJlbmRlclBhc3NJbmRleCA9IGlkVG9J
bmRleCh0YXJnZXRSZW5kZXJQYXNzSWQuaW5kZXgpOworICAgICAgICBDQ1JlbmRlclBhc3MqIGRl
bGVnYXRlZFJlbmRlclBhc3MgPSBtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyW3JlbmRlclBhc3NJ
bmRleF0uZ2V0KCk7CisgICAgICAgIGFwcGVuZFJlbmRlclBhc3NRdWFkcyhxdWFkU2luaywgYXBw
ZW5kUXVhZHNEYXRhLCBkZWxlZ2F0ZWRSZW5kZXJQYXNzKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6YXBwZW5kUmVuZGVyUGFzc1F1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhLCBDQ1JlbmRl
clBhc3MqIGRlbGVnYXRlZFJlbmRlclBhc3MpIGNvbnN0Cit7CisgICAgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqIGN1cnJlbnRTaGFyZWRRdWFkU3RhdGUgPSAwOworICAgIENDU2hhcmVkUXVhZFN0
YXRlKiBjb3BpZWRTaGFyZWRRdWFkU3RhdGUgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGVsZWdhdGVkUmVuZGVyUGFzcy0+cXVhZExpc3QoKS5zaXplKCk7ICsraSkgeworICAgICAg
ICBDQ0RyYXdRdWFkKiBxdWFkID0gZGVsZWdhdGVkUmVuZGVyUGFzcy0+cXVhZExpc3QoKVtpXS5n
ZXQoKTsKKworICAgICAgICBpZiAocXVhZC0+c2hhcmVkUXVhZFN0YXRlKCkgIT0gY3VycmVudFNo
YXJlZFF1YWRTdGF0ZSkgeworICAgICAgICAgICAgY3VycmVudFNoYXJlZFF1YWRTdGF0ZSA9IHF1
YWQtPnNoYXJlZFF1YWRTdGF0ZSgpOworICAgICAgICAgICAgY29waWVkU2hhcmVkUXVhZFN0YXRl
ID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGN1cnJlbnRTaGFyZWRRdWFkU3RhdGUtPmNv
cHkoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGNvcGllZFNoYXJlZFF1YWRTdGF0ZSk7
CisKKyAgICAgICAgYm9vbCB0YXJnZXRJc0Zyb21EZWxlZ2F0ZWRSZW5kZXJlckxheWVyID0gYXBw
ZW5kUXVhZHNEYXRhLnJlbmRlclBhc3NJZC5sYXllcklkID09IGlkKCk7CisgICAgICAgIGlmICgh
dGFyZ2V0SXNGcm9tRGVsZWdhdGVkUmVuZGVyZXJMYXllcikgeworICAgICAgICAgICAgLy8gU2hv
dWxkIGJlIHRoZSByb290IHJlbmRlciBwYXNzLgorICAgICAgICAgICAgQVNTRVJUKGRlbGVnYXRl
ZFJlbmRlclBhc3MgPT0gbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5sYXN0KCkpOworICAgICAg
ICAgICAgLy8gVGhpcyBsYXllciBtdXN0IGJlIGRyYXdpbmcgdG8gYSByZW5kZXJUYXJnZXQgb3Ro
ZXIgdGhhbiBpdHNlbGYuCisgICAgICAgICAgICBBU1NFUlQocmVuZGVyVGFyZ2V0KCkgIT0gdGhp
cyk7CisKKyAgICAgICAgICAgIGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybSA9
IGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybSAqIGRyYXdUcmFuc2Zvcm0oKTsK
KyAgICAgICAgICAgIGNvcGllZFNoYXJlZFF1YWRTdGF0ZS0+b3BhY2l0eSAqPSBkcmF3T3BhY2l0
eSgpOworICAgICAgICB9CisKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IGNvcHlRdWFkOwor
ICAgICAgICBpZiAocXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzKQor
ICAgICAgICAgICAgY29weVF1YWQgPSBxdWFkLT5jb3B5KGNvcGllZFNoYXJlZFF1YWRTdGF0ZSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdEZWxlZ2F0ZWRSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzczo6SWQg
Y29udHJpYnV0aW5nUmVuZGVyUGFzc0lkID0gY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJZChj
b250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAgQVNTRVJUKGNv
bnRyaWJ1dGluZ1JlbmRlclBhc3NJZCAhPSBhcHBlbmRRdWFkc0RhdGEucmVuZGVyUGFzc0lkKTsK
KworICAgICAgICAgICAgY29weVF1YWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWQpLT5jb3B5KGNvcGllZFNoYXJlZFF1YWRTdGF0ZSwgY29udHJpYnV0aW5nUmVuZGVy
UGFzc0lkKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoY29weVF1YWQpOworCisgICAgICAg
IHF1YWRTaW5rLmFwcGVuZChjb3B5UXVhZC5yZWxlYXNlKCksIGFwcGVuZFF1YWRzRGF0YSk7Cisg
ICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZkZDM4ZWMyOTA3MjRjNDNiOGZlOWQwZWE3ZDlkZjg2NWMy
Njk0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwuaApAQCAtMCwwICsxLDY1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsX2gKKyNkZWZp
bmUgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbF9oCisKKyNpbmNsdWRlICJDQ0xheWVySW1w
bC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRGVsZWdhdGVkUmVuZGVyZXJMYXll
ckltcGw+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsKGlkKSk7IH0KKyAgICB2aXJ0dWFsIH5DQ0RlbGVnYXRlZFJlbmRlcmVy
TGF5ZXJJbXBsKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgZGVzY2VuZGFudERyYXdzQ29udGVudCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5k
ZXJQYXNzZXMoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIFRoaXMgZ2l2ZXMgb3duZXJzaGlw
IG9mIHRoZSBSZW5kZXJQYXNzZXMgdG8gdGhlIGxheWVyLgorICAgIHZvaWQgc2V0UmVuZGVyUGFz
c2VzKFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+Jik7CisKKyAgICB2b2lkIGFwcGVuZENv
bnRyaWJ1dGluZ1JlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJik7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYpIE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwo
aW50KTsKKworICAgIENDUmVuZGVyUGFzczo6SWQgY29udmVydERlbGVnYXRlZFJlbmRlclBhc3NJ
ZChDQ1JlbmRlclBhc3M6OklkIGRlbGVnYXRlZFJlbmRlclBhc3NJZCkgY29uc3Q7CisKKyAgICB2
b2lkIGFwcGVuZFJlbmRlclBhc3NRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEm
LCBDQ1JlbmRlclBhc3MqIGZyb21EZWxlZ2F0ZWRSZW5kZXJQYXNzKSBjb25zdDsKKworICAgIFBh
c3NPd25QdHI8Q0NEcmF3UXVhZD4gY3JlYXRlQ29weU9mUXVhZChjb25zdCBDQ0RyYXdRdWFkKik7
CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gIkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIiOyB9CisKKyAgICBWZWN0b3I8
T3duUHRyPENDUmVuZGVyUGFzcz4gPiBtX3JlbmRlclBhc3Nlc0luRHJhd09yZGVyOworICAgIEhh
c2hNYXA8Q0NSZW5kZXJQYXNzOjpJZCwgaW50PiBtX3JlbmRlclBhc3Nlc0luZGV4QnlJZDsKK307
CisKK30KKworI2VuZGlmIC8vIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmgKaW5kZXggZjhhZDA2NzAxYTYwZWE5OGQwYmFjZTM4NWIwZDM3MTMzNDllMmRj
Zi4uY2IwZWVhMmI4YjhkZjY3NDBmODc4MWMwZWY1ZTBkZWJhZGI0MTRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCkBAIC0xMDIsNiArMTAyLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29uc3Q7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc2VzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCiAgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7
CiAgICAgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQ29udGVudDsg
fQpAQCAtMTEwLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvcmNlUmVuZGVyU3Vy
ZmFjZShib29sIGZvcmNlKSB7IG1fZm9yY2VSZW5kZXJTdXJmYWNlID0gZm9yY2U7IH0KIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMgaGFzIGNv
bnRlbnQgdG8gZHJhdy4KLSAgICBib29sIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZGVzY2VuZGFudERyYXdzQ29udGVudCgpOwogCiAgICAgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCAyMTQwZGYwNTZhNGNlM2EwMDFhOGQyYzc0
NTE4NzZlMjNiZjk2MTA2Li5jMWEwYzY0ZmI0MzE3ZmVjNDgzOWFkMDQwYmU2ZDBjMjQ3NzRiMmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTM1Myw3
ICszNTMsNyBAQCB2b2lkIHNldHVwUm9vdExheWVyQW5kU3VyZmFjZUZvclJlY3Vyc2lvbihMYXll
clR5cGUqIHJvb3RMYXllciwgTGF5ZXJMaXN0JiByZW5kZQogICAgICAgICByb290TGF5ZXItPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKIAogICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGRldmljZVZpZXdwb3J0U2l6
ZSkpOwotICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5jbGVhckxheWVyTGlzdCgpOwor
ICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5jbGVhckxheWVyTGlzdHMoKTsKIAogICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmlzRW1wdHkoKSk7CiAgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocm9vdExheWVyKTsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIs
IExheWVyVHlwZSogcm9vdExheQogICAgICAgICAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKIAogICAgICAgICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVyU3VyZmFjZSA9IGxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0
KCk7CisgICAgICAgIHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0cygpOwogCiAgICAgICAg
IC8vIFRoZSBvcmlnaW4gb2YgdGhlIG5ldyBzdXJmYWNlIGlzIHRoZSB1cHBlciBsZWZ0IGNvcm5l
ciBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0o
ZHJhd1RyYW5zZm9ybSk7CkBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RM
YXkKICAgICAgICAgY2xpcHBlZENvbnRlbnRSZWN0LnNldEhlaWdodChzdGQ6Om1pbihjbGlwcGVk
Q29udGVudFJlY3QuaGVpZ2h0KCksIG1heFRleHR1cmVTaXplKSk7CiAKICAgICAgICAgaWYgKGNs
aXBwZWRDb250ZW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5j
bGVhckxheWVyTGlzdCgpOworICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxp
c3RzKCk7CiAKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3QoY2xpcHBlZENv
bnRlbnRSZWN0KTsKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zv
cm0obGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwpAQCAtNzY1LDcgKzc2NSw4IEBAIHN0
YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXll
ciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgZWxzZQogICAgICAgICBkcmF3YWJsZUNvbnRlbnRS
ZWN0T2ZTdWJ0cmVlID0gbG9jYWxEcmF3YWJsZUNvbnRlbnRSZWN0T2ZTdWJ0cmVlOwogCi0gICAg
cmV0dXJuOworICAgIGlmIChsYXllci0+aGFzQ29udHJpYnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFz
c2VzKCkpCisgICAgICAgIGxheWVyLT5yZW5kZXJUYXJnZXQoKS0+cmVuZGVyU3VyZmFjZSgpLT5h
ZGRDb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXIobGF5ZXIpOwogfQogCiAvLyBG
SVhNRTogSW5zdGVhZCBvZiB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIHRvIHNldCB2aXNp
YmlsaXR5IHJlY3RzIG9uIGEgc2Vjb25kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDNkYjBlMGZmN2Q0NzIyYTYyYTYxOWJhNGY2MGM4NWFkMjk2MTQwN2EuLjZj
NjFjMTFhZjcxZGVmYmVkMmE2ZmQxNGRkMDE1NzBjYjI1NWY2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKIAog
ICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwogCi0gICAgICAgIENDQXBw
ZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKKyAgICAgICAgQ0NBcHBlbmRRdWFkc0RhdGEg
YXBwZW5kUXVhZHNEYXRhKHRhcmdldFJlbmRlclBhc3MtPmlkKCkpOwogCiAgICAgICAgIGlmIChp
dC5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBD
Q1JlbmRlclBhc3M6OklkIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCA9IGl0LT5yZW5kZXJTdXJm
YWNlKCktPnJlbmRlclBhc3NJZCgpOwpAQCAtMzE3LDYgKzMxNywyMSBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAg
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSk7CiAgICAgICAgICAgICAgICAgZnJhbWUud2lsbERyYXdMYXllcnMuYXBw
ZW5kKCppdCk7CisKKyAgICAgICAgICAgICAgICBpZiAoaXQtPmhhc0NvbnRyaWJ1dGluZ0RlbGVn
YXRlZFJlbmRlclBhc3NlcygpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXNb
aV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUGFzcyA9PSB0YXJnZXRSZW5k
ZXJQYXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHJlbmRlclBhc3NHZW5lcmF0aW5nTGF5ZXJJZCA9IHJlbmRlclBh
c3MtPmlkKCkubGF5ZXJJZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJQYXNz
R2VuZXJhdGluZ0xheWVySWQgIT0gaXQtPmlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YShyZW5kZXJQYXNzLT5pZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tl
ciwgYXBwZW5kUXVhZHNEYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKwogICAgICAgICAgICAgICAgIHRhcmdldFJlbmRlclBhc3MtPmFwcGVuZFF1YWRzRm9y
TGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggMTYz
OTNiOTMwZDkxNGE1ZGVjOTdlMzJhYjgyOWRiNDkzZmYxN2ZiZS4uYWY5ZWE0NzNmZjY1MWJiNmIz
YzQ3ZjM0ZTYxMDBmZTcyNTkyNWIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJDQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJDQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRl
cmVyTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ01h
dGhVdGlsLmgiCiAjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgpAQCAtMTYxLDYgKzE2MiwxOSBAQCBi
b29sIENDUmVuZGVyU3VyZmFjZTo6c3VyZmFjZVByb3BlcnR5Q2hhbmdlZE9ubHlGcm9tRGVzY2Vu
ZGFudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFjZVByb3BlcnR5Q2hhbmdlZCAmJiAhbV9v
d25pbmdMYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKIH0KIAordm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmFkZENvbnRyaWJ1dGluZ0RlbGVnYXRlZFJlbmRlclBhc3NMYXllcihDQ0xheWVySW1w
bCogbGF5ZXIpCit7CisgICAgQVNTRVJUKG1fbGF5ZXJMaXN0LmNvbnRhaW5zKGxheWVyKSk7Cisg
ICAgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCogZGVsZWdhdGVkUmVuZGVyZXJMYXllciA9
IHN0YXRpY19jYXN0PENDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwqPihsYXllcik7CisgICAg
bV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0LmFwcGVuZChkZWxlZ2F0
ZWRSZW5kZXJlckxheWVyKTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmNsZWFyTGF5ZXJM
aXN0cygpCit7CisgICAgbV9sYXllckxpc3QuY2xlYXIoKTsKKyAgICBtX2NvbnRyaWJ1dGluZ0Rl
bGVnYXRlZFJlbmRlclBhc3NMYXllckxpc3QuY2xlYXIoKTsKK30KKwogc3RhdGljIGlubGluZSBJ
bnRSZWN0IGNvbXB1dGVDbGlwcGVkUmVjdEluVGFyZ2V0KGNvbnN0IENDTGF5ZXJJbXBsKiBvd25p
bmdMYXllcikKIHsKICAgICBBU1NFUlQob3duaW5nTGF5ZXItPnBhcmVudCgpKTsKQEAgLTE5MSw2
ICsyMDUsOSBAQCBDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lk
KCkKIAogdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBh
c3NTaW5rJiBwYXNzU2luaykKIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29udHJp
YnV0aW5nRGVsZWdhdGVkUmVuZGVyUGFzc0xheWVyTGlzdC5zaXplKCk7ICsraSkKKyAgICAgICAg
bV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0W2ldLT5hcHBlbmRDb250
cmlidXRpbmdSZW5kZXJQYXNzZXMocGFzc1NpbmspOworCiAgICAgT3duUHRyPENDUmVuZGVyUGFz
cz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclBhc3NJZCgpLCBtX2NvbnRlbnRS
ZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBwYXNzLT5zZXREYW1hZ2VSZWN0KG1f
ZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFnZVJlY3QoKSk7CiAgICAgcGFzcy0+c2V0RmlsdGVy
cyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApp
bmRleCAyZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNmNjYxM2ZkLi42MzIyMGEwNWUw
ZGEwYWJiMDhlODNmYTRlYTJlMjk4YTJmZjEwOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuaApAQCAtNDAsNiArNDAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0Rh
bWFnZVRyYWNrZXI7CitjbGFzcyBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOwogY2xhc3Mg
Q0NRdWFkU2luazsKIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsK
QEAgLTk1LDggKzk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCi0gICAgdm9pZCBjbGVhckxheWVyTGlzdCgpIHsgbV9sYXll
ckxpc3QuY2xlYXIoKTsgfQogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QoKSB7
IHJldHVybiBtX2xheWVyTGlzdDsgfQorICAgIHZvaWQgYWRkQ29udHJpYnV0aW5nRGVsZWdhdGVk
UmVuZGVyUGFzc0xheWVyKENDTGF5ZXJJbXBsKik7CisgICAgdm9pZCBjbGVhckxheWVyTGlzdHMo
KTsKIAogICAgIGludCBvd25pbmdMYXllcklkKCkgY29uc3Q7CiAKQEAgLTEzMSw2ICsxMzMsNyBA
QCBwcml2YXRlOgogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKIAogICAgIFZlY3RvcjxDQ0xheWVy
SW1wbCo+IG1fbGF5ZXJMaXN0OworICAgIFZlY3RvcjxDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsKj4gbV9jb250cmlidXRpbmdEZWxlZ2F0ZWRSZW5kZXJQYXNzTGF5ZXJMaXN0OwogCiAgICAg
Ly8gVGhlIG5lYXJlc3QgYW5jZXN0b3IgdGFyZ2V0IHN1cmZhY2UgdGhhdCB3aWxsIGNvbnRhaW4g
dGhlIGNvbnRlbnRzIG9mIHRoaXMgc3VyZmFjZSwgYW5kIHRoYXQgaXMgZ29pbmcKICAgICAvLyB0
byBtb3ZlIHBpeGVscyB3aXRoaW4gdGhlIHN1cmZhY2UgKHN1Y2ggYXMgd2l0aCBhIGJsdXIpLiBU
aGlzIGNhbiBwb2ludCB0byBpdHNlbGYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXgg
YjNlYjk1NGViMDlkMDYwNmU5YTNhYjQxZDQ2MjA5MDVlNWUyMmY2OC4uOThjMmQ3ZTBlNGI0YTlh
MTZjOTAxNjhiMDVlNjlkYjQzODVlNzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtNDk4LDYgKzQ5OCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEYXRhYmFzZS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGF0YVNvdXJjZUltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkRhdGFTb3VyY2VJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNBZ2VudEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2VG9vbHNGcm9udGVuZElt
cGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDgwY2YxZDI0NWQxMmNm
ZDVkYzhjNmFlYjY5ZjhmMTg1MjE3NDhjMTAuLjU5ZGRhNzcwYWY2YWJkOTg0MDdiZTg2MzMwNjMy
ZGU5ZDJmNmIxM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtMTE3LDYgKzEx
Nyw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9DQ0RlbGF5QmFzZWRUaW1lU291cmNlVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3Rz
L0NDRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NEcmF3UXVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0ZyYW1lUmF0ZUNv
bnRyb2xsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NHZW9tZXRyeVRlc3RVdGls
cy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZWxl
Z2F0ZWRSZW5kZXJlckxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjJhMGNlOWFiMDNhZWI3MjRmYzA0
Y2NkOTg2YjNhM2JkNGU1MDQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5jcHAKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllci5oPgorCisjaW5jbHVkZSAiRGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwgOiBwdWJsaWMgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJD
b3JlOjpEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbCgpOworCisgICAgLy8gV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9
OworCitXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbDo6V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwoUGFzc1JlZlB0cjxEZWxlZ2F0ZWRSZW5kZXJlckxheWVyQ2hyb21pdW0+IGxheWVy
KQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9
CisKK1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJM
YXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKworV2ViRGVsZWdh
dGVkUmVuZGVyZXJMYXllciogV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcjo6Y3JlYXRlKCkKK3sK
KyAgICBSZWZQdHI8RGVsZWdhdGVkUmVuZGVyZXJMYXllckNocm9taXVtPiBsYXllciA9IERlbGVn
YXRlZFJlbmRlcmVyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIG5ldyBXZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
RGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IGU1MGExZjcwYWJmMDU5Y2I2NjQ1MzMyYmZkZDc3
Y2EzNmI4Nzg5NzguLjY4NTc2ODAxYjg4MTJkNTk4MDZlY2UwNGI4YTdlM2ZjY2VkNmE4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJU
ZXN0LmNwcApAQCAtMTExNiw3ICsxMTE2LDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3Qs
IHZlcmlmeURhbWFnZUZvckVtcHR5TGF5ZXJMaXN0KQogCiAgICAgQVNTRVJUX1RSVUUocm9vdCA9
PSByb290LT5yZW5kZXJUYXJnZXQoKSk7CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJm
YWNlID0gcm9vdC0+cmVuZGVyU3VyZmFjZSgpOwotICAgIHRhcmdldFN1cmZhY2UtPmNsZWFyTGF5
ZXJMaXN0KCk7CisgICAgdGFyZ2V0U3VyZmFjZS0+Y2xlYXJMYXllckxpc3RzKCk7CiAgICAgdGFy
Z2V0U3VyZmFjZS0+ZGFtYWdlVHJhY2tlcigpLT51cGRhdGVEYW1hZ2VUcmFja2luZ1N0YXRlKHRh
cmdldFN1cmZhY2UtPmxheWVyTGlzdCgpLCB0YXJnZXRTdXJmYWNlLT5vd25pbmdMYXllcklkKCks
IGZhbHNlLCBJbnRSZWN0KCksIDAsIFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7CiAKICAgICBGbG9h
dFJlY3QgZGFtYWdlUmVjdCA9IHRhcmdldFN1cmZhY2UtPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVu
dERhbWFnZVJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODMwMTM5ODQ5YzdmZjEyNGEyZmEyNTgzMjAwYjM4OGViMmY2ZDU2NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVySW1wbFRlc3QuY3BwCkBAIC0wLDAgKzEsNDEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsLmgi
CisKKyNpbmNsdWRlICJDQ0FwcGVuZFF1YWRzRGF0YS5oIgorI2luY2x1ZGUgIkNDR2VvbWV0cnlU
ZXN0VXRpbHMuaCIKKyNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3RJbXBsLmgiCisjaW5jbHVkZSAi
Q0NRdWFkU2luay5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzc0RyYXdRdWFkLmgiCisjaW5jbHVk
ZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgIkNDU29saWRDb2xvckRyYXdRdWFk
LmgiCisjaW5jbHVkZSAiQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiRmFrZVdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgiCisjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29u
dGV4dDNELmgiCisjaW5jbHVkZSAiTW9ja0NDUXVhZEN1bGxlci5oIgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisK
K3VzaW5nIFdlYktpdDo6RmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwordXNpbmcgV2Vi
S2l0OjpGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXRUZXN0czsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgQ0NEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVySW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQgeworcHVibGljOgorICAgIENDRGVsZWdhdGVkUmVuZGVyZXJMYXllcklt
cGxUZXN0KCkKKyAgICB7CisgICAgICAgIENDTGF5ZXJUcmVlU2V0dGluZ3Mgc2V0dGluZ3M7Cisg
ICAgICAgIHNldHRpbmdzLm1pbmltdW1PY2NsdXNpb25UcmFja2luZ1NpemUgPSBJbnRTaXplKCk7
CisKKyAgICAgICAgbV9ob3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0
aW5ncywgdGhpcyk7CisgICAgICAgIG1faG9zdEltcGwtPmluaXRpYWxpemVSZW5kZXJlcihjcmVh
dGVDb250ZXh0KCksIFVudGhyb3R0bGVkVXBsb2FkZXIpOworICAgICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMTApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIH0K
KworICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAg
dmlydHVhbCB2b2lkIGRpZExvc2VDb250ZXh0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVhZCgpIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblZTeW5jUGFyYW1ldGVyc0NoYW5nZWQoZG91Ymxl
LCBkb3VibGUpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkNhbkRyYXdTdGF0ZUNo
YW5nZWQoYm9vbCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzUmVkcmF3
T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQ29t
bWl0T25JbXBsVGhyZWFkKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RBbmlt
YXRpb25FdmVudHNUb01haW5UaHJlYWRPbkltcGxUaHJlYWQoUGFzc093blB0cjxDQ0FuaW1hdGlv
bkV2ZW50c1ZlY3Rvcj4sIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKSBPVkVSUklERSB7IH0KKworcHJv
dGVjdGVkOgorICAgIFBhc3NPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUNvbnRleHQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6
Y3JlYXRlKGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QpKTsKKyAgICB9CisK
KyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgbV9hbHdheXNJbXBsVGhyZWFkOworICAgIERl
YnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbV9hbHdheXNNYWluVGhyZWFkQmxvY2tlZDsK
KworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBtX2hvc3RJbXBsOworfTsKKworY2xh
c3MgRHJhd2luZ0xheWVySW1wbCA6IHB1YmxpYyBDQ1NvbGlkQ29sb3JMYXllckltcGwgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERyYXdpbmdMYXllckltcGw+IGNyZWF0ZShpbnQg
aWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBEcmF3aW5nTGF5ZXJJbXBsKGlkKSk7IH0KK3Byb3Rl
Y3RlZDoKKyAgICBleHBsaWNpdCBEcmF3aW5nTGF5ZXJJbXBsKGludCBpZCkgOiBDQ1NvbGlkQ29s
b3JMYXllckltcGwoaWQpIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9Cit9OworCitjbGFzcyBD
Q1Rlc3RSZW5kZXJQYXNzIDogcHVibGljIENDUmVuZGVyUGFzcyB7CitwdWJsaWM6CisgICAgTW9j
a0NDUXVhZEN1bGxlciBxdWFkU2luaygpIHsgcmV0dXJuIE1vY2tDQ1F1YWRDdWxsZXIobV9xdWFk
TGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0KTsgfQorfTsKKworc3RhdGljIENDVGVzdFJlbmRl
clBhc3MqIGFkZFJlbmRlclBhc3MoVmVjdG9yPE93blB0cjxDQ1JlbmRlclBhc3M+ID4mIHBhc3NM
aXN0LCBDQ1JlbmRlclBhc3M6OklkIGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHJvb3RUcmFuc2Zvcm0pCit7CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4g
cGFzcyhDQ1JlbmRlclBhc3M6OmNyZWF0ZShpZCwgb3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkp
OworICAgIENDVGVzdFJlbmRlclBhc3MqIHRlc3RQYXNzID0gc3RhdGljX2Nhc3Q8Q0NUZXN0UmVu
ZGVyUGFzcyo+KHBhc3MuZ2V0KCkpOworICAgIHBhc3NMaXN0LmFwcGVuZChwYXNzLnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIHRlc3RQYXNzOworfQorCitzdGF0aWMgQ0NTb2xpZENvbG9yRHJhd1F1
YWQqIGFkZFF1YWQoQ0NUZXN0UmVuZGVyUGFzcyogcGFzcywgSW50UmVjdCByZWN0LCBTa0NvbG9y
IGNvbG9yKQoreworICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZFNpbmsgPSBwYXNzLT5xdWFkU2lu
aygpOworICAgIENDQXBwZW5kUXVhZHNEYXRhIGRhdGEocGFzcy0+aWQoKSk7CisgICAgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKEND
U2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcmVjdCwg
cmVjdCwgMSwgZmFsc2UpKTsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yRHJhd1F1YWQ+IHF1YWQo
Q0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRTdGF0ZSwgcmVjdCwgY29sb3IpKTsK
KyAgICBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZFB0ciA9IHF1YWQuZ2V0KCk7CisgICAgcXVh
ZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpLCBkYXRhKTsKKyAgICByZXR1cm4gcXVhZFB0cjsK
K30KKworc3RhdGljIHZvaWQgYWRkUmVuZGVyUGFzc1F1YWQoQ0NUZXN0UmVuZGVyUGFzcyogdG9Q
YXNzLCBDQ1Rlc3RSZW5kZXJQYXNzKiBjb250cmlidXRpbmdQYXNzKQoreworICAgIE1vY2tDQ1F1
YWRDdWxsZXIgcXVhZFNpbmsgPSB0b1Bhc3MtPnF1YWRTaW5rKCk7CisgICAgQ0NBcHBlbmRRdWFk
c0RhdGEgZGF0YSh0b1Bhc3MtPmlkKCkpOworICAgIEludFJlY3Qgb3V0cHV0UmVjdCA9IGNvbnRy
aWJ1dGluZ1Bhc3MtPm91dHB1dFJlY3QoKTsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
U3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoQ0NTaGFyZWRRdWFkU3RhdGU6OmNy
ZWF0ZShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBvdXRwdXRSZWN0LCBvdXRwdXRSZWN0LCAx
LCBmYWxzZSkpOworICAgIE93blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gcXVhZChDQ1JlbmRl
clBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFN0YXRlLCBvdXRwdXRSZWN0LCBjb250cmlidXRp
bmdQYXNzLT5pZCgpLCBmYWxzZSwgMCwgb3V0cHV0UmVjdCwgMCwgMCwgMCwgMCkpOworICAgIHF1
YWRTaW5rLmFwcGVuZChxdWFkLnJlbGVhc2UoKSwgZGF0YSk7Cit9CisKK2NsYXNzIENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlIDogcHVibGljIENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJ
bXBsVGVzdFNpbXBsZSgpCisgICAgICAgIDogQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRl
c3QoKQorICAgICAgICAsIG1fcm9vdExheWVyKENDU29saWRDb2xvckxheWVySW1wbDo6Y3JlYXRl
KDEpKQorICAgICAgICAsIG1fbGF5ZXJCZWZvcmUoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVh
dGUoMikpCisgICAgICAgICwgbV9sYXllckFmdGVyKENDU29saWRDb2xvckxheWVySW1wbDo6Y3Jl
YXRlKDMpKQorICAgICAgICAsIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllcihDQ0RlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJJbXBsOjpjcmVhdGUoNCkpCisgICAgeworICAgICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAg
ICAgICAgbV9yb290TGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7CisKKyAgICAg
ICAgbV9sYXllckJlZm9yZS0+c2V0UG9zaXRpb24oSW50UG9pbnQoMjAsIDIwKSk7CisgICAgICAg
IG1fbGF5ZXJCZWZvcmUtPnNldEJvdW5kcyhJbnRTaXplKDE0LCAxNCkpOworICAgICAgICBtX2xh
eWVyQmVmb3JlLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTQsIDE0KSk7CisgICAgICAgIG1f
bGF5ZXJCZWZvcmUtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICAgICAgbV9sYXllckJlZm9y
ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworCisgICAgICAgIG1fbGF5ZXJBZnRlci0+
c2V0UG9zaXRpb24oSW50UG9pbnQoNSwgNSkpOworICAgICAgICBtX2xheWVyQWZ0ZXItPnNldEJv
dW5kcyhJbnRTaXplKDE1LCAxNSkpOworICAgICAgICBtX2xheWVyQWZ0ZXItPnNldENvbnRlbnRC
b3VuZHMoSW50U2l6ZSgxNSwgMTUpKTsKKyAgICAgICAgbV9sYXllckFmdGVyLT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7CisgICAgICAgIG1fbGF5ZXJBZnRlci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNl
KHRydWUpOworCisgICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0UG9zaXRpb24o
SW50UG9pbnQoMywgMykpOworICAgICAgICBtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgICAgICBtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXIt
PnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgbV9kZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxLCAx
KTsKKyAgICAgICAgbV9kZWxlZ2F0ZWRSZW5kZXJlckxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKKworICAgICAgICBWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiBkZWxlZ2F0ZWRS
ZW5kZXJQYXNzZXM7CisgICAgICAgIENDVGVzdFJlbmRlclBhc3MqIHBhc3MxID0gYWRkUmVuZGVy
UGFzcyhkZWxlZ2F0ZWRSZW5kZXJQYXNzZXMsIENDUmVuZGVyUGFzczo6SWQoOSwgNiksIEludFJl
Y3QoNiwgNiwgNiwgNiksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBhZGRR
dWFkKHBhc3MxLCBJbnRSZWN0KDAsIDAsIDYsIDYpLCAzM3UpOworICAgICAgICBDQ1Rlc3RSZW5k
ZXJQYXNzKiBwYXNzMiA9IGFkZFJlbmRlclBhc3MoZGVsZWdhdGVkUmVuZGVyUGFzc2VzLCBDQ1Jl
bmRlclBhc3M6OklkKDksIDcpLCBJbnRSZWN0KDcsIDcsIDcsIDcpLCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgYWRkUXVhZChwYXNzMiwgSW50UmVjdCgwLCAwLCA3LCA3KSwg
MjJ1KTsKKyAgICAgICAgYWRkUmVuZGVyUGFzc1F1YWQocGFzczIsIHBhc3MxKTsKKyAgICAgICAg
Q0NUZXN0UmVuZGVyUGFzcyogcGFzczMgPSBhZGRSZW5kZXJQYXNzKGRlbGVnYXRlZFJlbmRlclBh
c3NlcywgQ0NSZW5kZXJQYXNzOjpJZCg5LCA4KSwgSW50UmVjdCg4LCA4LCA4LCA4KSwgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGFkZFJlbmRlclBhc3NRdWFkKHBhc3MzLCBw
YXNzMik7CisgICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllci0+c2V0UmVuZGVyUGFzc2Vz
KGRlbGVnYXRlZFJlbmRlclBhc3Nlcyk7CisKKyAgICAgICAgLy8gVGhlIFJlbmRlclBhc3NlcyBz
aG91bGQgYmUgdGFrZW4gYnkgdGhlIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVEoMHUsIGRlbGVn
YXRlZFJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgICAgIG1fcm9vdExheWVyUHRyID0gbV9y
b290TGF5ZXIuZ2V0KCk7CisgICAgICAgIG1fbGF5ZXJCZWZvcmVQdHIgPSBtX2xheWVyQmVmb3Jl
LmdldCgpOworICAgICAgICBtX2xheWVyQWZ0ZXJQdHIgPSBtX2xheWVyQWZ0ZXIuZ2V0KCk7Cisg
ICAgICAgIG1fZGVsZWdhdGVkUmVuZGVyZXJMYXllclB0ciA9IG1fZGVsZWdhdGVkUmVuZGVyZXJM
YXllci5nZXQoKTsKKworICAgICAgICAvLyBGb3JjZSB0aGUgZGVsZWdhdGVkIFJlbmRlclBhc3Nl
cyB0byBjb21lIGJlZm9yZSB0aGUgUmVuZGVyUGFzcyBmcm9tIG1fbGF5ZXJBZnRlci4KKyAgICAg
ICAgbV9sYXllckFmdGVyLT5hZGRDaGlsZChtX2RlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFz
ZSgpKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXJBZnRlci5yZWxlYXNl
KCkpOworCisgICAgICAgIC8vIEdldCB0aGUgUmVuZGVyUGFzcyBnZW5lcmF0ZWQgYnkgbV9sYXll
ckJlZm9yZSB0byBjb21lIGJlZm9yZSB0aGUgZGVsZWdhdGVkIFJlbmRlclBhc3Nlcy4KKyAgICAg
ICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXJCZWZvcmUucmVsZWFzZSgpKTsKKworICAg
ICAgICBtX2hvc3RJbXBsLT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIucmVsZWFzZSgpKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBtX3Jv
b3RMYXllcjsKKyAgICBPd25QdHI8Q0NTb2xpZENvbG9yTGF5ZXJJbXBsPiBtX2xheWVyQmVmb3Jl
OworICAgIE93blB0cjxDQ1NvbGlkQ29sb3JMYXllckltcGw+IG1fbGF5ZXJBZnRlcjsKKyAgICBP
d25QdHI8Q0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbD4gbV9kZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyOworCisgICAgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKiBtX3Jvb3RMYXllclB0cjsKKyAgICBD
Q1NvbGlkQ29sb3JMYXllckltcGwqIG1fbGF5ZXJCZWZvcmVQdHI7CisgICAgQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsKiBtX2xheWVyQWZ0ZXJQdHI7CisgICAgQ0NEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
SW1wbCogbV9kZWxlZ2F0ZWRSZW5kZXJlckxheWVyUHRyOworfTsKKworVEVTVF9GKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlLCBBZGRzQ29udHJpYnV0aW5nUmVuZGVyUGFz
c2VzKQoreworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKKyAgICBF
WFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7CisgICAgbV9ob3N0
SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVy
cyhmcmFtZSk7CisKKyAgICAvLyBFYWNoIG5vbi1EZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFkZGVk
IG9uZSBSZW5kZXJQYXNzLiBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCB0d28gY29u
dHJpYnV0aW5nIHBhc3Nlcy4KKyAgICBBU1NFUlRfRVEoNXUsIGZyYW1lLnJlbmRlclBhc3Nlcy5z
aXplKCkpOworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUg
YWRkZWQgaXRzIGNvbnRyaWJ1dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVY
UEVDVF9FUSg0LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQ
RUNUX0VRKDEsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNU
X0VRKDQsIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKyAgICAvLyBBbmQgYWxs
IG90aGVyIFJlbmRlclBhc3NlcyBzaG91bGQgYmUgbm9uLWRlbGVnYXRlZC4KKyAgICBFWFBFQ1Rf
TkUoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5pZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9F
USgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPmlkKCkuaW5kZXgpOworICAgIEVYUEVDVF9ORSg0
LCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDAs
IGZyYW1lLnJlbmRlclBhc3Nlc1szXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX05FKDQsIGZy
YW1lLnJlbmRlclBhc3Nlc1s0XS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMCwgZnJh
bWUucmVuZGVyUGFzc2VzWzRdLT5pZCgpLmluZGV4KTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyIHNob3VsZCBoYXZlIGFkZGVkIGl0cyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZy
YW1lIGluIG9yZGVyLgorICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNiwgNiwgNiwgNiksIGZy
YW1lLnJlbmRlclBhc3Nlc1sxXS0+b3V0cHV0UmVjdCgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJ
bnRSZWN0KDcsIDcsIDcsIDcpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPm91dHB1dFJlY3QoKSk7
Cit9CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdFNpbXBsZSwgQWRk
c1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQYXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0
SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBh
cmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAg
ICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9u
LURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0
ZWRSZW5kZXJlckxheWVyIGFkZGVkIHR3byBjb250cmlidXRpbmcgcGFzc2VzLgorICAgIEFTU0VS
VF9FUSg1dSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7CisKKyAgICAvLyBUaGUgRGVsZWdh
dGVkUmVuZGVyZXJMYXllciBzaG91bGQgaGF2ZSBhZGRlZCBpdHMgY29udHJpYnV0aW5nIFJlbmRl
clBhc3NlcyB0byB0aGUgZnJhbWUuCisgICAgRVhQRUNUX0VRKDQsIGZyYW1lLnJlbmRlclBhc3Nl
c1sxXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMSwgZnJhbWUucmVuZGVyUGFzc2Vz
WzFdLT5pZCgpLmluZGV4KTsKKyAgICBFWFBFQ1RfRVEoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzJd
LT5pZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9FUSgyLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0t
PmlkKCkuaW5kZXgpOworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxk
IGhhdmUgYWRkZWQgY29waWVzIG9mIGl0cyBxdWFkcyB0byBjb250cmlidXRpbmcgUmVuZGVyUGFz
c2VzLgorICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgp
LnNpemUoKSk7CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA2LCA2KSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKKworICAgIC8vIFZl
cmlmeSBpdCBhZGRlZCB0aGUgcmlnaHQgcXVhZHMuCisgICAgQVNTRVJUX0VRKDJ1LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJ
bnRSZWN0KDAsIDAsIDcsIDcpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KClbMF0t
PnF1YWRSZWN0KCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNiwgNiwgNiwgNiksIGZy
YW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVsxXS0+cXVhZFJlY3QoKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDAsIDAsIDYsIDYpLCBmcmFtZS5yZW5kZXJQYXNzZXNb
MV0tPnF1YWRMaXN0KClbMF0tPnF1YWRSZWN0KCkpOworfQorCitURVNUX0YoQ0NEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVySW1wbFRlc3RTaW1wbGUsIEFkZHNRdWFkc1RvVGFyZ2V0UmVuZGVyUGFzcykK
K3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNU
X1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwt
PmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJh
bWUpOworCisgICAgLy8gRWFjaCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUg
UmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1
dGluZyBwYXNzZXMuCisgICAgQVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgp
KTsKKworICAgIC8vIFRoZSBsYXllcidzIHRhcmdldCBpcyB0aGUgUmVuZGVyUGFzcyBmcm9tIG1f
bGF5ZXJBZnRlci4KKyAgICBFWFBFQ1RfRVEoQ0NSZW5kZXJQYXNzOjpJZCgzLCAwKSwgZnJhbWUu
cmVuZGVyUGFzc2VzWzNdLT5pZCgpKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIHNob3VsZCBoYXZlIGFkZGVkIGNvcGllcyBvZiBxdWFkcyBpbiBpdHMgcm9vdCBSZW5kZXJQ
YXNzIHRvIGl0cyB0YXJnZXQgUmVuZGVyUGFzcy4KKyAgICAvLyBUaGUgbV9sYXllckFmdGVyIGFs
c28gYWRkcyBvbmUgcXVhZC4KKyAgICBBU1NFUlRfRVEoMnUsIGZyYW1lLnJlbmRlclBhc3Nlc1sz
XS0+cXVhZExpc3QoKS5zaXplKCkpOworCisgICAgLy8gVmVyaWZ5IGl0IGFkZGVkIHRoZSByaWdo
dCBxdWFkcy4KKyAgICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDcsIDcsIDcsIDcpLCBmcmFtZS5y
ZW5kZXJQYXNzZXNbM10tPnF1YWRMaXN0KClbMF0tPnF1YWRSZWN0KCkpOworCisgICAgLy8gSXRz
IHRhcmdldCBsYXllciBzaG91bGQgaGF2ZSBhIHF1YWQgYXMgd2VsbC4KKyAgICBFWFBFQ1RfUkVD
VF9FUShJbnRSZWN0KDAsIDAsIDE1LCAxNSksIGZyYW1lLnJlbmRlclBhc3Nlc1szXS0+cXVhZExp
c3QoKVsxXS0+cXVhZFJlY3QoKSk7Cit9CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5
ZXJJbXBsVGVzdFNpbXBsZSwgUXVhZHNGcm9tUm9vdFJlbmRlclBhc3NBcmVNb2RpZmllZEZvclRo
ZVRhcmdldCkKK3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Cisg
ICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRvRHJhdyhmcmFtZSkpOworICAgIG1f
aG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1faG9zdEltcGwtPmRpZERyYXdBbGxM
YXllcnMoZnJhbWUpOworCisgICAgLy8gRWFjaCBub24tRGVsZWdhdGVkUmVuZGVyZXJMYXllciBh
ZGRlZCBvbmUgUmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRkZWQgdHdv
IGNvbnRyaWJ1dGluZyBwYXNzZXMuCisgICAgQVNTRVJUX0VRKDV1LCBmcmFtZS5yZW5kZXJQYXNz
ZXMuc2l6ZSgpKTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGlzIGF0IHBv
c2l0aW9uIDMsMyBjb21wYXJlZCB0byBpdHMgdGFyZ2V0LCBhbmQgaGFzIGEgdHJhbnNsYXRpb24g
dHJhbnNmb3JtIG9mIDEsMS4KKyAgICAvLyBTbyBpdHMgcm9vdCBSZW5kZXJQYXNzJyBxdWFkcyBz
aG91bGQgYWxsIGJlIHRyYW5zZm9ybWVkIGJ5IHRoYXQgY29tYmluZWQgYW1vdW50LgorICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KDQsIDQpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEodHJhbnNmb3JtLCBm
cmFtZS5yZW5kZXJQYXNzZXNbM10tPnF1YWRMaXN0KClbMF0tPnF1YWRUcmFuc2Zvcm0oKSk7CisK
KyAgICAvLyBRdWFkcyBmcm9tIG5vbi1yb290IFJlbmRlclBhc3NlcyBzaG91bGQgbm90IGJlIHNo
aWZ0ZWQgdGhvdWdoLgorICAgIEFTU0VSVF9FUSgydSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5x
dWFkTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0
KClbMF0tPnF1YWRUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1
YWRMaXN0KClbMV0tPnF1YWRUcmFuc2Zvcm0oKSk7CisgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBh
c3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+cXVhZFRyYW5zZm9ybSgpKTsKK30KKworY2xhc3MgQ0NE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVySW1wbFRlc3RPd25TdXJmYWNlIDogcHVibGljIENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlIHsKK3B1YmxpYzoKKyAgICBDQ0RlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1cmZhY2UoKQorICAgICAgICA6IENDRGVsZWdhdGVk
UmVuZGVyZXJMYXllckltcGxUZXN0U2ltcGxlKCkKKyAgICB7CisgICAgICAgIG1fZGVsZWdhdGVk
UmVuZGVyZXJMYXllclB0ci0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKHRydWUpOworICAgIH0KK307
CisKK1RFU1RfRihDQ0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsVGVzdE93blN1cmZhY2UsIEFk
ZHNSZW5kZXJQYXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZy
YW1lOworICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsK
KyAgICBtX2hvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICBtX2hvc3RJbXBsLT5kaWRE
cmF3QWxsTGF5ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9uLURlbGVnYXRlZFJlbmRlcmVy
TGF5ZXIgYWRkZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFk
ZGVkIHR3byBjb250cmlidXRpbmcgcGFzc2VzIGFuZCBpdHMgb3duZWQgc3VyZmFjZSBhZGRlZCBv
bmUgcGFzcy4KKyAgICBBU1NFUlRfRVEoNnUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwor
CisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQgaXRz
IGNvbnRyaWJ1dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVYUEVDVF9FUSg0
LCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDEs
IGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX0VRKDQsIGZy
YW1lLnJlbmRlclBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMiwgZnJh
bWUucmVuZGVyUGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKyAgICAvLyBUaGUgRGVsZWdhdGVkUmVu
ZGVyZXJMYXllciBzaG91bGQgaGF2ZSBhZGRlZCBhIFJlbmRlclBhc3MgZm9yIGl0cyBzdXJmYWNl
IHRvIHRoZSBmcmFtZS4KKyAgICBFWFBFQ1RfRVEoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5p
ZCgpLmxheWVySWQpOworICAgIEVYUEVDVF9FUSgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPmlk
KCkuaW5kZXgpOworICAgIC8vIEFuZCBhbGwgb3RoZXIgUmVuZGVyUGFzc2VzIHNob3VsZCBiZSBu
b24tZGVsZWdhdGVkLgorICAgIEVYUEVDVF9ORSg0LCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPmlk
KCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDAsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+aWQo
KS5pbmRleCk7CisgICAgRVhQRUNUX05FKDQsIGZyYW1lLnJlbmRlclBhc3Nlc1s0XS0+aWQoKS5s
YXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMCwgZnJhbWUucmVuZGVyUGFzc2VzWzRdLT5pZCgpLmlu
ZGV4KTsKKyAgICBFWFBFQ1RfTkUoNCwgZnJhbWUucmVuZGVyUGFzc2VzWzVdLT5pZCgpLmxheWVy
SWQpOworICAgIEVYUEVDVF9FUSgwLCBmcmFtZS5yZW5kZXJQYXNzZXNbNV0tPmlkKCkuaW5kZXgp
OworCisgICAgLy8gVGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQg
aXRzIFJlbmRlclBhc3NlcyB0byB0aGUgZnJhbWUgaW4gb3JkZXIuCisgICAgRVhQRUNUX1JFQ1Rf
RVEoSW50UmVjdCg2LCA2LCA2LCA2KSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5vdXRwdXRSZWN0
KCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoNywgNywgNywgNyksIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+b3V0cHV0UmVjdCgpKTsKK30KKworVEVTVF9GKENDRGVsZWdhdGVkUmVuZGVy
ZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgQWRkc1F1YWRzVG9Db250cmlidXRpbmdSZW5kZXJQ
YXNzZXMpCit7CisgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOworICAg
IEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKKyAgICBtX2hv
c3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKKyAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5
ZXJzKGZyYW1lKTsKKworICAgIC8vIEVhY2ggbm9uLURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgYWRk
ZWQgb25lIFJlbmRlclBhc3MuIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIGFkZGVkIHR3byBj
b250cmlidXRpbmcgcGFzc2VzIGFuZCBpdHMgb3duZWQgc3VyZmFjZSBhZGRlZCBvbmUgcGFzcy4K
KyAgICBBU1NFUlRfRVEoNnUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOworCisgICAgLy8g
VGhlIERlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgc2hvdWxkIGhhdmUgYWRkZWQgaXRzIGNvbnRyaWJ1
dGluZyBSZW5kZXJQYXNzZXMgdG8gdGhlIGZyYW1lLgorICAgIEVYUEVDVF9FUSg0LCBmcmFtZS5y
ZW5kZXJQYXNzZXNbMV0tPmlkKCkubGF5ZXJJZCk7CisgICAgRVhQRUNUX0VRKDEsIGZyYW1lLnJl
bmRlclBhc3Nlc1sxXS0+aWQoKS5pbmRleCk7CisgICAgRVhQRUNUX0VRKDQsIGZyYW1lLnJlbmRl
clBhc3Nlc1syXS0+aWQoKS5sYXllcklkKTsKKyAgICBFWFBFQ1RfRVEoMiwgZnJhbWUucmVuZGVy
UGFzc2VzWzJdLT5pZCgpLmluZGV4KTsKKworICAgIC8vIFRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIHNob3VsZCBoYXZlIGFkZGVkIGNvcGllcyBvZiBpdHMgcXVhZHMgdG8gY29udHJpYnV0aW5n
IFJlbmRlclBhc3Nlcy4KKyAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+
cXVhZExpc3QoKS5zaXplKCkpOworICAgIEVYUEVDVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgNiwg
NiksIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+cXVhZFJlY3QoKSk7CisK
KyAgICAvLyBWZXJpZnkgaXQgYWRkZWQgdGhlIHJpZ2h0IHF1YWRzLgorICAgIEFTU0VSVF9FUSgy
dSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFkTGlzdCgpLnNpemUoKSk7CisgICAgRVhQRUNU
X1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA3LCA3KSwgZnJhbWUucmVuZGVyUGFzc2VzWzJdLT5xdWFk
TGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKKyAgICBFWFBFQ1RfUkVDVF9FUShJbnRSZWN0KDYsIDYs
IDYsIDYpLCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KClbMV0tPnF1YWRSZWN0KCkp
OworICAgIEFTU0VSVF9FUSgxdSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpLnNp
emUoKSk7CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCgwLCAwLCA2LCA2KSwgZnJhbWUucmVu
ZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKK30KKworVEVTVF9GKEND
RGVsZWdhdGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgQWRkc1F1YWRzVG9UYXJn
ZXRSZW5kZXJQYXNzKQoreworICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFt
ZTsKKyAgICBFWFBFQ1RfVFJVRShtX2hvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7Cisg
ICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7CisgICAgbV9ob3N0SW1wbC0+ZGlkRHJh
d0FsbExheWVycyhmcmFtZSk7CisKKyAgICAvLyBFYWNoIG5vbi1EZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyIGFkZGVkIG9uZSBSZW5kZXJQYXNzLiBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBhZGRl
ZCB0d28gY29udHJpYnV0aW5nIHBhc3NlcyBhbmQgaXRzIG93bmVkIHN1cmZhY2UgYWRkZWQgb25l
IHBhc3MuCisgICAgQVNTRVJUX0VRKDZ1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsKKwor
ICAgIC8vIFRoZSBsYXllcidzIHRhcmdldCBpcyB0aGUgUmVuZGVyUGFzcyBvd25lZCBieSBpdHNl
bGYuCisgICAgRVhQRUNUX0VRKENDUmVuZGVyUGFzczo6SWQoNCwgMCksIGZyYW1lLnJlbmRlclBh
c3Nlc1szXS0+aWQoKSk7CisKKyAgICAvLyBUaGUgRGVsZWdhdGVkUmVuZGVyZXJMYXllciBzaG91
bGQgaGF2ZSBhZGRlZCBjb3BpZXMgb2YgcXVhZHMgaW4gaXRzIHJvb3QgUmVuZGVyUGFzcyB0byBp
dHMgdGFyZ2V0IFJlbmRlclBhc3MuCisgICAgLy8gVGhlIG1fbGF5ZXJBZnRlciBhbHNvIGFkZHMg
b25lIHF1YWQuCisgICAgQVNTRVJUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXNbM10tPnF1YWRM
aXN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFZlcmlmeSBpdCBhZGRlZCB0aGUgcmlnaHQgcXVhZHMu
CisgICAgRVhQRUNUX1JFQ1RfRVEoSW50UmVjdCg3LCA3LCA3LCA3KSwgZnJhbWUucmVuZGVyUGFz
c2VzWzNdLT5xdWFkTGlzdCgpWzBdLT5xdWFkUmVjdCgpKTsKK30KKworVEVTVF9GKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGxUZXN0T3duU3VyZmFjZSwgUXVhZHNGcm9tUm9vdFJlbmRlclBh
c3NBcmVOb3RNb2RpZmllZEZvclRoZVRhcmdldCkKK3sKKyAgICBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgZnJhbWU7CisgICAgRVhQRUNUX1RSVUUobV9ob3N0SW1wbC0+cHJlcGFyZVRv
RHJhdyhmcmFtZSkpOworICAgIG1faG9zdEltcGwtPmRyYXdMYXllcnMoZnJhbWUpOworICAgIG1f
aG9zdEltcGwtPmRpZERyYXdBbGxMYXllcnMoZnJhbWUpOworCisgICAgLy8gRWFjaCBub24tRGVs
ZWdhdGVkUmVuZGVyZXJMYXllciBhZGRlZCBvbmUgUmVuZGVyUGFzcy4gVGhlIERlbGVnYXRlZFJl
bmRlcmVyTGF5ZXIgYWRkZWQgdHdvIGNvbnRyaWJ1dGluZyBwYXNzZXMgYW5kIGl0cyBvd25lZCBz
dXJmYWNlIGFkZGVkIG9uZSBwYXNzLgorICAgIEFTU0VSVF9FUSg2dSwgZnJhbWUucmVuZGVyUGFz
c2VzLnNpemUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoZSBEZWxlZ2F0ZWRSZW5kZXJlckxheWVy
IG93bnMgYSBSZW5kZXJTdXJmYWNlLCBpdHMgcm9vdCBSZW5kZXJQYXNzJyBxdWFkcyBkbyBub3Qg
bmVlZCB0byBiZQorICAgIC8vIG1vZGlmaWVkIGF0IGFsbC4KKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBh
c3Nlc1szXS0+cXVhZExpc3QoKVswXS0+cXVhZFRyYW5zZm9ybSgpKTsKKworICAgIC8vIFF1YWRz
IGZyb20gbm9uLXJvb3QgUmVuZGVyUGFzc2VzIHNob3VsZCBub3QgYmUgc2hpZnRlZCB0aG91Z2gu
CisgICAgQVNTRVJUX0VRKDJ1LCBmcmFtZS5yZW5kZXJQYXNzZXNbMl0tPnF1YWRMaXN0KCkuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVswXS0+cXVhZFRy
YW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGZyYW1lLnJlbmRlclBhc3Nlc1syXS0+cXVhZExpc3QoKVsxXS0+
cXVhZFRyYW5zZm9ybSgpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZnJhbWUucmVuZGVyUGFzc2VzWzFdLT5xdWFk
TGlzdCgpWzBdLT5xdWFkVHJhbnNmb3JtKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcAppbmRleCBkN2U5NTU3ODMzNGM4Y2UwYzFlNGQyNGRlZWEyZWUzZTdiYTI4MTAyLi44
MWM0YzlkYThhNjlhYWUwNGViZDFmMWYxZWU5YTlkZDM5MTg5NDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNDTGF5ZXJUcmVlSG9zdEltcGwuaCIKIAog
I2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDRGVsZWdhdGVk
UmVuZGVyZXJMYXllckltcGwuaCIKICNpbmNsdWRlICJDQ0dlb21ldHJ5VGVzdFV0aWxzLmgiCiAj
aW5jbHVkZSAiQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDSU9TdXJm
YWNlTGF5ZXJJbXBsLmgiCkBAIC0yNTY1LDcgKzI1NjYsNiBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIGRvbnRVc2VPbGRSZXNvdXJjZXNBZnRlckxvc3RDb250ZXh0KQogICAgIHJv
b3RMYXllci0+YWRkQ2hpbGQoaHVkTGF5ZXIucmVsZWFzZSgpKTsKIAogICAgIE93blB0cjxGYWtl
U2Nyb2xsYmFyTGF5ZXJJbXBsPiBzY3JvbGxiYXJMYXllcihGYWtlU2Nyb2xsYmFyTGF5ZXJJbXBs
OjpjcmVhdGUoOCkpOwotICAgIHNjcm9sbGJhckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbCht
X2hvc3RJbXBsLmdldCgpKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0Qm91bmRzKEludFNpemUo
MTAsIDEwKSk7CiAgICAgc2Nyb2xsYmFyTGF5ZXItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgx
MCwgMTApKTsKICAgICBzY3JvbGxiYXJMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwpAQCAt
MjU3Myw2ICsyNTczLDEzIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgZG9udFVz
ZU9sZFJlc291cmNlc0FmdGVyTG9zdENvbnRleHQpCiAgICAgc2Nyb2xsYmFyTGF5ZXItPmNyZWF0
ZVJlc291cmNlcyhtX2hvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIHJvb3RMYXll
ci0+YWRkQ2hpbGQoc2Nyb2xsYmFyTGF5ZXIucmVsZWFzZSgpKTsKIAorICAgIE93blB0cjxDQ0Rl
bGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyKENDRGVsZWdh
dGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSg5KSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJM
YXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVyZXJM
YXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgIGRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBkZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICByb290
TGF5ZXItPmFkZENoaWxkKGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFzZSgpKTsKKwogICAg
IC8vIFVzZSBhIGNvbnRleHQgdGhhdCBzdXBwb3J0cyBJT1N1cmZhY2VzCiAgICAgbV9ob3N0SW1w
bC0+aW5pdGlhbGl6ZVJlbmRlcmVyKEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3Jl
YXRlKGFkb3B0UHRyKG5ldyBGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0RXaXRoSU9TdXJmYWNlKSks
IFVudGhyb3R0bGVkVXBsb2FkZXIpOwogCkBAIC0yNzAwLDYgKzI3MDcsMTMgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBsYXllcnNGcmVlVGV4dHVyZXMpCiAgICAgaW9TdXJmYWNl
TGF5ZXItPnNldExheWVyVHJlZUhvc3RJbXBsKG1faG9zdEltcGwuZ2V0KCkpOwogICAgIHJvb3RM
YXllci0+YWRkQ2hpbGQoaW9TdXJmYWNlTGF5ZXIucmVsZWFzZSgpKTsKIAorICAgIE93blB0cjxD
Q0RlbGVnYXRlZFJlbmRlcmVyTGF5ZXJJbXBsPiBkZWxlZ2F0ZWRSZW5kZXJlckxheWVyKENDRGVs
ZWdhdGVkUmVuZGVyZXJMYXllckltcGw6OmNyZWF0ZSg2KSk7CisgICAgZGVsZWdhdGVkUmVuZGVy
ZXJMYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CisgICAgZGVsZWdhdGVkUmVuZGVy
ZXJMYXllci0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOworICAgIGRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBkZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLT5zZXRMYXllclRyZWVIb3N0SW1wbChtX2hvc3RJbXBsLmdldCgpKTsKKyAgICBy
b290TGF5ZXItPmFkZENoaWxkKGRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIucmVsZWFzZSgpKTsKKwog
ICAgIC8vIExvc2UgdGhlIGNvbnRleHQsIHJlcGxhY2luZyBpdCB3aXRoIGEgVHJhY2tpbmdXZWJH
cmFwaGljc0NvbnRleHQzRCAod2hpY2ggdGhlIENDTGF5ZXJUcmVlSG9zdEltcGwgdGFrZXMgb3du
ZXJzaGlwIG9mKS4KICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNjQ29udGV4dChGYWtl
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShhZG9wdFB0cihuZXcgVHJhY2tpbmdX
ZWJHcmFwaGljc0NvbnRleHQzRCkpKTsKICAgICBUcmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dDNE
KiB0cmFja2luZ1dlYkdyYXBoaWNzQ29udGV4dCA9IHN0YXRpY19jYXN0PFRyYWNraW5nV2ViR3Jh
cGhpY3NDb250ZXh0M0QqPihjY0NvbnRleHQtPmNvbnRleHQzRCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IGQ2
NmI4Yzk1MTZhM2U4ODI4NmUzNmI4MTU3YTQwNjFiMDZjYWE0Y2EuLjVmYTEzYmUzOTY2OGRmYjMx
Njg1NzJlYTVmNzYyYTZkNjdiZjY4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtODksNyArODksNyBAQCBURVNU
KENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Bl
cmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRl
clN1cmZhY2UtPnNldERyYXdPcGFjaXR5KDAuNSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0oZHVt
bXlNYXRyaXgpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VSRkFDRV9ESURfTk9UX0NIQU5H
RShyZW5kZXJTdXJmYWNlLT5zZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShkdW1teU1hdHJpeCkpOwot
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZh
Y2UtPmNsZWFyTGF5ZXJMaXN0KCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJ
RF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0cygpKTsKIH0KIAogVEVT
VChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNo
YXJlZFF1YWRTdGF0ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163961</attachid>
            <date>2012-09-13 14:09:02 -0700</date>
            <delta_ts>2012-09-13 17:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120913170834.patch</filename>
            <type>text/plain</type>
            <size>5032</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBkOTMyY2Y4NDU5
YzM4OTFjZmQ3ZjMxY2IxZWY3MDRiMDNjODZhLi5kZDYzMmMwYjM1MzllNjczMDJhYzk4MGI5ZWVk
NDAwNzQ5ZDk0ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOS0xMyAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBXZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyIHRvIGFsbG93IHRoZSBicm93c2VyIGNvbXBvc2l0b3IgdG8KKyAgICAgICAgZW1i
ZWQgc3VjaCBhIGxheWVyIGluIGl0cyB0cmVlLiBUaGlzIGxheWVyIHdpbGwgYmUgY29ubmVjdGVk
IHRvIElQQworICAgICAgICBtYWNoaW5lcnkgaW4gdGhlIGNvbXBvc2l0b3IgdGhhdCBpcyB5ZXQg
VEJEIHdoaWNoIHdpbGwgZ2l2ZSBhIHNldCBvZgorICAgICAgICBSZW5kZXJQYXNzZXMgd2l0aCBE
cmF3UXVhZHMgdG8gdGhlIGltcGwgY29weSBvZiB0aGUgbGF5ZXIuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9y
dC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclN1
cHBvcnQ6OmNyZWF0ZURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29tcG9z
aXRvclN1cHBvcnQpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcik6CisKIDIwMTItMDktMTEgIFphY2gg
S3V6bmlhICA8em9ya0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEZpbHRlclR5cGVab29t
IHRvIHByb3Blcmx5IGNhbGwgY2FudmFzLT5yZXN0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5k
ZXggOTUwZDE1YzU5MWYwNDhlM2YwNjBlNDk0MGE0Y2EwOGY0YjVkNTk1MC4uYzNlN2E0MjIzOWFj
NDc4ZGFlNzQ5NjJlYWVhYjZlNDBiMmI1MjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUz
LDYgKzUzLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkRhdGEuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJF
eHRlcm5hbFRleHR1cmVMYXllci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmgKaW5kZXggOTA4OGJhOWI0
ZmM0ZjU2ZjdkZDRjNmNlZDk5Nzc0MzA2YTg3NzMyOS4uZDE0MzlhN2ExYjUwMWFkNGU5NDA3MmNi
NWFjZDY4Y2ZjOThiNzFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFuaW1hdGlvbkN1cnZlOwogY2xhc3MgV2ViQ29udGVudExh
eWVyOwogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OworY2xhc3MgV2ViRGVsZWdhdGVkUmVu
ZGVyZXJMYXllcjsKIGNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOwogY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQ7CiBjbGFzcyBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlOwpA
QCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvbnRlbnRMYXllciog
Y3JlYXRlQ29udGVudExheWVyKFdlYkNvbnRlbnRMYXllckNsaWVudCopIHsgcmV0dXJuIDA7IH0K
IAorICAgIHZpcnR1YWwgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciogY3JlYXRlRGVsZWdhdGVk
UmVuZGVyZXJMYXllcigpIHsgcmV0dXJuIDA7IH0KKwogICAgIHZpcnR1YWwgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIqIGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyQ2xpZW50KiA9IDApIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgV2ViSU9TdXJm
YWNlTGF5ZXIqIGNyZWF0ZUlPU3VyZmFjZUxheWVyKCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRl
cmVyTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODI5MTA2ZDA4ZWZmZDI0N2EzZTYxMDYxZDNhODE4Y2Zk
NWJkZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCisjZGVmaW5lIFdlYkRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsYXllciB0aGF0IHJlbmRlcnMgdGhl
IG91dHB1dCBvZiBhbm90aGVyCisvLyBkZWxlZ2F0aW5nIGNvbXBvc2l0b3IuCitjbGFzcyBXZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZWxlZ2F0
ZWRSZW5kZXJlckxheWVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164005</attachid>
            <date>2012-09-13 17:12:09 -0700</date>
            <delta_ts>2012-09-14 10:35:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94145-20120913201142.patch</filename>
            <type>text/plain</type>
            <size>5271</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBkOTMyY2Y4NDU5
YzM4OTFjZmQ3ZjMxY2IxZWY3MDRiMDNjODZhLi5kZDYzMmMwYjM1MzllNjczMDJhYzk4MGI5ZWVk
NDAwNzQ5ZDk0ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOS0xMyAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBXZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyIHRvIGFsbG93IHRoZSBicm93c2VyIGNvbXBvc2l0b3IgdG8KKyAgICAgICAgZW1i
ZWQgc3VjaCBhIGxheWVyIGluIGl0cyB0cmVlLiBUaGlzIGxheWVyIHdpbGwgYmUgY29ubmVjdGVk
IHRvIElQQworICAgICAgICBtYWNoaW5lcnkgaW4gdGhlIGNvbXBvc2l0b3IgdGhhdCBpcyB5ZXQg
VEJEIHdoaWNoIHdpbGwgZ2l2ZSBhIHNldCBvZgorICAgICAgICBSZW5kZXJQYXNzZXMgd2l0aCBE
cmF3UXVhZHMgdG8gdGhlIGltcGwgY29weSBvZiB0aGUgbGF5ZXIuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS5neXBpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9y
dC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvclN1
cHBvcnQ6OmNyZWF0ZURlbGVnYXRlZFJlbmRlcmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29tcG9z
aXRvclN1cHBvcnQpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5k
ZXJlckxheWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkRlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZWxlZ2F0ZWRSZW5kZXJl
ckxheWVyOjp+V2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcik6CisKIDIwMTItMDktMTEgIFphY2gg
S3V6bmlhICA8em9ya0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEZpbHRlclR5cGVab29t
IHRvIHByb3Blcmx5IGNhbGwgY2FudmFzLT5yZXN0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5k
ZXggOTUwZDE1YzU5MWYwNDhlM2YwNjBlNDk0MGE0Y2EwOGY0YjVkNTk1MC4uYzNlN2E0MjIzOWFj
NDc4ZGFlNzQ5NjJlYWVhYjZlNDBiMmI1MjZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTUz
LDYgKzUzLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkRhdGEuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJF
eHRlcm5hbFRleHR1cmVMYXllci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmgKaW5kZXggOTA4OGJhOWI0
ZmM0ZjU2ZjdkZDRjNmNlZDk5Nzc0MzA2YTg3NzMyOS4uZDE0MzlhN2ExYjUwMWFkNGU5NDA3MmNi
NWFjZDY4Y2ZjOThiNzFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFuaW1hdGlvbkN1cnZlOwogY2xhc3MgV2ViQ29udGVudExh
eWVyOwogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OworY2xhc3MgV2ViRGVsZWdhdGVkUmVu
ZGVyZXJMYXllcjsKIGNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOwogY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQ7CiBjbGFzcyBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlOwpA
QCAtODEsNiArODIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvbnRlbnRMYXllciog
Y3JlYXRlQ29udGVudExheWVyKFdlYkNvbnRlbnRMYXllckNsaWVudCopIHsgcmV0dXJuIDA7IH0K
IAorICAgIHZpcnR1YWwgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllciogY3JlYXRlRGVsZWdhdGVk
UmVuZGVyZXJMYXllcigpIHsgcmV0dXJuIDA7IH0KKwogICAgIHZpcnR1YWwgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIqIGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyQ2xpZW50KiA9IDApIHsgcmV0dXJuIDA7IH0KIAogICAgIHZpcnR1YWwgV2ViSU9TdXJm
YWNlTGF5ZXIqIGNyZWF0ZUlPU3VyZmFjZUxheWVyKCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkRlbGVnYXRlZFJlbmRl
cmVyTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzM5ODBjMmMzOTg0NGI2MTVhZTVkZjQzNmYwY2JjYTgz
YzkyNzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCisjZGVmaW5lIFdlYkRlbGVnYXRlZFJl
bmRlcmVyTGF5ZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBsYXllciB0aGF0IHJlbmRlcnMgdGhl
IG91dHB1dCBvZiBhbm90aGVyCisvLyBkZWxlZ2F0aW5nIGNvbXBvc2l0b3IuIEl0IGlzIGNyZWF0
ZWQgYW5kIG93bmVkIGJ5IHRoZSBlbWJlZGRlciwgd2hvCisvLyBwcm92aWRlcyB0aGUgbGF5ZXIg
d2l0aCBhIHNldCBvZiBSZW5kZXJQYXNzZXMgZ2VuZXJhdGVkIGJ5IHRoZQorLy8gY29tcG9zaXRv
ciB0aGF0IHRoZSBsYXllciByZXByZXNlbnRzLiBUaGlzIGxheWVyJ3Mgb3V0cHV0IGJlY29tZXMg
dGhlCisvLyBzYW1lIFJlbmRlclBhc3NlcyBpdCByZWNlaXZlZCBmcm9tIHRoZSBlbWJlZGRlci4K
K2NsYXNzIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgV2ViTGF5ZXIq
IGxheWVyKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164186</attachid>
            <date>2012-09-14 10:35:34 -0700</date>
            <delta_ts>2012-09-14 10:59:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94145-20120914133505.patch</filename>
            <type>text/plain</type>
            <size>5275</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyNDBkOTMyY2Y4NDU5
YzM4OTFjZmQ3ZjMxY2IxZWY3MDRiMDNjODZhLi41MDAwN2M3ZDE4OWVmNDk4MWFlYWEwZTZhZTVi
MTc3NTYyY2Q5MmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOS0xNCAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEFkZCB0aGUgdWJlcmNvbXAgV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIuCisKKyAgICAgICAgRXhwb3NlIGEgV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllciB0byBhbGxvdyB0aGUgYnJvd3NlciBjb21wb3NpdG9yIHRvCisgICAgICAg
IGVtYmVkIHN1Y2ggYSBsYXllciBpbiBpdHMgdHJlZS4gVGhpcyBsYXllciB3aWxsIGJlIGNvbm5l
Y3RlZCB0byBJUEMKKyAgICAgICAgbWFjaGluZXJ5IGluIHRoZSBjb21wb3NpdG9yIHRoYXQgaXMg
eWV0IFRCRCB3aGljaCB3aWxsIGdpdmUgYSBzZXQgb2YKKyAgICAgICAgUmVuZGVyUGFzc2VzIHdp
dGggRHJhd1F1YWRzIHRvIHRoZSBpbXBsIGNvcHkgb2YgdGhlIGxheWVyLgorCisgICAgICAgICog
UGxhdGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1
cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0
b3JTdXBwb3J0OjpjcmVhdGVEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKyAgICAgICAgKFdlYkNv
bXBvc2l0b3JTdXBwb3J0KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRGVsZWdhdGVk
UmVuZGVyZXJMYXllci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJE
ZWxlZ2F0ZWRSZW5kZXJlckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGVsZWdhdGVkUmVu
ZGVyZXJMYXllcjo6fldlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIpOgorCiAyMDEyLTA5LTExICBa
YWNoIEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBGaWx0ZXJUeXBl
Wm9vbSB0byBwcm9wZXJseSBjYWxsIGNhbnZhcy0+cmVzdG9yZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBp
CmluZGV4IDk1MGQxNWM1OTFmMDQ4ZTNmMDYwZTQ5NDBhNGNhMDhmNGI1ZDU5NTAuLmMzZTdhNDIy
MzlhYzQ3OGRhZTc0OTYyZWFlYWI2ZTQwYjJiNTI2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBA
IC01Myw2ICs1Myw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llSmFyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGlj
L1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oCmluZGV4IDkwODhi
YTliNGZjNGY1NmY3ZGQ0YzZjZWQ5OTc3NDMwNmE4NzczMjkuLmQxNDM5YTdhMWI1MDFhZDRlOTQw
NzJjYjVhY2Q2OGNmYzk4YjcxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25DdXJ2ZTsKIGNsYXNzIFdlYkNvbnRl
bnRMYXllcjsKIGNsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudDsKK2NsYXNzIFdlYkRlbGVnYXRl
ZFJlbmRlcmVyTGF5ZXI7CiBjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjsKIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwogY2xhc3MgV2ViRmxvYXRBbmltYXRpb25DdXJ2
ZTsKQEAgLTgxLDYgKzgyLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb250ZW50TGF5
ZXIqIGNyZWF0ZUNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJDbGllbnQqKSB7IHJldHVybiAw
OyB9CiAKKyAgICB2aXJ0dWFsIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXIqIGNyZWF0ZURlbGVn
YXRlZFJlbmRlcmVyTGF5ZXIoKSB7IHJldHVybiAwOyB9CisKICAgICB2aXJ0dWFsIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyKiBjcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcihXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudCogPSAwKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIFdlYklP
U3VyZmFjZUxheWVyKiBjcmVhdGVJT1N1cmZhY2VMYXllcigpIHsgcmV0dXJuIDA7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRGVsZWdhdGVkUmVuZGVy
ZXJMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEZWxlZ2F0ZWRS
ZW5kZXJlckxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDczOTgwYzJjMzk4NDRiNjE1YWU1ZGY0MzZmMGNi
Y2E4M2M5MjcxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkRlbGVnYXRlZFJlbmRlcmVyTGF5ZXJfaAorI2RlZmluZSBXZWJEZWxlZ2F0
ZWRSZW5kZXJlckxheWVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgbGF5ZXIgdGhhdCByZW5kZXJz
IHRoZSBvdXRwdXQgb2YgYW5vdGhlcgorLy8gZGVsZWdhdGluZyBjb21wb3NpdG9yLiBJdCBpcyBj
cmVhdGVkIGFuZCBvd25lZCBieSB0aGUgZW1iZWRkZXIsIHdobworLy8gcHJvdmlkZXMgdGhlIGxh
eWVyIHdpdGggYSBzZXQgb2YgUmVuZGVyUGFzc2VzIGdlbmVyYXRlZCBieSB0aGUKKy8vIGNvbXBv
c2l0b3IgdGhhdCB0aGUgbGF5ZXIgcmVwcmVzZW50cy4gVGhpcyBsYXllcidzIG91dHB1dCBiZWNv
bWVzIHRoZQorLy8gc2FtZSBSZW5kZXJQYXNzZXMgaXQgcmVjZWl2ZWQgZnJvbSB0aGUgZW1iZWRk
ZXIuCitjbGFzcyBXZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5XZWJEZWxlZ2F0ZWRSZW5kZXJlckxheWVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkxh
eWVyKiBsYXllcigpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViRGVsZWdhdGVkUmVuZGVyZXJMYXllcl9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>