<?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>124394</bug_id>
          
          <creation_ts>2013-11-14 23:10:26 -0800</creation_ts>
          <short_desc>-webkit-text-decoration-skip: ink is slow</short_desc>
          <delta_ts>2014-01-06 15:12:39 -0800</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>DUPLICATE</resolution>
          <dup_id>125718</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950966</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-14 23:10:26 -0800</bug_when>
    <thetext>-webkit-text-decoration-skip: ink is slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950970</commentid>
    <comment_count>1</comment_count>
      <attachid>217017</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-14 23:27:45 -0800</bug_when>
    <thetext>Created attachment 217017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950972</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-14 23:46:53 -0800</bug_when>
    <thetext>If a process exits without releasing all of its IOSurfaces, is that video memory gone forever?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950975</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-15 00:03:48 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; If a process exits without releasing all of its IOSurfaces, is that video memory gone forever?

My reading of IOSurfaceAPI.h says that the kernel will reclaim said memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951096</commentid>
    <comment_count>4</comment_count>
      <attachid>217017</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-11-15 09:44:54 -0800</bug_when>
    <thetext>Comment on attachment 217017
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:813
&gt; +IntSize GraphicsContext::compatibleBufferPixelSize(const IntSize&amp; size) const
&gt;  {
&gt;      // Make the buffer larger if the context&apos;s transform is scaling it so we need a higher
&gt;      // resolution than one pixel per unit. Also set up a corresponding scale factor on the
&gt;      // graphics context.
&gt;  
&gt;      AffineTransform transform = getCTM(DefinitelyIncludeDeviceScale);
&gt; -    IntSize scaledSize(static_cast&lt;int&gt;(ceil(size.width() * transform.xScale())), static_cast&lt;int&gt;(ceil(size.height() * transform.yScale())));
&gt; +    return IntSize(static_cast&lt;int&gt;(ceil(size.width() * transform.xScale())), static_cast&lt;int&gt;(ceil(size.height() * transform.yScale())));

It&apos;s possibly confusing that this looks at GraphicsContext state to determine buffer size. I think it would be better as a static function, passing in the transform.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:834
&gt; +    IntSize scaledSize = compatibleBufferPixelSize(size);
&gt; +    buffer.resetBuffer();
&gt; +    buffer.context()-&gt;scale(FloatSize(static_cast&lt;float&gt;(scaledSize.width()) / size.width(),
&gt; +        static_cast&lt;float&gt;(scaledSize.height()) / size.height()));

Not related to this patch, but this scaling strategy means that sometimes the scale in the buffer won&apos;t quite match the scale in the target context.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1067
&gt; +            DEFINE_STATIC_LOCAL(OwnPtr&lt;ImageBuffer&gt;, imageBuffer, ());
&gt; +            DEFINE_STATIC_LOCAL(IntSize, imageBufferSize, ());

This means that a single rendering of a skip-ink underline is going to keep hold of an ImageBuffer for the rest of the life of the process. I don&apos;t think we want that. In some places (e.g. ShadowBlur) we use a timer to clear caches like this; I think we should centralize this logic into one buffer cache somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951173</commentid>
    <comment_count>5</comment_count>
      <attachid>217074</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-15 13:25:58 -0800</bug_when>
    <thetext>Created attachment 217074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951179</commentid>
    <comment_count>6</comment_count>
      <attachid>217017</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-15 13:34:09 -0800</bug_when>
    <thetext>Comment on attachment 217017
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:813
&gt;&gt; +    return IntSize(static_cast&lt;int&gt;(ceil(size.width() * transform.xScale())), static_cast&lt;int&gt;(ceil(size.height() * transform.yScale())));
&gt; 
&gt; It&apos;s possibly confusing that this looks at GraphicsContext state to determine buffer size. I think it would be better as a static function, passing in the transform.

Done.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:834
&gt;&gt; +        static_cast&lt;float&gt;(scaledSize.height()) / size.height()));
&gt; 
&gt; Not related to this patch, but this scaling strategy means that sometimes the scale in the buffer won&apos;t quite match the scale in the target context.

https://bugs.webkit.org/show_bug.cgi?id=124432

&gt;&gt; Source/WebCore/rendering/InlineTextBox.cpp:1067
&gt;&gt; +            DEFINE_STATIC_LOCAL(IntSize, imageBufferSize, ());
&gt; 
&gt; This means that a single rendering of a skip-ink underline is going to keep hold of an ImageBuffer for the rest of the life of the process. I don&apos;t think we want that. In some places (e.g. ShadowBlur) we use a timer to clear caches like this; I think we should centralize this logic into one buffer cache somewhere.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951180</commentid>
    <comment_count>7</comment_count>
      <attachid>217077</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-15 13:35:09 -0800</bug_when>
    <thetext>Created attachment 217077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951196</commentid>
    <comment_count>8</comment_count>
      <attachid>217083</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2013-11-15 14:00:31 -0800</bug_when>
    <thetext>Created attachment 217083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951232</commentid>
    <comment_count>9</comment_count>
      <attachid>217083</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-11-15 15:20:08 -0800</bug_when>
    <thetext>Comment on attachment 217083
Patch

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

&gt; Source/WebCore/platform/graphics/ScratchBuffer.h:107
&gt; +    bool setCachedShadowValues(const FloatSize&amp; radius, const Color&amp; color, ColorSpace colorSpace, const FloatRect&amp; shadowRect, const RoundedRect::Radii&amp; radii, const FloatSize&amp; layerSize)
&gt; +    {
&gt; +        if (!m_lastWasInset &amp;&amp; m_lastRadius == radius &amp;&amp; m_lastColor == color &amp;&amp; m_lastColorSpace == colorSpace &amp;&amp; m_lastShadowRect == shadowRect &amp;&amp;  m_lastRadii == radii &amp;&amp; m_lastLayerSize == layerSize)
&gt; +            return false;
&gt; +
&gt; +        m_lastWasInset = false;
&gt; +        m_lastRadius = radius;
&gt; +        m_lastColor = color;
&gt; +        m_lastColorSpace = colorSpace;
&gt; +        m_lastShadowRect = shadowRect;
&gt; +        m_lastRadii = radii;
&gt; +        m_lastLayerSize = layerSize;
&gt; +
&gt; +        return true;
&gt; +    }
&gt; +
&gt; +    bool setCachedInsetShadowValues(const FloatSize&amp; radius, const Color&amp; color, ColorSpace colorSpace, const FloatRect&amp; bounds, const FloatRect&amp; shadowRect, const RoundedRect::Radii&amp; radii)
&gt; +    {
&gt; +        if (m_lastWasInset &amp;&amp; m_lastRadius == radius &amp;&amp; m_lastColor == color &amp;&amp; m_lastColorSpace == colorSpace &amp;&amp; m_lastInsetBounds == bounds &amp;&amp; shadowRect == m_lastShadowRect &amp;&amp; radii == m_lastRadii)
&gt; +            return false;
&gt; +
&gt; +        m_lastWasInset = true;
&gt; +        m_lastInsetBounds = bounds;
&gt; +        m_lastRadius = radius;
&gt; +        m_lastColor = color;
&gt; +        m_lastColorSpace = colorSpace;
&gt; +        m_lastShadowRect = shadowRect;
&gt; +        m_lastRadii = radii;
&gt; +
&gt; +        return true;
&gt; +    }

This class shouldn&apos;t have shadow-related stuff in it.

&gt; Source/WebCore/rendering/InlineTextBox.cpp:1081
&gt; +                FloatRect imageBufferRectInUserSpace = FloatRect(enclosingUnderlineRect.location(),
&gt; +                    FloatSize(enclosingUnderlineRect.size().width() * xMagnification,
&gt; +                        enclosingUnderlineRect.size().height() * yMagnification));

Would be nice to push this complexity into some buffer class that under the hood can use larger buffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964773</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-01-06 15:12:39 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 125718 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217017</attachid>
            <date>2013-11-14 23:27:45 -0800</date>
            <delta_ts>2013-11-15 13:34:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124394-20131114232745.patch</filename>
            <type>text/plain</type>
            <size>13033</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA0Y2FmYTMwYzIxYWFm
ZWQyZWExMGFiNWJiMThiMTFjYTliYTMxMi4uMjA3NTE3YWRmYTI5MzhhMTYyMWU1OWMxMzhlMDRl
ODZkYzcxNGFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTExLTE0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgYW4gSU9TdXJmYWNl
IGZvciBlYWNoIHRleHQgYm94IHRoYXQgZ2V0cyB1bmRlcmxpbmVzCisgICAgICAgIG1hc2tlZCwg
d2UgY2FuIHJlLXVzZSBvbmUgSU9TdXJmYWNlLiBUaGlzIHBhdGNoIGFsc28gZmFjdG9ycyBvdXQg
aW5pdGlhbAorICAgICAgICBzZXR1cCBvZiB0aGUgSW1hZ2VCdWZmZXIgaW50byByZXNldCgpIGZ1
bmN0aW9ucywgd2hpY2ggYWxsb3dzIGZvciB0aGlzCisgICAgICAgIHJldXNlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhcmUgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3Ig
Y2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUJ1ZmZlclBp
eGVsU2l6ZSk6IEFsbG93IHF1ZXJ5aW5nIGhvdyBiaWcgb2YKKyAgICAgICAgYW4gSW1hZ2VCdWZm
ZXIgd2UgbmVlZCAodG8gc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBvbmUgdGhhdCBmaXRzIHRoZSBi
aWxsKQorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKTogVXNlIHJlc2V0Q29tcGF0aWJsZUJ1ZmZlcigpIGZ1bmN0aW9uCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJlc2V0Q29tcGF0aWJsZUJ1ZmZlcik6IE5ldyBmdW5j
dGlvbiB3aGljaCBwZXJmb3JtcyBpbml0aWFsIHNldHVwIAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFn
ZUJ1ZmZlckJsYWNrQmVycnkuY3BwOiBDcmVhdGVkIG5ldyByZXNldEJ1ZmZlcigpIGZ1bmN0aW9u
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDogRGl0dG8KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpyZXNldEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6IERpdHRvCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bkNFLmNwcDogRGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpyZXNldEJ1ZmZl
cik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKTogUmUtdXNlIGEgc3RhdGljIElt
YWdlQnVmZmVyIGlmIGl0J3MgYmlnIGVub3VnaC4KKyAgICAgICAgSW4gYWRkaXRpb24sIHJlc2V0
IGl0IHNvIHdlIGRvbid0IGdldCBnYXJiYWdlIGxlZnQgb3ZlciBmcm9tIHRoZSBsYXN0IHJ1bi4K
KwogMjAxMy0xMS0xNCAgVmljdG9yIENvc3RhbiAgPGNvc3RhbkBnbWFpbC5jb20+CiAKICAgICAg
ICAgWE1MU2VyaWFsaXplciBlc2NhcGVzIDwgPiAmIGNvcnJlY3RseSBpbnNpZGUgPHNjcmlwdD4g
YW5kIDxzdHlsZT4gdGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGYyMWY5MTRkMTZhNjliMWY5MzkwZjE1MzZk
NjkyZTRjNGE0OGE5Y2IuLjZlYTJlMjhmOGZkMDQ1YzNjOTU5MWMwOTFhNGIyNDM1NmJkMzkzNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtODAzLDI1ICs4MDMsMzcgQEAgc3RhdGljIGJvb2wgc2NhbGVzTWF0Y2go
QWZmaW5lVHJhbnNmb3JtIGEsIEFmZmluZVRyYW5zZm9ybSBiKQogICAgIHJldHVybiBhLnhTY2Fs
ZSgpID09IGIueFNjYWxlKCkgJiYgYS55U2NhbGUoKSA9PSBiLnlTY2FsZSgpOwogfQogCi1QYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNBbHBoYSkgY29uc3QKK0ludFNpemUgR3Jh
cGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKGNvbnN0IEludFNpemUmIHNp
emUpIGNvbnN0CiB7CiAgICAgLy8gTWFrZSB0aGUgYnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4
dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyBy
ZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3Bv
bmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRoZQogICAgIC8vIGdyYXBoaWNzIGNvbnRleHQuCiAKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUpOwotICAgIEludFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwo
c2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2Vp
bChzaXplLmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOworICAgIHJldHVybiBJbnRT
aXplKHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLndpZHRoKCkgKiB0cmFuc2Zvcm0ueFNjYWxl
KCkpKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsKHNpemUuaGVpZ2h0KCkgKiB0cmFuc2Zvcm0ueVNj
YWxlKCkpKSk7Cit9CisKK1Bhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc0FscGhh
KSBjb25zdAoreworICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNvbXBhdGlibGVCdWZmZXJQaXhl
bFNpemUoc2l6ZSk7CiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIHRoaXMsIGhhc0FscGhhKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBidWZmZXItPmNvbnRleHQoKS0+c2NhbGUoRmxvYXRTaXplKHN0YXRp
Y19jYXN0PGZsb2F0PihzY2FsZWRTaXplLndpZHRoKCkpIC8gc2l6ZS53aWR0aCgpLAotICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGVkU2l6ZS5oZWlnaHQoKSkgLyBzaXplLmhlaWdodCgp
KSk7CisgICAgcmVzZXRDb21wYXRpYmxlQnVmZmVyKCpidWZmZXIsIHNpemUpOwogCiAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXNldENv
bXBhdGlibGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkg
Y29uc3QKK3sKKyAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBjb21wYXRpYmxlQnVmZmVyUGl4ZWxT
aXplKHNpemUpOworICAgIGJ1ZmZlci5yZXNldEJ1ZmZlcigpOworICAgIGJ1ZmZlci5jb250ZXh0
KCktPnNjYWxlKEZsb2F0U2l6ZShzdGF0aWNfY2FzdDxmbG9hdD4oc2NhbGVkU2l6ZS53aWR0aCgp
KSAvIHNpemUud2lkdGgoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNjYWxlZFNpemUu
aGVpZ2h0KCkpIC8gc2l6ZS5oZWlnaHQoKSkpOworfQorCiBib29sIEdyYXBoaWNzQ29udGV4dDo6
aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewogICAg
IEdyYXBoaWNzQ29udGV4dCogYnVmZmVyQ29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCA0ODUzNTExODNmODVlNGQ2ZTM5ZGI2NzdjYjgzMGFjMjNlZjlkMTdiLi42MTdmZjA4NDFm
OTMwMTExMjliZTkzZjJhMTg0MThhM2ZmMTZiZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDE1LDYgKzQxNSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIg
Y29tcGF0aWJsZSB3aXRoIHRoaXMgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uCiAg
ICAgICAgIC8vIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMg
Y29udGV4dC4KICAgICAgICAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgYm9vbCBoYXNBbHBoYSA9IHRydWUpIGNvbnN0OworICAg
ICAgICAvLyBUaGUgc2l6ZSBpbiBwaXhlbHMgdGhhdCBhIGNvbXBhdGlibGUgYnVmZmVyIHdvdWxk
IGJlIGlmIHlvdSBhc2tlZCBmb3Igb25lIHdpdGggdGhlCisgICAgICAgIC8vIGdpdmVuIGxvZ2lj
YWwgc2l6ZQorICAgICAgICBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJQaXhlbFNpemUoY29uc3Qg
SW50U2l6ZSYpIGNvbnN0OworICAgICAgICB2b2lkIHJlc2V0Q29tcGF0aWJsZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0NvbXBhdGli
bGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBmdW5j
dGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ugc2NhbGUgZmFjdG9yIHRvIHRoZSBjb250ZXh0LCBtYWtp
bmcgdGhlIGNvbnRleHQgY2FwYWJsZSBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggMWQ0ZjA4NWZkMWY0NzJiNGE4M2FlYWU2OTM4ZmFj
MGM2Y2Y0OWRiMi4uMDI3Zjg4MDlkYjExMGFhMTE1MjM4YWY4NjQ1MWY2ZDlmZDNkZTMwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC05
MSw2ICs5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Kiwg
Ym9vbCBoYXNBbHBoYSk7CiAKICAgICAgICAgfkltYWdlQnVmZmVyKCk7CisgICAgICAgIAorICAg
ICAgICB2b2lkIHJlc2V0QnVmZmVyKCk7CiAKICAgICAgICAgLy8gVGhlIGFjdHVhbCByZXNvbHV0
aW9uIG9mIHRoZSBiYWNraW5nIHN0b3JlCiAgICAgICAgIGNvbnN0IEludFNpemUmIGludGVybmFs
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZl
ckJsYWNrQmVycnkuY3BwCmluZGV4IGMyYWNlNGY0Y2IwZjFmOGI5ZWE5YzA3MDJhODdkMTU1ZTMz
YmJmNmMuLjJmODMyYmFhNTJkMDJiODg0MzE1ZWY1YTZkMzJmM2ZmZTYyY2E5ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW1hZ2VCdWZm
ZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBJ
bWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcgogICAgIG1fZGF0YS5tX3BsYXRmb3JtTGF5ZXIgPSBDYW52
YXNMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlKG1fZGF0YS5tX2J1ZmZlciwgZHJhd2FibGUsIG1f
c2l6ZSk7CiAgICAgbV9kYXRhLm1fd2luZG93ID0gd2luZG93OwogICAgIG1fY29udGV4dCA9IGFk
b3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoZHJhd2FibGUpKTsKLSAgICBtX2NvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpKTsKKyAg
ICByZXNldEJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVyYXRlZENvbnRleHQo
cmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCk7CiAgICAgc3VjY2VzcyA9IHRydWU7CiB9CkBA
IC0yMTEsNiArMjExLDEyIEBAIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogICAgIH0KIH0K
IAordm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1fY29udGV4dC0+c2V0
Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSht
X3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpKTsKK30KKwogR3JhcGhpY3NDb250
ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOGM2MmU3ZWRhNjVmMzcxOGE1NTc0
M2QwYzdkZTJkZjkzYWE0MjQzNy4uNWNlOGEzMDYzODJhYjMzZmNkOTM0NDZhZjQ0NDIxZWEzMTAx
NGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTEyMCw2ICsxMjAsMTEgQEAgSW1hZ2VC
dWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXI6OnJlc2V0QnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7Cit9CisK
IEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDRmYWI2NzgwMWUxZmQzODI4NTUy
ZDRhNmNiOWM1MTUyODZjZmJjNTIuLjlhMzI1MjQxNWU0N2I5YTFiMzNiN2FlNjZmZmYxYTFkOTEy
NmE2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzAsOSArMTcwLDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdl
QnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JT
cGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgR3Jh
cGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4dC0+YXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgbV9jb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZS5oZWln
aHQoKSk7CisgICAgcmVzZXRCdWZmZXIoKTsKICAgICBtX2NvbnRleHQtPnNldElzQWNjZWxlcmF0
ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJpbmcpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpA
QCAtMTgxLDYgKzE3OSwxNCBAQCBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkKIHsKIH0KIAor
dm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1fY29udGV4dC0+c2V0Q1RN
KEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEs
IC0xKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fbG9naWNhbFNpemUuaGVpZ2h0
KCkpOworfQorCiBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAppbmRl
eCAyNzFkMTEyMGY4OWJiODU1MWJkNzljNTQxMGY3ZGZiN2I0YWFmZTI1Li44ZjI5NDU0YTQ5OGI5
MDE2YzUyZDJjMGE4ZTA5YzVkNTRjMGU2YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcApAQCAt
ODksNiArODksMTEgQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKK3ZvaWQg
SW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZp
bmVUcmFuc2Zvcm0oKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRl
eHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNmFlMWM3YTA0ZDE2YTBiZGI2NjUz
Y2Y1ZDI0MGMxMzVhNjA2MTRhYi4uYzhlMWZiMTFhMDRiNGFmY2FhOGVlMDVhZWNlOWJjZGI1MDM0
ZDc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
MTA2MCwyMSArMTA2MCw0MCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgICAgICAgICBz
dGF0ZVNhdmVyLnNhdmUoKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHVuZGVybGluZVJlY3Qg
PSBib3VuZGluZ0JveEZvckFsbEFjdGl2ZURlY29yYXRpb25zKCp0aGlzLCBjb250ZXh0LCBkZWNv
cmF0aW9uLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgd2lkdGgsIGRvdWJsZU9mZnNldCwgZGVj
b3JhdGlvblN0eWxlLCBsb2NhbE9yaWdpbiwgbGluZVN0eWxlLCBpc1ByaW50aW5nLCBiYXNlbGlu
ZSk7Ci0gICAgICAgICAgICBJbnRSZWN0IGVuY2xvc2luZ0RldmljZVJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KHVuZGVybGluZVJlY3QpOwotICAgICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihlbmNsb3NpbmdEZXZp
Y2VSZWN0LnNpemUoKSk7CisgICAgICAgICAgICBJbnRSZWN0IGVuY2xvc2luZ1VuZGVybGluZVJl
Y3QgPSBlbmNsb3NpbmdJbnRSZWN0KHVuZGVybGluZVJlY3QpOworICAgICAgICAgICAgSW50U2l6
ZSByZXF1ZXN0ZWRJbWFnZUJ1ZmZlclNpemUgPSBjb250ZXh0LmNvbXBhdGlibGVCdWZmZXJQaXhl
bFNpemUoZW5jbG9zaW5nVW5kZXJsaW5lUmVjdC5zaXplKCkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxJbWFnZUJ1ZmZlcj4sIGltYWdlQnVm
ZmVyLCAoKSk7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEludFNpemUsIGltYWdl
QnVmZmVyU2l6ZSwgKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyLmdldCgpIHx8IGltYWdlQnVmZmVyU2l6ZS53aWR0aCgpIDwgcmVxdWVzdGVkSW1hZ2VCdWZm
ZXJTaXplLndpZHRoKCkgfHwgaW1hZ2VCdWZmZXJTaXplLmhlaWdodCgpIDwgcmVxdWVzdGVkSW1h
Z2VCdWZmZXJTaXplLmhlaWdodCgpKQorICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyID0gY29u
dGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKGVuY2xvc2luZ1VuZGVybGluZVJlY3Quc2l6ZSgp
KTsKIAogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyLmdldCgpKSB7CisgICAgICAgICAgICAg
ICAgaW1hZ2VCdWZmZXJTaXplID0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQucmVzZXRDb21wYXRpYmxlQnVmZmVyKCppbWFnZUJ1ZmZlciwgaW1h
Z2VCdWZmZXJTaXplKTsKICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tDb250
ZXh0ID0gKmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSBpbWFnZUJ1ZmZlclNpemUud2lkdGgoKSAv
IHJlcXVlc3RlZEltYWdlQnVmZmVyU2l6ZS53aWR0aCgpOworICAgICAgICAgICAgICAgIGZsb2F0
IHlNYWduaWZpY2F0aW9uID0gaW1hZ2VCdWZmZXJTaXplLmhlaWdodCgpIC8gcmVxdWVzdGVkSW1h
Z2VCdWZmZXJTaXplLmhlaWdodCgpOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBpbWFnZUJ1
ZmZlclJlY3RJblVzZXJTcGFjZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0Lmxv
Y2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShlbmNsb3NpbmdVbmRlcmxp
bmVSZWN0LnNpemUoKS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUoKS5oZWlnaHQoKSAqIHlNYWduaWZp
Y2F0aW9uKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbWFza0NvbnRleHQu
Y2xlYXJSZWN0KGltYWdlQnVmZmVyUmVjdEluVXNlclNwYWNlKTsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBtYXNrQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlU291cmNlT3Zlcik7CiAgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuc2V0RmlsbENvbG9y
KENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICAgICAgbWFz
a0NvbnRleHQuc2V0TGluZUpvaW4oUm91bmRKb2luKTsKLSAgICAgICAgICAgICAgICBtYXNrQ29u
dGV4dC50cmFuc2xhdGUoRmxvYXRQb2ludCgpIC0gZW5jbG9zaW5nRGV2aWNlUmVjdC5sb2NhdGlv
bigpKTsKKyAgICAgICAgICAgICAgICBtYXNrQ29udGV4dC50cmFuc2xhdGUoRmxvYXRQb2ludCgp
IC0gZW5jbG9zaW5nVW5kZXJsaW5lUmVjdC5sb2NhdGlvbigpKTsKIAotICAgICAgICAgICAgICAg
IG1hc2tDb250ZXh0LmZpbGxSZWN0KGVuY2xvc2luZ0RldmljZVJlY3QpOworICAgICAgICAgICAg
ICAgIG1hc2tDb250ZXh0LmZpbGxSZWN0KGVuY2xvc2luZ1VuZGVybGluZVJlY3QpOwogICAgICAg
ICAgICAgICAgIG1hc2tDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVh
cik7CiAgICAgCiAgICAgICAgICAgICAgICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0SW5Db250ZXh0
KG1hc2tDb250ZXh0LCBza2lwSW5rR2FwV2lkdGgpOwogCi0gICAgICAgICAgICAgICAgY29udGV4
dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgZW5jbG9zaW5nRGV2aWNlUmVj
dCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ci5nZXQoKSwgaW1hZ2VCdWZmZXJSZWN0SW5Vc2VyU3BhY2UpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuY2xpcChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVF9ERUNPUkFUSU9OCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217074</attachid>
            <date>2013-11-15 13:25:58 -0800</date>
            <delta_ts>2013-11-15 13:35:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124394-20131115132557.patch</filename>
            <type>text/plain</type>
            <size>35167</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA0Y2FmYTMwYzIxYWFm
ZWQyZWExMGFiNWJiMThiMTFjYTliYTMxMi4uNzE4M2Q0MDc0NTYzNTgxNjU0ZmVhMzdjZTI0YWZj
ODljYTBkMzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM5NAorCisgICAgICAgIEluc3RlYWQgb2YgY3Jl
YXRpbmcgYW4gSU9TdXJmYWNlIGZvciBlYWNoIHRleHQgYm94IHRoYXQgZ2V0cyB1bmRlcmxpbmVz
CisgICAgICAgIG1hc2tlZCwgd2UgY2FuIHVzZSBTY3JhdGNoQnVmZmVyIChvcmlnaW5hbGx5IGlu
IFNoYWRvd0JsdXIuY3BwKSB3aGljaCByZS11c2VzCisgICAgICAgIGEgc2luZ2xlIEltYWdlQnVm
ZmVyIGFuZCBkZWxldGVzIGl0IGFzeW5jaHJvbm91c2x5IHdpdGggYSB0aW1lci4gVGhpcyBwYXRj
aAorICAgICAgICBhbHNvIGZhY3RvcnMgb3V0IGluaXRpYWwgc2V0dXAgb2YgdGhlIEltYWdlQnVm
ZmVyIGludG8gcmVzZXQoKSBmdW5jdGlvbnMsCisgICAgICAgIHdoaWNoIGFsbG93cyBmb3IgdGhp
cyByZXVzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGQgbmV3IFNjcmF0Y2hCdWZmZXIgZmlsZXMKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBEaXR0bworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IERpdHRv
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0
bworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKTogQWxs
b3cgcXVlcnlpbmcgaG93IGJpZyBvZgorICAgICAgICBhbiBJbWFnZUJ1ZmZlciB3ZSBuZWVkICh0
byBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSB0aGF0IGZpdHMgdGhlIGJpbGwpCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBVc2Ug
cmVzZXRDb21wYXRpYmxlQnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6cmVzZXRDb21wYXRpYmxlQnVmZmVyKTogTmV3IGZ1bmN0aW9uIHdoaWNoIHBl
cmZvcm1zIGluaXRpYWwgc2V0dXAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwOiBQdWxsZWQgb3V0
IG9mIFNoYWRvd0JsdXIuY3BwCisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuaDogRGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OnJvdW5kVXBUb011bHRpcGxlT2YzMik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRj
aEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcDogaW5jbHVkZSBTY3JhdGNoQnVmZmVyLmgKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHA6IENy
ZWF0ZWQgbmV3IHJlc2V0QnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVz
ZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDog
RGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwOiBkaXR0bworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24pOiBVc2UgU2NyYXRjaEJ1ZmZlciB0byByZS11c2UgSW1hZ2VCdWZmZXJzLgor
ICAgICAgICBJbiBhZGRpdGlvbiwgcmVzZXQgaXQgc28gd2UgZG9uJ3QgZ2V0IGdhcmJhZ2UgbGVm
dCBvdmVyIGZyb20gdGhlIGxhc3QgcnVuLgorCiAyMDEzLTExLTE0ICBWaWN0b3IgQ29zdGFuICA8
Y29zdGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBYTUxTZXJpYWxpemVyIGVzY2FwZXMgPCA+ICYg
Y29ycmVjdGx5IGluc2lkZSA8c2NyaXB0PiBhbmQgPHN0eWxlPiB0YWdzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA3NGUzOGY0ZjRkYzA5ZjIyZGM4OTNiYWNjYmExYmZiZGQwNTk4OTBiLi41YmUz
NTlkZGQ4MzAxNmRlNWVhOTViYzM4OGQxNjAxMjE4ZjQ1OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTkwOCw2ICsxOTA4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TY3JhdGNoQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZv
bnREYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA5MWI5M2QyYzFkZjEyYWFhYjE1MGRkODE2ZDAxYjQ3MGE1MjU5YmY2Li5kNmM5
ZDllYmRjZGE4NTBjNzlhYjEyZWQ2MzAzOGEyNTExNjU1Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU4MTcsNiArNTgxNyw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TY3JhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMTc1NDdjOTk0ZjhhYmE4ZDg1ZDg2Y2I3OTkzZDcy
YmUyOWQ4ZmIxNi4uNjkwOGI1MjNhMTkwODhhZmE1ZmJmZDM4MGVlZGJkYTI5ZTczMzdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03
NjU3LDYgKzc2NTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcUGF0dGVybi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSZWdpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dC
bHVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFNpbXBsZUZvbnREYXRhLmNwcCIgLz4KQEAgLTE5MTkyLDYgKzE5MTkzLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3JtTGF5ZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJlZ2lvbi5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJl
Y3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNj
cmF0Y2hCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dCbHVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaW1wbGVGb250RGF0YS5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGQwOGYzZDljODFhNTM5OWZiYzRjNjAwY2NmYWNlZGYyMGMyNTdjMDQuLjg2OWVmYzY3
NTUyNTUxNzFlYTQ2MzNlNTE1MTc4ZDE4NWEzZDNkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzNjIs
NiArMTM2Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2VnbWVudGVkRm9udERhdGEuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgz
ODUsNiArODM4OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xSb3VuZGVkUmVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXFNjcmF0Y2hCdWZmZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5oIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODkx
N2VjMDhlMzg5YWQ0NmExNzUzMmZhYTljMWRmZDZjYzUwNjIyLi42OTkxMTk4YmFlZmYyZTc1YjI4
NmJkZGRhODIwMjJmNjZiNTUyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTYsNiArODU2LDggQEAKIAkJMUNBRjM0ODEw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRj
aEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuaCAqLzsgfTsKKwkJMUNC
MDNGQjYxODM2QkVDMjAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCMDNGQjUxODM2QkVDMjAwNzUwRjM0
IC8qIFNjcmF0Y2hCdWZmZXIuY3BwICovOyB9OwogCQkxQ0I0MjE0QTBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NRG9jdW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDYwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTURvY3VtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJMUNCNDIxNEIwQUYyQjJDQTAwODVBRDkx
IC8qIERPTUVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDkwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQkxQ0I0MjE0QzBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNTgwQUM1RDUzNDAwNTMyNzBG
IC8qIERPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTc0NTAsNiArNzQ1Miw4IEBA
CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3Jp
cHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYXRjaEJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0IwM0ZCNTE4MzZCRUMyMDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jh
dGNoQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDQTczMjExMEFE
RDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRDBCNjIwMEFBQkRCNTAwMEQwQTNGRiAvKiBQdWJs
aWNET01JbnRlcmZhY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1Ymxp
Y0RPTUludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQw
QkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTI5MCw2ICsxOTI5NCw4IEBACiAJCQkJNTAxQkFBQTgxMzk1MEUyQzAw
RjdBQ0VCIC8qIFdpbmRSdWxlLmggKi8sCiAJCQkJMzc5OTE5OTQxMjAwRERGNDAwRUEwNDFDIC8q
IFdPRkZGaWxlRm9ybWF0LmNwcCAqLywKIAkJCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCAqLywKKwkJCQkxQ0IwM0ZCMjE4MzZCQTM3MDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5oICovLAorCQkJCTFDQjAzRkI1MTgzNkJFQzIwMDc1MEYzNCAvKiBTY3JhdGNo
QnVmZmVyLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjMyNjUsNiArMjMyNzEsNyBAQAogCQkJCUIyNzUzNTc2MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEEw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRjaEJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlz
ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzMzdGNDE4MTI1QUUzMDAwN0EyNDYgLyog
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFEQjA5
RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTYzLDYgKzI2
OTcwLDcgQEAKIAkJCQlCMkZBM0Q5NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDk2MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR0ZpbHRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RUMx
ODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQ0IwM0ZCNjE4MzZCRUMyMDA3NTBGMzQgLyogU2NyYXRjaEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNTBDRUYwQzA3MDBEMzlENTQgLyog
SlNTVkdGb250RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwNDBDQ0FGRjE1
MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgzQjc5MDEwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2
OTJlNGM0YTQ4YTljYi4uMGYxNTYxM2Y0Y2E4YWZiZTI2NGU4N2NiOGI3NDAyNDdmZTY2OGE0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC04MDMsMjUgKzgwMywzOCBAQCBzdGF0aWMgYm9vbCBzY2FsZXNNYXRjaChB
ZmZpbmVUcmFuc2Zvcm0gYSwgQWZmaW5lVHJhbnNmb3JtIGIpCiAgICAgcmV0dXJuIGEueFNjYWxl
KCkgPT0gYi54U2NhbGUoKSAmJiBhLnlTY2FsZSgpID09IGIueVNjYWxlKCk7CiB9CiAKLVBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc0FscGhhKSBjb25zdAorSW50U2l6ZSBHcmFw
aGljc0NvbnRleHQ6OmNvbXBhdGlibGVCdWZmZXJQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkgY29uc3QKIHsKICAgICAvLyBNYWtlIHRoZSBidWZmZXIgbGFyZ2VyIGlmIHRoZSBjb250ZXh0
J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgogICAgIC8vIHJl
c29sdXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuIEFsc28gc2V0IHVwIGEgY29ycmVzcG9u
ZGluZyBzY2FsZSBmYWN0b3Igb24gdGhlCiAgICAgLy8gZ3JhcGhpY3MgY29udGV4dC4KIAogICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oRGVmaW5pdGVseUluY2x1ZGVEZXZp
Y2VTY2FsZSk7Ci0gICAgSW50U2l6ZSBzY2FsZWRTaXplKHN0YXRpY19jYXN0PGludD4oY2VpbChz
aXplLndpZHRoKCkgKiB0cmFuc2Zvcm0ueFNjYWxlKCkpKSwgc3RhdGljX2Nhc3Q8aW50PihjZWls
KHNpemUuaGVpZ2h0KCkgKiB0cmFuc2Zvcm0ueVNjYWxlKCkpKSk7CisgICAgcmV0dXJuIEludFNp
emUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUo
KSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2Nh
bGUoKSkpKTsKK30KKworUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEp
IGNvbnN0Cit7CisgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY29tcGF0aWJsZUJ1ZmZlclBpeGVs
U2l6ZShzaXplKTsKIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgdGhpcywgaGFzQWxwaGEpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHNjYWxlZFNpemUud2lkdGgoKSkgLyBzaXplLndpZHRoKCksCi0gICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0PihzY2FsZWRTaXplLmhlaWdodCgpKSAvIHNpemUuaGVpZ2h0KCkp
KTsKKyAgICByZXNldENvbXBhdGlibGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2UoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc2V0Q29tcGF0aWJs
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyKSBjb25zdAoreworICAgIEludFNpemUgc2l6ZSA9
IGJ1ZmZlci5sb2dpY2FsU2l6ZSgpOworICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNvbXBhdGli
bGVCdWZmZXJQaXhlbFNpemUoc2l6ZSk7CisgICAgYnVmZmVyLnJlc2V0QnVmZmVyKCk7CisgICAg
YnVmZmVyLmNvbnRleHQoKS0+c2NhbGUoRmxvYXRTaXplKHN0YXRpY19jYXN0PGZsb2F0PihzY2Fs
ZWRTaXplLndpZHRoKCkpIC8gc2l6ZS53aWR0aCgpLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9h
dD4oc2NhbGVkU2l6ZS5oZWlnaHQoKSkgLyBzaXplLmhlaWdodCgpKSk7Cit9CisKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0Ojppc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVyKiBidWZmZXIp
IGNvbnN0CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gYnVmZmVyLT5j
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDQ4NTM1MTE4M2Y4NWU0ZDZlMzlkYjY3N2NiODMwYWMyM2VmOWQx
N2IuLmVhYjIyZTFlM2E5MjAzMGFkYWNkYTlmOWY4Zjg0ZGU0MTlmNjdiYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00
MTUsNiArNDE1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ3JlYXRlIGFu
IGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhpcyBjb250ZXh0LCB3aXRoIHN1aXRhYmxl
IHJlc29sdXRpb24KICAgICAgICAgLy8gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0
aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAgICAgICBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBib29sIGhhc0FscGhhID0gdHJ1
ZSkgY29uc3Q7CisgICAgICAgIC8vIFRoZSBzaXplIGluIHBpeGVscyB0aGF0IGEgY29tcGF0aWJs
ZSBidWZmZXIgd291bGQgYmUgaWYgeW91IGFza2VkIGZvciBvbmUgd2l0aCB0aGUKKyAgICAgICAg
Ly8gZ2l2ZW4gbG9naWNhbCBzaXplCisgICAgICAgIEludFNpemUgY29tcGF0aWJsZUJ1ZmZlclBp
eGVsU2l6ZShjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgICAgIHZvaWQgcmVzZXRDb21wYXRp
YmxlQnVmZmVyKEltYWdlQnVmZmVyJikgY29uc3Q7CiAgICAgICAgIGJvb2wgaXNDb21wYXRpYmxl
V2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciopIGNvbnN0OwogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rp
b24gYXBwbGllcyB0aGUgZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5n
IHRoZSBjb250ZXh0IGNhcGFibGUgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDFkNGYwODVmZDFmNDcyYjRhODNhZWFlNjkzOGZhYzBj
NmNmNDlkYjIuLjAyN2Y4ODA5ZGIxMTBhYTExNTIzOGFmODY0NTFmNmQ5ZmQzZGUzMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtOTEs
NiArOTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCosIGJv
b2wgaGFzQWxwaGEpOwogCiAgICAgICAgIH5JbWFnZUJ1ZmZlcigpOworICAgICAgICAKKyAgICAg
ICAgdm9pZCByZXNldEJ1ZmZlcigpOwogCiAgICAgICAgIC8vIFRoZSBhY3R1YWwgcmVzb2x1dGlv
biBvZiB0aGUgYmFja2luZyBzdG9yZQogICAgICAgICBjb25zdCBJbnRTaXplJiBpbnRlcm5hbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwZTY5OTVhZWQ3
NjkyNGRmZGFmNWNlYzY3NTBjNGQxYmZkNGMwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFNlbmNoYSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjLiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNj
cmF0Y2hCdWZmZXIuaCIKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IkZsb2F0UXVhZC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1NjcmF0Y2hCdWZmZXImIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCAoKSk7
CisgICAgcmV0dXJuIHNjcmF0Y2hCdWZmZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZGFmNzMzZGE1ZDZhMjNlOWIzN2Y3YjRhMDQxMGE1OTZhNzczMWI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1
ZmZlci5oCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBTZW5jaGEs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIERpZ2lhIFBsYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2Ny
YXRjaEJ1ZmZlcl9oCisjZGVmaW5lIFNjcmF0Y2hCdWZmZXJfaAorCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGlubGluZSBpbnQgcm91bmRVcFRvTXVsdGlw
bGVPZjMyKGludCBkKQoreworICAgIHJldHVybiAoMSArIChkID4+IDUpKSA8PCA1OworfQorCisv
LyBTb21ldGltZXMgYSBjb21tb24gb3BlcmF0aW9uIHJlcXVpcmVzIGFuIEltYWdlQnVmZmVyLgor
Ly8gSW5zdGVhZCBvZiBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB0aGUgYnVmZmVyIGZvciBldmVy
eSBvcGVyYXRpb24sCisvLyB3ZSBjcmVhdGUgYSBidWZmZXIgd2hpY2ggd2lsbCBiZSBhdXRvbWF0
aWNhbGx5IHB1cmdlZCB2aWEgYSB0aW1lci4KK2NsYXNzIFNjcmF0Y2hCdWZmZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNjcmF0Y2hCdWZmZXIoKQorICAg
ICAgICA6IG1fcHVyZ2VUaW1lcih0aGlzLCAmU2NyYXRjaEJ1ZmZlcjo6dGltZXJGaXJlZCkKKyAg
ICAgICAgLCBtX2xhc3RXYXNJbnNldChmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgICwgbV9idWZmZXJJblVzZShmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICB9CisgICAgCisg
ICAgSW1hZ2VCdWZmZXIqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghbV9idWZmZXJJblVzZSk7CisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAvLyBXZSBk
byBub3QgbmVlZCB0byByZWNyZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBp
cyBsYXJnZSBlbm91Z2guCisgICAgICAgIGlmIChtX2ltYWdlQnVmZmVyICYmIG1faW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkud2lkdGgoKSA+PSBzaXplLndpZHRoKCkgJiYgbV9pbWFnZUJ1ZmZl
ci0+bG9naWNhbFNpemUoKS5oZWlnaHQoKSA+PSBzaXplLmhlaWdodCgpKQorICAgICAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisKKyAgICAgICAgLy8gUm91bmQgdG8gdGhlIG5l
YXJlc3QgMzIgcGl4ZWxzIHNvIHdlIGRvIG5vdCBncm93IHRoZSBidWZmZXIgZm9yIHNpbWlsYXIg
c2l6ZWQgcmVxdWVzdHMuCisgICAgICAgIEludFNpemUgcm91bmRlZFNpemUocm91bmRVcFRvTXVs
dGlwbGVPZjMyKHNpemUud2lkdGgoKSksIHJvdW5kVXBUb011bHRpcGxlT2YzMihzaXplLmhlaWdo
dCgpKSk7CisKKyAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CisgICAgICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCAxKTsKKyAgICAgICAgcmV0
dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBzZXRDYWNoZWRTaGFk
b3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJv
dW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGNvbnN0IEZsb2F0U2l6ZSYgbGF5ZXJTaXplKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2xhc3RXYXNJbnNldCAmJiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVz
ICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFzdENvbG9yU3BhY2UgPT0gY29sb3JTcGFj
ZSAmJiBtX2xhc3RTaGFkb3dSZWN0ID09IHNoYWRvd1JlY3QgJiYgIG1fbGFzdFJhZGlpID09IHJh
ZGlpICYmIG1fbGFzdExheWVyU2l6ZSA9PSBsYXllclNpemUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSBmYWxzZTsKKyAgICAgICAgbV9sYXN0
UmFkaXVzID0gcmFkaXVzOworICAgICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOworICAgICAgICBt
X2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKKyAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9
IHNoYWRvd1JlY3Q7CisgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CisgICAgICAgIG1fbGFz
dExheWVyU2l6ZSA9IGxheWVyU2l6ZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBib29sIHNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFk
aXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSkKKyAgICB7CisgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCAm
JiBtX2xhc3RSYWRpdXMgPT0gcmFkaXVzICYmIG1fbGFzdENvbG9yID09IGNvbG9yICYmIG1fbGFz
dENvbG9yU3BhY2UgPT0gY29sb3JTcGFjZSAmJiBtX2xhc3RJbnNldEJvdW5kcyA9PSBib3VuZHMg
JiYgc2hhZG93UmVjdCA9PSBtX2xhc3RTaGFkb3dSZWN0ICYmIHJhZGlpID09IG1fbGFzdFJhZGlp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fbGFzdFdhc0luc2V0ID0g
dHJ1ZTsKKyAgICAgICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CisgICAgICAgIG1fbGFz
dFJhZGl1cyA9IHJhZGl1czsKKyAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKKyAgICAgICAg
bV9sYXN0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7CisgICAgICAgIG1fbGFzdFNoYWRvd1JlY3Qg
PSBzaGFkb3dSZWN0OworICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOworCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHZvaWQgc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2Uo
KQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIG1fYnVmZmVySW5Vc2UgPSBm
YWxzZTsKKyNlbmRpZgorICAgICAgICBpZiAobV9wdXJnZVRpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgICAgICBtX3B1cmdlVGltZXIuc3RvcCgpOworCisgICAgICAgIGNvbnN0IGRvdWJsZSBzY3Jh
dGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCA9IDI7CisgICAgICAgIG1fcHVyZ2VUaW1lci5zdGFydE9u
ZVNob3Qoc2NyYXRjaEJ1ZmZlclB1cmdlSW50ZXJ2YWwpOworICAgIH0KKyAgICAKKyAgICBzdGF0
aWMgU2NyYXRjaEJ1ZmZlciYgc2hhcmVkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZp
cmVkKFRpbWVyPFNjcmF0Y2hCdWZmZXI+KikKKyAgICB7CisgICAgICAgIGNsZWFyU2NyYXRjaEJ1
ZmZlcigpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFyU2NyYXRjaEJ1ZmZlcigpCisgICAg
eworICAgICAgICBtX2ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9sYXN0UmFkaXVz
ID0gRmxvYXRTaXplKCk7CisgICAgfQorCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdl
QnVmZmVyOworICAgIFRpbWVyPFNjcmF0Y2hCdWZmZXI+IG1fcHVyZ2VUaW1lcjsKKyAgICAKKyAg
ICBGbG9hdFJlY3QgbV9sYXN0SW5zZXRCb3VuZHM7CisgICAgRmxvYXRSZWN0IG1fbGFzdFNoYWRv
d1JlY3Q7CisgICAgUm91bmRlZFJlY3Q6OlJhZGlpIG1fbGFzdFJhZGlpOworICAgIENvbG9yIG1f
bGFzdENvbG9yOworICAgIENvbG9yU3BhY2UgbV9sYXN0Q29sb3JTcGFjZTsKKyAgICBGbG9hdFNp
emUgbV9sYXN0UmFkaXVzOworICAgIGJvb2wgbV9sYXN0V2FzSW5zZXQ7CisgICAgRmxvYXRTaXpl
IG1fbGFzdExheWVyU2l6ZTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBt
X2J1ZmZlckluVXNlOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY3JhdGNoQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggNzM4NzI3MzBlNWQxMmQyNWJkMTdhY2U2ZWE4NDk0
YmFhZWE3NWE4Yy4uMDUyZjBkMGNlZTg0NDVkZGZmOGU2MDAxYWRkOWI2ODI0ZDk5NzlhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNjcmF0Y2hC
dWZmZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00NSwxMjUgKzQ2LDYgQEAgZW51bSB7
CiAgICAgcmlnaHRMb2JlID0gMQogfTsKIAotc3RhdGljIGlubGluZSBpbnQgcm91bmRVcFRvTXVs
dGlwbGVPZjMyKGludCBkKQotewotICAgIHJldHVybiAoMSArIChkID4+IDUpKSA8PCA1OwotfQot
Ci0vLyBTaGFkb3dCbHVyIG5lZWRzIGEgc2NyYXRjaCBpbWFnZSBhcyB0aGUgYnVmZmVyIGZvciB0
aGUgYmx1ciBmaWx0ZXIuCi0vLyBJbnN0ZWFkIG9mIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHRo
ZSBidWZmZXIgZm9yIGV2ZXJ5IG9wZXJhdGlvbiwKLS8vIHdlIGNyZWF0ZSBhIGJ1ZmZlciB3aGlj
aCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcHVyZ2VkIHZpYSBhIHRpbWVyLgotY2xhc3MgU2NyYXRj
aEJ1ZmZlciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgU2Ny
YXRjaEJ1ZmZlcigpCi0gICAgICAgIDogbV9wdXJnZVRpbWVyKHRoaXMsICZTY3JhdGNoQnVmZmVy
Ojp0aW1lckZpcmVkKQotICAgICAgICAsIG1fbGFzdFdhc0luc2V0KGZhbHNlKQotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICAgICAgLCBtX2J1ZmZlckluVXNlKGZhbHNlKQotI2VuZGlmCi0gICAg
ewotICAgIH0KLSAgICAKLSAgICBJbWFnZUJ1ZmZlciogZ2V0U2NyYXRjaEJ1ZmZlcihjb25zdCBJ
bnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2J1ZmZlckluVXNlKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIG1fYnVmZmVySW5Vc2UgPSB0cnVlOwotI2VuZGlm
Ci0gICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIgaWYgdGhl
IGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KLSAgICAgICAgaWYgKG1faW1hZ2VCdWZm
ZXIgJiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0aCgpID49IHNpemUud2lkdGgo
KSAmJiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdodCgpID49IHNpemUuaGVpZ2h0
KCkpCi0gICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKLQotICAgICAgICAv
LyBSb3VuZCB0byB0aGUgbmVhcmVzdCAzMiBwaXhlbHMgc28gd2UgZG8gbm90IGdyb3cgdGhlIGJ1
ZmZlciBmb3Igc2ltaWxhciBzaXplZCByZXF1ZXN0cy4KLSAgICAgICAgSW50U2l6ZSByb3VuZGVk
U2l6ZShyb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS53aWR0aCgpKSwgcm91bmRVcFRvTXVsdGlw
bGVPZjMyKHNpemUuaGVpZ2h0KCkpKTsKLQotICAgICAgICBjbGVhclNjcmF0Y2hCdWZmZXIoKTsK
LSAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUs
IDEpOwotICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKLSAgICB9Ci0KLSAgICBi
b29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3Qg
Q29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgRmxvYXRTaXpl
JiBsYXllclNpemUpCi0gICAgewotICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0ICYmIG1fbGFz
dFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0Q29sb3JT
cGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3QgPT0gc2hhZG93UmVjdCAmJiAg
bV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXplID09IGxheWVyU2l6ZSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX2xhc3RXYXNJbnNldCA9IGZhbHNl
OwotICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7Ci0gICAgICAgIG1fbGFzdENvbG9yID0g
Y29sb3I7Ci0gICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotICAgICAgICBt
X2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKLSAgICAgICAgbV9sYXN0UmFkaWkgPSByYWRp
aTsKLSAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXplOwotCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMoY29u
c3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dS
ZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQotICAgIHsKLSAgICAgICAgaWYg
KG1fbGFzdFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3Ig
PT0gY29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdEluc2V0
Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0ID09IG1fbGFzdFNoYWRvd1JlY3QgJiYgcmFk
aWkgPT0gbV9sYXN0UmFkaWkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
bV9sYXN0V2FzSW5zZXQgPSB0cnVlOwotICAgICAgICBtX2xhc3RJbnNldEJvdW5kcyA9IGJvdW5k
czsKLSAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOwotICAgICAgICBtX2xhc3RDb2xvciA9
IGNvbG9yOwotICAgICAgICBtX2xhc3RDb2xvclNwYWNlID0gY29sb3JTcGFjZTsKLSAgICAgICAg
bV9sYXN0U2hhZG93UmVjdCA9IHNoYWRvd1JlY3Q7Ci0gICAgICAgIG1fbGFzdFJhZGlpID0gcmFk
aWk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBzY2hlZHVsZVNj
cmF0Y2hCdWZmZXJQdXJnZSgpCi0gICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAg
bV9idWZmZXJJblVzZSA9IGZhbHNlOwotI2VuZGlmCi0gICAgICAgIGlmIChtX3B1cmdlVGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fcHVyZ2VUaW1lci5zdG9wKCk7Ci0KLSAgICAgICAg
Y29uc3QgZG91YmxlIHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsID0gMjsKLSAgICAgICAgbV9w
dXJnZVRpbWVyLnN0YXJ0T25lU2hvdChzY3JhdGNoQnVmZmVyUHVyZ2VJbnRlcnZhbCk7Ci0gICAg
fQotICAgIAotICAgIHN0YXRpYyBTY3JhdGNoQnVmZmVyJiBzaGFyZWQoKTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8U2NyYXRjaEJ1ZmZlcj4qKQotICAgIHsKLSAgICAg
ICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgY2xlYXJTY3Jh
dGNoQnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAg
ICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKLSAgICB9Ci0KLSAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7Ci0gICAgVGltZXI8U2NyYXRjaEJ1ZmZlcj4gbV9wdXJn
ZVRpbWVyOwotICAgIAotICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNldEJvdW5kczsKLSAgICBGbG9h
dFJlY3QgbV9sYXN0U2hhZG93UmVjdDsKLSAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFk
aWk7Ci0gICAgQ29sb3IgbV9sYXN0Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xvclNw
YWNlOwotICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7Ci0gICAgYm9vbCBtX2xhc3RXYXNJbnNl
dDsKLSAgICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOwotICAgIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICBib29sIG1fYnVmZmVySW5Vc2U7Ci0jZW5kaWYKLX07Ci0KLVNjcmF0Y2hCdWZm
ZXImIFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
Y3JhdGNoQnVmZmVyLCBzY3JhdGNoQnVmZmVyLCAoKSk7Ci0gICAgcmV0dXJuIHNjcmF0Y2hCdWZm
ZXI7Ci19Ci0KIHN0YXRpYyBjb25zdCBpbnQgdGVtcGxhdGVTaWRlTGVuZ3RoID0gMTsKIAogI2lm
IFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW1hZ2VCdWZmZXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW1hZ2VCdWZmZXJCbGFja0JlcnJ5LmNwcAppbmRleCBj
MmFjZTRmNGNiMGYxZjhiOWVhOWMwNzAyYTg3ZDE1NWUzM2JiZjZjLi4yZjgzMmJhYTUyZDAyYjg4
NDMxNWVmNWE2ZDMyZjNmZmU2MmNhOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckJs
YWNrQmVycnkuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0LCBDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHIK
ICAgICBtX2RhdGEubV9wbGF0Zm9ybUxheWVyID0gQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OmNy
ZWF0ZShtX2RhdGEubV9idWZmZXIsIGRyYXdhYmxlLCBtX3NpemUpOwogICAgIG1fZGF0YS5tX3dp
bmRvdyA9IHdpbmRvdzsKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250
ZXh0KGRyYXdhYmxlKSk7Ci0gICAgbV9jb250ZXh0LT5zY2FsZShGbG9hdFNpemUobV9yZXNvbHV0
aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKSk7CisgICAgcmVzZXRCdWZmZXIoKTsKICAgICBt
X2NvbnRleHQtPnNldElzQWNjZWxlcmF0ZWRDb250ZXh0KHJlbmRlcmluZ01vZGUgPT0gQWNjZWxl
cmF0ZWQpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMjExLDYgKzIxMSwxMiBAQCBJbWFn
ZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkKICAgICB9CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXI6OnJl
c2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgbV9jb250ZXh0LT5zY2FsZShGbG9hdFNpemUobV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVz
b2x1dGlvblNjYWxlKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRl
eHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCmluZGV4IDhjNjJlN2VkYTY1ZjM3MThhNTU3NDNkMGM3ZGUyZGY5M2FhNDI0MzcuLjVj
ZThhMzA2MzgyYWIzM2ZjZDkzNDQ2YWY0NDQyMWVhMzEwMTRhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm8uY3BwCkBAIC0xMjAsNiArMTIwLDExIEBAIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQog
ewogfQogCit2b2lkIEltYWdlQnVmZmVyOjpyZXNldEJ1ZmZlcigpCit7CisgICAgbV9jb250ZXh0
LT5zZXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkpOworfQorCiBHcmFwaGljc0NvbnRleHQqIEltYWdl
QnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCA0ZmFiNjc4MDFlMWZkMzgyODU1MmQ0YTZjYjljNTE1Mjg2Y2ZiYzUyLi45
YTMyNTI0MTVlNDdiOWExYjMzYjdhZTY2ZmZmMWExZDkxMjZhNjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
MTcwLDkgKzE3MCw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9jb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChjZ0NvbnRleHQu
Z2V0KCkpKTsKLSAgICBtX2NvbnRleHQtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIG1fY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAg
bV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkpOworICAgIHJlc2V0QnVmZmVy
KCk7CiAgICAgbV9jb250ZXh0LT5zZXRJc0FjY2VsZXJhdGVkQ29udGV4dChhY2NlbGVyYXRlUmVu
ZGVyaW5nKTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KQEAgLTE4MSw2ICsxNzksMTQgQEAgSW1h
Z2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXI6OnJlc2V0
QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7Cisg
ICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsK
KyAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgIG1fY29udGV4dC0+
dHJhbnNsYXRlKDAsIC1tX2xvZ2ljYWxTaXplLmhlaWdodCgpKTsKK30KKwogR3JhcGhpY3NDb250
ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAKaW5kZXggMjcxZDExMjBmODliYjg1NTFiZDc5
YzU0MTBmN2RmYjdiNGFhZmUyNS4uOGYyOTQ1NGE0OThiOTAxNmM1MmQyYzBhOGUwOWM1ZDU0YzBl
NmFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
SW1hZ2VCdWZmZXJXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5jcHAKQEAgLTg5LDYgKzg5LDExIEBAIEltYWdlQnVm
ZmVyOjp+SW1hZ2VCdWZmZXIoKQogewogfQogCit2b2lkIEltYWdlQnVmZmVyOjpyZXNldEJ1ZmZl
cigpCit7CisgICAgbV9jb250ZXh0LT5zZXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkpOworfQorCiBH
cmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9jb250ZXh0LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guY3BwCmluZGV4IDZhZTFjN2EwNGQxNmEwYmRiNjY1M2NmNWQyNDBjMTM1YTYwNjE0YWIuLmM4
MWQ4YzI2MDY5OTMxMzVhZDI0M2FlMDNjMjc2ZGFlNTc1ZjVmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJSdWJ5VGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNjcmF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgpAQCAtMTA2MCwyMiArMTA2MSw0MCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQm
CiAgICAgICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0
IHVuZGVybGluZVJlY3QgPSBib3VuZGluZ0JveEZvckFsbEFjdGl2ZURlY29yYXRpb25zKCp0aGlz
LCBjb250ZXh0LCBkZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgd2lkdGgsIGRv
dWJsZU9mZnNldCwgZGVjb3JhdGlvblN0eWxlLCBsb2NhbE9yaWdpbiwgbGluZVN0eWxlLCBpc1By
aW50aW5nLCBiYXNlbGluZSk7Ci0gICAgICAgICAgICBJbnRSZWN0IGVuY2xvc2luZ0RldmljZVJl
Y3QgPSBlbmNsb3NpbmdJbnRSZWN0KHVuZGVybGluZVJlY3QpOwotICAgICAgICAgICAgT3duUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihlbmNsb3NpbmdEZXZpY2VSZWN0LnNpemUoKSk7Ci0KLSAgICAgICAgICAgIGlmIChpbWFnZUJ1
ZmZlci5nZXQoKSkgeworICAgICAgICAgICAgSW50UmVjdCBlbmNsb3NpbmdVbmRlcmxpbmVSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdCh1bmRlcmxpbmVSZWN0KTsKKyAgICAgICAgICAgIEludFNpemUg
cmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXplID0gY29udGV4dC5jb21wYXRpYmxlQnVmZmVyUGl4ZWxT
aXplKGVuY2xvc2luZ1VuZGVybGluZVJlY3Quc2l6ZSgpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgU2NyYXRjaEJ1ZmZlciYgc2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJl
ZCgpOworICAgICAgICAgICAgLy8gR3VhcmFudGVlZCB0byBiZSBlcXVhbCBvciBsYXJnZXIgdG8g
dGhlIHJlcXVlc3RlZCBzaXplCisgICAgICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBzY3JhdGNoQnVmZmVyLmdldFNjcmF0Y2hCdWZmZXIocmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXpl
KTsKKworICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgSW50
U2l6ZSBpbWFnZUJ1ZmZlclNpemUgPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5yZXNldENvbXBhdGlibGVCdWZmZXIoKmltYWdlQnVmZmVyKTsK
ICAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tDb250ZXh0ID0gKmltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmxvYXQg
eE1hZ25pZmljYXRpb24gPSAxLjAgKiBpbWFnZUJ1ZmZlclNpemUud2lkdGgoKSAvIHJlcXVlc3Rl
ZEltYWdlQnVmZmVyU2l6ZS53aWR0aCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHlNYWduaWZp
Y2F0aW9uID0gMS4wICogaW1hZ2VCdWZmZXJTaXplLmhlaWdodCgpIC8gcmVxdWVzdGVkSW1hZ2VC
dWZmZXJTaXplLmhlaWdodCgpOworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZl
clJlY3RJblVzZXJTcGFjZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LmxvY2F0
aW9uKCksCisgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZShlbmNsb3NpbmdVbmRlcmxpbmVS
ZWN0LnNpemUoKS53aWR0aCgpICogeE1hZ25pZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICBlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUoKS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0
aW9uKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuY2xl
YXJSZWN0KGltYWdlQnVmZmVyUmVjdEluVXNlclNwYWNlKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBtYXNrQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
U291cmNlT3Zlcik7CiAgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuc2V0RmlsbENvbG9yKENv
bG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICAgICAgbWFza0Nv
bnRleHQuc2V0TGluZUpvaW4oUm91bmRKb2luKTsKLSAgICAgICAgICAgICAgICBtYXNrQ29udGV4
dC50cmFuc2xhdGUoRmxvYXRQb2ludCgpIC0gZW5jbG9zaW5nRGV2aWNlUmVjdC5sb2NhdGlvbigp
KTsKKyAgICAgICAgICAgICAgICBtYXNrQ29udGV4dC50cmFuc2xhdGUoRmxvYXRQb2ludCgpIC0g
ZW5jbG9zaW5nVW5kZXJsaW5lUmVjdC5sb2NhdGlvbigpKTsKIAotICAgICAgICAgICAgICAgIG1h
c2tDb250ZXh0LmZpbGxSZWN0KGVuY2xvc2luZ0RldmljZVJlY3QpOworICAgICAgICAgICAgICAg
IG1hc2tDb250ZXh0LmZpbGxSZWN0KGVuY2xvc2luZ1VuZGVybGluZVJlY3QpOwogICAgICAgICAg
ICAgICAgIG1hc2tDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7
CiAgICAgCiAgICAgICAgICAgICAgICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0SW5Db250ZXh0KG1h
c2tDb250ZXh0LCBza2lwSW5rR2FwV2lkdGgpOwogCi0gICAgICAgICAgICAgICAgY29udGV4dC5j
bGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgZW5jbG9zaW5nRGV2aWNlUmVjdCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
aW1hZ2VCdWZmZXJSZWN0SW5Vc2VyU3BhY2UpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xp
cChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNj
cmF0Y2hCdWZmZXIuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKICAgICAgICAgfQogI2Vu
ZGlmIC8vIENTUzNfVEVYVF9ERUNPUkFUSU9OCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5
bGUodGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoZGVjb3JhdGlvblN0eWxlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217077</attachid>
            <date>2013-11-15 13:35:09 -0800</date>
            <delta_ts>2013-11-15 14:00:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124394-20131115133508.patch</filename>
            <type>text/plain</type>
            <size>35431</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA0Y2FmYTMwYzIxYWFm
ZWQyZWExMGFiNWJiMThiMTFjYTliYTMxMi4uNzE4M2Q0MDc0NTYzNTgxNjU0ZmVhMzdjZTI0YWZj
ODljYTBkMzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM5NAorCisgICAgICAgIEluc3RlYWQgb2YgY3Jl
YXRpbmcgYW4gSU9TdXJmYWNlIGZvciBlYWNoIHRleHQgYm94IHRoYXQgZ2V0cyB1bmRlcmxpbmVz
CisgICAgICAgIG1hc2tlZCwgd2UgY2FuIHVzZSBTY3JhdGNoQnVmZmVyIChvcmlnaW5hbGx5IGlu
IFNoYWRvd0JsdXIuY3BwKSB3aGljaCByZS11c2VzCisgICAgICAgIGEgc2luZ2xlIEltYWdlQnVm
ZmVyIGFuZCBkZWxldGVzIGl0IGFzeW5jaHJvbm91c2x5IHdpdGggYSB0aW1lci4gVGhpcyBwYXRj
aAorICAgICAgICBhbHNvIGZhY3RvcnMgb3V0IGluaXRpYWwgc2V0dXAgb2YgdGhlIEltYWdlQnVm
ZmVyIGludG8gcmVzZXQoKSBmdW5jdGlvbnMsCisgICAgICAgIHdoaWNoIGFsbG93cyBmb3IgdGhp
cyByZXVzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGQgbmV3IFNjcmF0Y2hCdWZmZXIgZmlsZXMKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBEaXR0bworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IERpdHRv
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0
bworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKTogQWxs
b3cgcXVlcnlpbmcgaG93IGJpZyBvZgorICAgICAgICBhbiBJbWFnZUJ1ZmZlciB3ZSBuZWVkICh0
byBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSB0aGF0IGZpdHMgdGhlIGJpbGwpCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBVc2Ug
cmVzZXRDb21wYXRpYmxlQnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6cmVzZXRDb21wYXRpYmxlQnVmZmVyKTogTmV3IGZ1bmN0aW9uIHdoaWNoIHBl
cmZvcm1zIGluaXRpYWwgc2V0dXAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwOiBQdWxsZWQgb3V0
IG9mIFNoYWRvd0JsdXIuY3BwCisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuaDogRGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OnJvdW5kVXBUb011bHRpcGxlT2YzMik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRj
aEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcDogaW5jbHVkZSBTY3JhdGNoQnVmZmVyLmgKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHA6IENy
ZWF0ZWQgbmV3IHJlc2V0QnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVz
ZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDog
RGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwOiBkaXR0bworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24pOiBVc2UgU2NyYXRjaEJ1ZmZlciB0byByZS11c2UgSW1hZ2VCdWZmZXJzLgor
ICAgICAgICBJbiBhZGRpdGlvbiwgcmVzZXQgaXQgc28gd2UgZG9uJ3QgZ2V0IGdhcmJhZ2UgbGVm
dCBvdmVyIGZyb20gdGhlIGxhc3QgcnVuLgorCiAyMDEzLTExLTE0ICBWaWN0b3IgQ29zdGFuICA8
Y29zdGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBYTUxTZXJpYWxpemVyIGVzY2FwZXMgPCA+ICYg
Y29ycmVjdGx5IGluc2lkZSA8c2NyaXB0PiBhbmQgPHN0eWxlPiB0YWdzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA3NGUzOGY0ZjRkYzA5ZjIyZGM4OTNiYWNjYmExYmZiZGQwNTk4OTBiLi41YmUz
NTlkZGQ4MzAxNmRlNWVhOTViYzM4OGQxNjAxMjE4ZjQ1OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTkwOCw2ICsxOTA4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TY3JhdGNoQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZv
bnREYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA5MWI5M2QyYzFkZjEyYWFhYjE1MGRkODE2ZDAxYjQ3MGE1MjU5YmY2Li5kNmM5
ZDllYmRjZGE4NTBjNzlhYjEyZWQ2MzAzOGEyNTExNjU1Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU4MTcsNiArNTgxNyw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TY3JhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMTc1NDdjOTk0ZjhhYmE4ZDg1ZDg2Y2I3OTkzZDcy
YmUyOWQ4ZmIxNi4uNjkwOGI1MjNhMTkwODhhZmE1ZmJmZDM4MGVlZGJkYTI5ZTczMzdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03
NjU3LDYgKzc2NTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcUGF0dGVybi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSZWdpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dC
bHVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFNpbXBsZUZvbnREYXRhLmNwcCIgLz4KQEAgLTE5MTkyLDYgKzE5MTkzLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3JtTGF5ZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJlZ2lvbi5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJl
Y3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNj
cmF0Y2hCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dCbHVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaW1wbGVGb250RGF0YS5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGQwOGYzZDljODFhNTM5OWZiYzRjNjAwY2NmYWNlZGYyMGMyNTdjMDQuLjg2OWVmYzY3
NTUyNTUxNzFlYTQ2MzNlNTE1MTc4ZDE4NWEzZDNkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzNjIs
NiArMTM2Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2VnbWVudGVkRm9udERhdGEuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgz
ODUsNiArODM4OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xSb3VuZGVkUmVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXFNjcmF0Y2hCdWZmZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5oIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODkx
N2VjMDhlMzg5YWQ0NmExNzUzMmZhYTljMWRmZDZjYzUwNjIyLi42OTkxMTk4YmFlZmYyZTc1YjI4
NmJkZGRhODIwMjJmNjZiNTUyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTYsNiArODU2LDggQEAKIAkJMUNBRjM0ODEw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRj
aEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuaCAqLzsgfTsKKwkJMUNC
MDNGQjYxODM2QkVDMjAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCMDNGQjUxODM2QkVDMjAwNzUwRjM0
IC8qIFNjcmF0Y2hCdWZmZXIuY3BwICovOyB9OwogCQkxQ0I0MjE0QTBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NRG9jdW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDYwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTURvY3VtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJMUNCNDIxNEIwQUYyQjJDQTAwODVBRDkx
IC8qIERPTUVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDkwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQkxQ0I0MjE0QzBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNTgwQUM1RDUzNDAwNTMyNzBG
IC8qIERPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTc0NTAsNiArNzQ1Miw4IEBA
CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3Jp
cHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYXRjaEJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0IwM0ZCNTE4MzZCRUMyMDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jh
dGNoQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDQTczMjExMEFE
RDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRDBCNjIwMEFBQkRCNTAwMEQwQTNGRiAvKiBQdWJs
aWNET01JbnRlcmZhY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1Ymxp
Y0RPTUludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQw
QkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTI5MCw2ICsxOTI5NCw4IEBACiAJCQkJNTAxQkFBQTgxMzk1MEUyQzAw
RjdBQ0VCIC8qIFdpbmRSdWxlLmggKi8sCiAJCQkJMzc5OTE5OTQxMjAwRERGNDAwRUEwNDFDIC8q
IFdPRkZGaWxlRm9ybWF0LmNwcCAqLywKIAkJCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCAqLywKKwkJCQkxQ0IwM0ZCMjE4MzZCQTM3MDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5oICovLAorCQkJCTFDQjAzRkI1MTgzNkJFQzIwMDc1MEYzNCAvKiBTY3JhdGNo
QnVmZmVyLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjMyNjUsNiArMjMyNzEsNyBAQAogCQkJCUIyNzUzNTc2MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEEw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRjaEJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlz
ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzMzdGNDE4MTI1QUUzMDAwN0EyNDYgLyog
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFEQjA5
RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTYzLDYgKzI2
OTcwLDcgQEAKIAkJCQlCMkZBM0Q5NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDk2MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR0ZpbHRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RUMx
ODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQ0IwM0ZCNjE4MzZCRUMyMDA3NTBGMzQgLyogU2NyYXRjaEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNTBDRUYwQzA3MDBEMzlENTQgLyog
SlNTVkdGb250RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwNDBDQ0FGRjE1
MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgzQjc5MDEwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2
OTJlNGM0YTQ4YTljYi4uZWRkMzcyNTc4MzY4ODQ0ZjdiZDRjNWY3MjFhNDdmNDgxNmI5MzEyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC04MDMsMjUgKzgwMywzOCBAQCBzdGF0aWMgYm9vbCBzY2FsZXNNYXRjaChB
ZmZpbmVUcmFuc2Zvcm0gYSwgQWZmaW5lVHJhbnNmb3JtIGIpCiAgICAgcmV0dXJuIGEueFNjYWxl
KCkgPT0gYi54U2NhbGUoKSAmJiBhLnlTY2FsZSgpID09IGIueVNjYWxlKCk7CiB9CiAKLVBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc0FscGhhKSBjb25zdAorSW50U2l6ZSBHcmFw
aGljc0NvbnRleHQ6OmNvbXBhdGlibGVCdWZmZXJQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIGNvbnN0CiB7CiAgICAgLy8gTWFr
ZSB0aGUgYnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5n
IGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVs
IHBlciB1bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRo
ZQogICAgIC8vIGdyYXBoaWNzIGNvbnRleHQuCisgICAgcmV0dXJuIEludFNpemUoc3RhdGljX2Nh
c3Q8aW50PihjZWlsKHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGNlaWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKK30K
IAorUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0Cit7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKTsKLSAgICBJbnRTaXplIHNjYWxlZFNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWls
KHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKKyAgICBJbnRTaXplIHNj
YWxlZFNpemUgPSBjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKHNpemUsIHRyYW5zZm9ybSk7CiAK
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHRoaXMsIGhh
c0FscGhhKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBidWZmZXItPmNvbnRleHQoKS0+c2NhbGUoRmxvYXRTaXplKHN0YXRpY19jYXN0PGZsb2F0Pihz
Y2FsZWRTaXplLndpZHRoKCkpIC8gc2l6ZS53aWR0aCgpLAotICAgICAgICBzdGF0aWNfY2FzdDxm
bG9hdD4oc2NhbGVkU2l6ZS5oZWlnaHQoKSkgLyBzaXplLmhlaWdodCgpKSk7CisgICAgcmVzZXRD
b21wYXRpYmxlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXNldENvbXBhdGlibGVCdWZmZXIoSW1hZ2VC
dWZmZXImIGJ1ZmZlcikgY29uc3QKK3sKKyAgICBJbnRTaXplIHNpemUgPSBidWZmZXIubG9naWNh
bFNpemUoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNvbXBhdGli
bGVCdWZmZXJQaXhlbFNpemUoc2l6ZSwgdHJhbnNmb3JtKTsKKyAgICBidWZmZXIucmVzZXRCdWZm
ZXIoKTsKKyAgICBidWZmZXIuY29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNjYWxlZFNpemUud2lkdGgoKSkgLyBzaXplLndpZHRoKCksCisgICAgICAgIHN0YXRp
Y19jYXN0PGZsb2F0PihzY2FsZWRTaXplLmhlaWdodCgpKSAvIHNpemUuaGVpZ2h0KCkpKTsKK30K
KwogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZm
ZXIqIGJ1ZmZlcikgY29uc3QKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlckNvbnRleHQg
PSBidWZmZXItPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDg1MzUxMTgzZjg1ZTRkNmUzOWRiNjc3Y2I4
MzBhYzIzZWY5ZDE3Yi4uNzhkZjhlNjEzNThlZjUzNzhhZjJhMGRmOTQ0ZTZkYzVkMzI1Mjk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTQxNSw2ICs0MTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNvbnRleHQsIHdp
dGggc3VpdGFibGUgcmVzb2x1dGlvbgogICAgICAgICAvLyBmb3IgZHJhd2luZyBpbnRvIHRoZSBi
dWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgICAgIFBhc3NPd25QdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGJvb2wgaGFz
QWxwaGEgPSB0cnVlKSBjb25zdDsKKyAgICAgICAgLy8gVGhlIHNpemUgaW4gcGl4ZWxzIHRoYXQg
YSBjb21wYXRpYmxlIGJ1ZmZlciB3b3VsZCBiZSBpZiB5b3UgYXNrZWQgZm9yIG9uZSB3aXRoIHRo
ZQorICAgICAgICAvLyBnaXZlbiBsb2dpY2FsIHNpemUKKyAgICAgICAgSW50U2l6ZSBjb21wYXRp
YmxlQnVmZmVyUGl4ZWxTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KSBjb25zdDsKKyAgICAgICAgdm9pZCByZXNldENvbXBhdGlibGVCdWZmZXIoSW1hZ2VCdWZmZXIm
KSBjb25zdDsKICAgICAgICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVy
KikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ug
c2NhbGUgZmFjdG9yIHRvIHRoZSBjb250ZXh0LCBtYWtpbmcgdGhlIGNvbnRleHQgY2FwYWJsZSBv
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggMWQ0ZjA4NWZkMWY0NzJiNGE4M2FlYWU2OTM4ZmFjMGM2Y2Y0OWRiMi4uMDI3Zjg4MDlkYjEx
MGFhMTE1MjM4YWY4NjQ1MWY2ZDlmZDNkZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC05MSw2ICs5MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICAg
ICAgfkltYWdlQnVmZmVyKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHJlc2V0QnVmZmVyKCk7
CiAKICAgICAgICAgLy8gVGhlIGFjdHVhbCByZXNvbHV0aW9uIG9mIHRoZSBiYWNraW5nIHN0b3Jl
CiAgICAgICAgIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2Ny
YXRjaEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TY3JhdGNo
QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTBlNjk5NWFlZDc2OTI0ZGZkYWY1Y2VjNjc1MGM0ZDFi
ZmQ0YzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2NyYXRjaEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgU2VuY2hhLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyYXRjaEJ1ZmZlci5oIgorCisjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyYXRjaEJ1
ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXIsICgpKTsKKyAgICByZXR1cm4gc2NyYXRjaEJ1
ZmZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYWY3MzNkYTVk
NmEyM2U5YjM3ZjdiNGEwNDEwYTU5NmE3NzMxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TY3JhdGNoQnVmZmVyLmgKQEAgLTAsMCArMSwxNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFNlbmNoYSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjLiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTY3JhdGNoQnVmZmVyX2gKKyNkZWZpbmUg
U2NyYXRjaEJ1ZmZlcl9oCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJv
dW5kZWRSZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgaW5saW5lIGludCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoaW50IGQpCit7CisgICAg
cmV0dXJuICgxICsgKGQgPj4gNSkpIDw8IDU7Cit9CisKKy8vIFNvbWV0aW1lcyBhIGNvbW1vbiBv
cGVyYXRpb24gcmVxdWlyZXMgYW4gSW1hZ2VCdWZmZXIuCisvLyBJbnN0ZWFkIG9mIGNyZWF0aW5n
IGFuZCBkZXN0cm95aW5nIHRoZSBidWZmZXIgZm9yIGV2ZXJ5IG9wZXJhdGlvbiwKKy8vIHdlIGNy
ZWF0ZSBhIGJ1ZmZlciB3aGljaCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcHVyZ2VkIHZpYSBhIHRp
bWVyLgorY2xhc3MgU2NyYXRjaEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgU2NyYXRjaEJ1ZmZlcigpCisgICAgICAgIDogbV9wdXJnZVRpbWVyKHRo
aXMsICZTY3JhdGNoQnVmZmVyOjp0aW1lckZpcmVkKQorICAgICAgICAsIG1fbGFzdFdhc0luc2V0
KGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgLCBtX2J1ZmZlckluVXNlKGZh
bHNlKQorI2VuZGlmCisgICAgeworICAgIH0KKyAgICAKKyAgICBJbWFnZUJ1ZmZlciogZ2V0U2Ny
YXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X2J1ZmZlckluVXNlKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIG1fYnVmZmVySW5V
c2UgPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRl
IHRoZSBidWZmZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAgICAg
ICAgaWYgKG1faW1hZ2VCdWZmZXIgJiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0
aCgpID49IHNpemUud2lkdGgoKSAmJiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpID49IHNpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5n
ZXQoKTsKKworICAgICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCAzMiBwaXhlbHMgc28gd2Ug
ZG8gbm90IGdyb3cgdGhlIGJ1ZmZlciBmb3Igc2ltaWxhciBzaXplZCByZXF1ZXN0cy4KKyAgICAg
ICAgSW50U2l6ZSByb3VuZGVkU2l6ZShyb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS53aWR0aCgp
KSwgcm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUuaGVpZ2h0KCkpKTsKKworICAgICAgICBjbGVh
clNjcmF0Y2hCdWZmZXIoKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUocm91bmRlZFNpemUsIDEpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQo
KTsKKyAgICB9CisKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNp
emUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUpCisgICAgeworICAgICAgICBpZiAoIW1fbGFz
dFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29s
b3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3Qg
PT0gc2hhZG93UmVjdCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXpl
ID09IGxheWVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX2xh
c3RXYXNJbnNldCA9IGZhbHNlOworICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CisgICAg
ICAgIG1fbGFzdENvbG9yID0gY29sb3I7CisgICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xv
clNwYWNlOworICAgICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKKyAgICAgICAg
bV9sYXN0UmFkaWkgPSByYWRpaTsKKyAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXpl
OworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRp
dXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNw
YWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0ID09IG1fbGFz
dFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0cnVlOworICAgICAgICBtX2xhc3RJ
bnNldEJvdW5kcyA9IGJvdW5kczsKKyAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOworICAg
ICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOworICAgICAgICBtX2xhc3RDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsKKyAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9IHNoYWRvd1JlY3Q7CisgICAgICAg
IG1fbGFzdFJhZGlpID0gcmFkaWk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgdm9pZCBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCisgICAgeworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgbV9idWZmZXJJblVzZSA9IGZhbHNlOworI2VuZGlmCisgICAgICAg
IGlmIChtX3B1cmdlVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcHVyZ2VUaW1lci5z
dG9wKCk7CisKKyAgICAgICAgY29uc3QgZG91YmxlIHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFs
ID0gMjsKKyAgICAgICAgbV9wdXJnZVRpbWVyLnN0YXJ0T25lU2hvdChzY3JhdGNoQnVmZmVyUHVy
Z2VJbnRlcnZhbCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBTY3JhdGNoQnVmZmVyJiBzaGFy
ZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8U2NyYXRjaEJ1ZmZl
cj4qKQorICAgIHsKKyAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgY2xlYXJTY3JhdGNoQnVmZmVyKCkKKyAgICB7CisgICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKKyAgICB9
CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgVGltZXI8U2Ny
YXRjaEJ1ZmZlcj4gbV9wdXJnZVRpbWVyOworICAgIAorICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNl
dEJvdW5kczsKKyAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsKKyAgICBSb3VuZGVkUmVj
dDo6UmFkaWkgbV9sYXN0UmFkaWk7CisgICAgQ29sb3IgbV9sYXN0Q29sb3I7CisgICAgQ29sb3JT
cGFjZSBtX2xhc3RDb2xvclNwYWNlOworICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CisgICAg
Ym9vbCBtX2xhc3RXYXNJbnNldDsKKyAgICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIG1fYnVmZmVySW5Vc2U7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmF0Y2hCdWZmZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApp
bmRleCA3Mzg3MjczMGU1ZDEyZDI1YmQxN2FjZTZlYTg0OTRiYWFlYTc1YThjLi4wNTJmMGQwY2Vl
ODQ0NWRkZmY4ZTYwMDFhZGQ5YjY4MjRkOTk3OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2NyYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KQEAgLTQ1LDEyNSArNDYsNiBAQCBlbnVtIHsKICAgICByaWdodExvYmUgPSAxCiB9
OwogCi1zdGF0aWMgaW5saW5lIGludCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoaW50IGQpCi17Ci0g
ICAgcmV0dXJuICgxICsgKGQgPj4gNSkpIDw8IDU7Ci19Ci0KLS8vIFNoYWRvd0JsdXIgbmVlZHMg
YSBzY3JhdGNoIGltYWdlIGFzIHRoZSBidWZmZXIgZm9yIHRoZSBibHVyIGZpbHRlci4KLS8vIElu
c3RlYWQgb2YgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdGhlIGJ1ZmZlciBmb3IgZXZlcnkgb3Bl
cmF0aW9uLAotLy8gd2UgY3JlYXRlIGEgYnVmZmVyIHdoaWNoIHdpbGwgYmUgYXV0b21hdGljYWxs
eSBwdXJnZWQgdmlhIGEgdGltZXIuCi1jbGFzcyBTY3JhdGNoQnVmZmVyIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTY3JhdGNoQnVmZmVyKCkKLSAgICAgICAg
OiBtX3B1cmdlVGltZXIodGhpcywgJlNjcmF0Y2hCdWZmZXI6OnRpbWVyRmlyZWQpCi0gICAgICAg
ICwgbV9sYXN0V2FzSW5zZXQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAs
IG1fYnVmZmVySW5Vc2UoZmFsc2UpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotICAgIAotICAgIElt
YWdlQnVmZmVyKiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIW1fYnVmZmVySW5Vc2UpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICAgICAgbV9idWZmZXJJblVzZSA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgLy8gV2UgZG8gbm90
IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZmZXIgaXMgbGFy
Z2UgZW5vdWdoLgotICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlciAmJiBtX2ltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpLndpZHRoKCkgPj0gc2l6ZS53aWR0aCgpICYmIG1faW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkuaGVpZ2h0KCkgPj0gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyLmdldCgpOwotCi0gICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0
IDMyIHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVk
IHJlcXVlc3RzLgotICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxl
T2YzMihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkp
OwotCi0gICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6ZSwgMSk7Ci0gICAgICAgIHJldHVybiBt
X2ltYWdlQnVmZmVyLmdldCgpOwotICAgIH0KLQotICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBt
X2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3BhY2UgJiYg
bV9sYXN0U2hhZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAm
JiBtX2xhc3RMYXllclNpemUgPT0gbGF5ZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIG1fbGFzdFdhc0luc2V0ID0gZmFsc2U7Ci0gICAgICAgIG1fbGFzdFJhZGl1
cyA9IHJhZGl1czsKLSAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgbV9sYXN0
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgICAgIG1fbGFzdFNoYWRvd1JlY3QgPSBzaGFk
b3dSZWN0OwotICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOwotICAgICAgICBtX2xhc3RMYXll
clNpemUgPSBsYXllclNpemU7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
Ym9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWkpCi0gICAgewotICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9s
YXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xv
clNwYWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNo
YWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX2xhc3RXYXNJbnNldCA9IHRydWU7
Ci0gICAgICAgIG1fbGFzdEluc2V0Qm91bmRzID0gYm91bmRzOwotICAgICAgICBtX2xhc3RSYWRp
dXMgPSByYWRpdXM7Ci0gICAgICAgIG1fbGFzdENvbG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFz
dENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotICAgICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hh
ZG93UmVjdDsKLSAgICAgICAgbV9sYXN0UmFkaWkgPSByYWRpaTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCkKLSAg
ICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7
Ci0jZW5kaWYKLSAgICAgICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAg
ICAgbV9wdXJnZVRpbWVyLnN0b3AoKTsKLQotICAgICAgICBjb25zdCBkb3VibGUgc2NyYXRjaEJ1
ZmZlclB1cmdlSW50ZXJ2YWwgPSAyOwotICAgICAgICBtX3B1cmdlVGltZXIuc3RhcnRPbmVTaG90
KHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFNj
cmF0Y2hCdWZmZXImIHNoYXJlZCgpOwotCi1wcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxTY3JhdGNoQnVmZmVyPiopCi0gICAgewotICAgICAgICBjbGVhclNjcmF0Y2hCdWZmZXIo
KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhclNjcmF0Y2hCdWZmZXIoKQotICAgIHsKLSAg
ICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fbGFzdFJhZGl1cyA9IEZs
b2F0U2l6ZSgpOwotICAgIH0KLQotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZl
cjsKLSAgICBUaW1lcjxTY3JhdGNoQnVmZmVyPiBtX3B1cmdlVGltZXI7Ci0gICAgCi0gICAgRmxv
YXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwotICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0
OwotICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKLSAgICBDb2xvciBtX2xhc3RD
b2xvcjsKLSAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7Ci0gICAgRmxvYXRTaXplIG1f
bGFzdFJhZGl1czsKLSAgICBib29sIG1fbGFzdFdhc0luc2V0OwotICAgIEZsb2F0U2l6ZSBtX2xh
c3RMYXllclNpemU7Ci0gICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJvb2wgbV9idWZm
ZXJJblVzZTsKLSNlbmRpZgotfTsKLQotU2NyYXRjaEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2hh
cmVkKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hC
dWZmZXIsICgpKTsKLSAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKLX0KLQogc3RhdGljIGNvbnN0
IGludCB0ZW1wbGF0ZVNpZGVMZW5ndGggPSAxOwogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9JbWFnZUJ1ZmZlckJsYWNrQmVycnkuY3BwCmluZGV4IGMyYWNlNGY0Y2IwZjFmOGI5ZWE5YzA3
MDJhODdkMTU1ZTMzYmJmNmMuLjJmODMyYmFhNTJkMDJiODg0MzE1ZWY1YTZkMzJmM2ZmZTYyY2E5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvSW1hZ2VCdWZmZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHAKQEAgLTE4OSw3
ICsxODksNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
ZmxvYXQsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcgogICAgIG1fZGF0YS5tX3BsYXRmb3Jt
TGF5ZXIgPSBDYW52YXNMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlKG1fZGF0YS5tX2J1ZmZlciwg
ZHJhd2FibGUsIG1fc2l6ZSk7CiAgICAgbV9kYXRhLm1fd2luZG93ID0gd2luZG93OwogICAgIG1f
Y29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoZHJhd2FibGUpKTsKLSAgICBt
X2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9u
U2NhbGUpKTsKKyAgICByZXNldEJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVy
YXRlZENvbnRleHQocmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCk7CiAgICAgc3VjY2VzcyA9
IHRydWU7CiB9CkBAIC0yMTEsNiArMjExLDEyIEBAIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIo
KQogICAgIH0KIH0KIAordm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1f
Y29udGV4dC0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpKTsKK30KKwog
R3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOGM2MmU3ZWRh
NjVmMzcxOGE1NTc0M2QwYzdkZTJkZjkzYWE0MjQzNy4uNWNlOGEzMDYzODJhYjMzZmNkOTM0NDZh
ZjQ0NDIxZWEzMTAxNGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTEyMCw2ICsxMjAs
MTEgQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKK3ZvaWQgSW1hZ2VCdWZm
ZXI6OnJlc2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZpbmVUcmFuc2Zv
cm0oKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDRmYWI2Nzgw
MWUxZmQzODI4NTUyZDRhNmNiOWM1MTUyODZjZmJjNTIuLjlhMzI1MjQxNWU0N2I5YTFiMzNiN2Fl
NjZmZmYxYTFkOTEyNmE2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzAsOSArMTcwLDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQgPSBhZG9w
dFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4
dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgbV9jb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtc2l6ZS5oZWlnaHQoKSk7CisgICAgcmVzZXRCdWZmZXIoKTsKICAgICBtX2NvbnRleHQtPnNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJpbmcpOwogICAgIHN1Y2Nlc3Mg
PSB0cnVlOwogfQpAQCAtMTgxLDYgKzE3OSwxNCBAQCBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVy
KCkKIHsKIH0KIAordm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1fY29u
dGV4dC0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPmFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIG1fY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fbG9naWNh
bFNpemUuaGVpZ2h0KCkpOworfQorCiBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250
ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bkNFLmNwcAppbmRleCAyNzFkMTEyMGY4OWJiODU1MWJkNzljNTQxMGY3ZGZiN2I0YWFmZTI1Li44
ZjI5NDU0YTQ5OGI5MDE2YzUyZDJjMGE4ZTA5YzVkNTRjMGU2YWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bkNFLmNwcApAQCAtODksNiArODksMTEgQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7
CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQt
PnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VC
dWZmZXI6OmNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNmFlMWM3YTA0
ZDE2YTBiZGI2NjUzY2Y1ZDI0MGMxMzVhNjA2MTRhYi4uMTBmZDlmYzM0ZDQ2NzlkMThjZGFiMmQ3
MTQ0NzljN2NlM2RhOTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlUZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVk
ZSAiU2NyYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xMDYwLDIy
ICsxMDYxLDQxIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIHN0YXRlU2F2
ZXIuc2F2ZSgpOwogCiAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lUmVjdCA9IGJvdW5k
aW5nQm94Rm9yQWxsQWN0aXZlRGVjb3JhdGlvbnMoKnRoaXMsIGNvbnRleHQsIGRlY29yYXRpb24s
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCB3aWR0aCwgZG91YmxlT2Zmc2V0LCBkZWNvcmF0aW9u
U3R5bGUsIGxvY2FsT3JpZ2luLCBsaW5lU3R5bGUsIGlzUHJpbnRpbmcsIGJhc2VsaW5lKTsKLSAg
ICAgICAgICAgIEludFJlY3QgZW5jbG9zaW5nRGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
dW5kZXJsaW5lUmVjdCk7Ci0gICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKGVuY2xvc2luZ0RldmljZVJlY3Qu
c2l6ZSgpKTsKLQotICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyLmdldCgpKSB7CisgICAgICAg
ICAgICBJbnRSZWN0IGVuY2xvc2luZ1VuZGVybGluZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHVu
ZGVybGluZVJlY3QpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2Fs
ZSk7CisgICAgICAgICAgICBJbnRTaXplIHJlcXVlc3RlZEltYWdlQnVmZmVyU2l6ZSA9IGNvbnRl
eHQuY29tcGF0aWJsZUJ1ZmZlclBpeGVsU2l6ZShlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUo
KSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU2NyYXRjaEJ1ZmZlciYg
c2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpOworICAgICAgICAgICAgLy8g
R3VhcmFudGVlZCB0byBiZSBlcXVhbCBvciBsYXJnZXIgdG8gdGhlIHJlcXVlc3RlZCBzaXplCisg
ICAgICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBzY3JhdGNoQnVmZmVyLmdldFNj
cmF0Y2hCdWZmZXIocmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXplKTsKKworICAgICAgICAgICAgaWYg
KGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgSW50U2l6ZSBpbWFnZUJ1ZmZlclNpemUg
PSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5y
ZXNldENvbXBhdGlibGVCdWZmZXIoKmltYWdlQnVmZmVyKTsKICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQmIG1hc2tDb250ZXh0ID0gKmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSAxLjAg
KiBpbWFnZUJ1ZmZlclNpemUud2lkdGgoKSAvIHJlcXVlc3RlZEltYWdlQnVmZmVyU2l6ZS53aWR0
aCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHlNYWduaWZpY2F0aW9uID0gMS4wICogaW1hZ2VC
dWZmZXJTaXplLmhlaWdodCgpIC8gcmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXplLmhlaWdodCgpOwor
ICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclJlY3RJblVzZXJTcGFjZSA9IEZs
b2F0UmVjdChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LmxvY2F0aW9uKCksCisgICAgICAgICAgICAg
ICAgICAgIEZsb2F0U2l6ZShlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUoKS53aWR0aCgpICog
eE1hZ25pZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdVbmRlcmxp
bmVSZWN0LnNpemUoKS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0aW9uKSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuY2xlYXJSZWN0KGltYWdlQnVmZmVyUmVj
dEluVXNlclNwYWNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtYXNrQ29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgICAg
ICAgICAgICAgbWFza0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuc2V0TGluZUpvaW4oUm91
bmRKb2luKTsKLSAgICAgICAgICAgICAgICBtYXNrQ29udGV4dC50cmFuc2xhdGUoRmxvYXRQb2lu
dCgpIC0gZW5jbG9zaW5nRGV2aWNlUmVjdC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBt
YXNrQ29udGV4dC50cmFuc2xhdGUoRmxvYXRQb2ludCgpIC0gZW5jbG9zaW5nVW5kZXJsaW5lUmVj
dC5sb2NhdGlvbigpKTsKIAotICAgICAgICAgICAgICAgIG1hc2tDb250ZXh0LmZpbGxSZWN0KGVu
Y2xvc2luZ0RldmljZVJlY3QpOworICAgICAgICAgICAgICAgIG1hc2tDb250ZXh0LmZpbGxSZWN0
KGVuY2xvc2luZ1VuZGVybGluZVJlY3QpOwogICAgICAgICAgICAgICAgIG1hc2tDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7CiAgICAgCiAgICAgICAgICAgICAg
ICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0SW5Db250ZXh0KG1hc2tDb250ZXh0LCBza2lwSW5rR2Fw
V2lkdGgpOwogCi0gICAgICAgICAgICAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgZW5jbG9zaW5nRGV2aWNlUmVjdCk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgaW1hZ2VCdWZmZXJSZWN0SW5Vc2Vy
U3BhY2UpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChlbmNsb3NpbmdVbmRlcmxpbmVS
ZWN0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjcmF0Y2hCdWZmZXIuc2NoZWR1bGVT
Y3JhdGNoQnVmZmVyUHVyZ2UoKTsKICAgICAgICAgfQogI2VuZGlmIC8vIENTUzNfVEVYVF9ERUNP
UkFUSU9OCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERlY29yYXRpb25TdHls
ZVRvU3Ryb2tlU3R5bGUoZGVjb3JhdGlvblN0eWxlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217083</attachid>
            <date>2013-11-15 14:00:31 -0800</date>
            <delta_ts>2013-11-15 15:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124394-20131115140030.patch</filename>
            <type>text/plain</type>
            <size>35329</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA0Y2FmYTMwYzIxYWFm
ZWQyZWExMGFiNWJiMThiMTFjYTliYTMxMi4uNzE4M2Q0MDc0NTYzNTgxNjU0ZmVhMzdjZTI0YWZj
ODljYTBkMzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTExLTE1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGlzIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDM5NAorCisgICAgICAgIEluc3RlYWQgb2YgY3Jl
YXRpbmcgYW4gSU9TdXJmYWNlIGZvciBlYWNoIHRleHQgYm94IHRoYXQgZ2V0cyB1bmRlcmxpbmVz
CisgICAgICAgIG1hc2tlZCwgd2UgY2FuIHVzZSBTY3JhdGNoQnVmZmVyIChvcmlnaW5hbGx5IGlu
IFNoYWRvd0JsdXIuY3BwKSB3aGljaCByZS11c2VzCisgICAgICAgIGEgc2luZ2xlIEltYWdlQnVm
ZmVyIGFuZCBkZWxldGVzIGl0IGFzeW5jaHJvbm91c2x5IHdpdGggYSB0aW1lci4gVGhpcyBwYXRj
aAorICAgICAgICBhbHNvIGZhY3RvcnMgb3V0IGluaXRpYWwgc2V0dXAgb2YgdGhlIEltYWdlQnVm
ZmVyIGludG8gcmVzZXQoKSBmdW5jdGlvbnMsCisgICAgICAgIHdoaWNoIGFsbG93cyBmb3IgdGhp
cyByZXVzZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGQgbmV3IFNjcmF0Y2hCdWZmZXIgZmlsZXMKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBEaXR0bworICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6IERpdHRv
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOiBEaXR0
bworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKTogQWxs
b3cgcXVlcnlpbmcgaG93IGJpZyBvZgorICAgICAgICBhbiBJbWFnZUJ1ZmZlciB3ZSBuZWVkICh0
byBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSB0aGF0IGZpdHMgdGhlIGJpbGwpCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBVc2Ug
cmVzZXRDb21wYXRpYmxlQnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6cmVzZXRDb21wYXRpYmxlQnVmZmVyKTogTmV3IGZ1bmN0aW9uIHdoaWNoIHBl
cmZvcm1zIGluaXRpYWwgc2V0dXAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwOiBQdWxsZWQgb3V0
IG9mIFNoYWRvd0JsdXIuY3BwCisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpzaGFy
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuaDogRGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OnJvdW5kVXBUb011bHRpcGxlT2YzMik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRj
aEJ1ZmZlcjo6c2V0Q2FjaGVkU2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0
Y2hCdWZmZXI6OnNldENhY2hlZEluc2V0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6Y2xlYXJTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9TaGFkb3dCbHVyLmNwcDogaW5jbHVkZSBTY3JhdGNoQnVmZmVyLmgKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHA6IENy
ZWF0ZWQgbmV3IHJlc2V0QnVmZmVyKCkgZnVuY3Rpb24KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVz
ZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm8uY3BwOiBEaXR0bworICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDog
RGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0ltYWdlQnVmZmVyV2luQ0UuY3BwOiBkaXR0bworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24pOiBVc2UgU2NyYXRjaEJ1ZmZlciB0byByZS11c2UgSW1hZ2VCdWZmZXJzLgor
ICAgICAgICBJbiBhZGRpdGlvbiwgcmVzZXQgaXQgc28gd2UgZG9uJ3QgZ2V0IGdhcmJhZ2UgbGVm
dCBvdmVyIGZyb20gdGhlIGxhc3QgcnVuLgorCiAyMDEzLTExLTE0ICBWaWN0b3IgQ29zdGFuICA8
Y29zdGFuQGdtYWlsLmNvbT4KIAogICAgICAgICBYTUxTZXJpYWxpemVyIGVzY2FwZXMgPCA+ICYg
Y29ycmVjdGx5IGluc2lkZSA8c2NyaXB0PiBhbmQgPHN0eWxlPiB0YWdzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA3NGUzOGY0ZjRkYzA5ZjIyZGM4OTNiYWNjYmExYmZiZGQwNTk4OTBiLi41YmUz
NTlkZGQ4MzAxNmRlNWVhOTViYzM4OGQxNjAxMjE4ZjQ1OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTkwOCw2ICsxOTA4LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFw
aGljcy9TY3JhdGNoQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NlZ21lbnRlZEZv
bnREYXRhLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA5MWI5M2QyYzFkZjEyYWFhYjE1MGRkODE2ZDAxYjQ3MGE1MjU5YmY2Li5kNmM5
ZDllYmRjZGE4NTBjNzlhYjEyZWQ2MzAzOGEyNTExNjU1Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU4MTcsNiArNTgxNyw4IEBAIHBsYXRmb3JtX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NjcmF0Y2hCdWZmZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TY3JhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NlZ21lbnRlZEZvbnREYXRhLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggMTc1NDdjOTk0ZjhhYmE4ZDg1ZDg2Y2I3OTkzZDcy
YmUyOWQ4ZmIxNi4uNjkwOGI1MjNhMTkwODhhZmE1ZmJmZDM4MGVlZGJkYTI5ZTczMzdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03
NjU3LDYgKzc2NTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcUGF0dGVybi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xSZWdpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dC
bHVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XFNpbXBsZUZvbnREYXRhLmNwcCIgLz4KQEAgLTE5MTkyLDYgKzE5MTkzLDcgQEAKICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3JtTGF5ZXIuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJlZ2lvbi5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJl
Y3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNj
cmF0Y2hCdWZmZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xTaGFkb3dCbHVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTaW1wbGVGb250RGF0YS5oIiAvPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CmluZGV4IGQwOGYzZDljODFhNTM5OWZiYzRjNjAwY2NmYWNlZGYyMGMyNTdjMDQuLjg2OWVmYzY3
NTUyNTUxNzFlYTQ2MzNlNTE1MTc4ZDE4NWEzZDNkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzNjIs
NiArMTM2Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xSb3VuZGVkUmVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcU2NyYXRjaEJ1ZmZlci5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxn
cmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcU2VnbWVudGVkRm9udERhdGEuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgz
ODUsNiArODM4OCw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xSb3VuZGVkUmVjdC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXFNjcmF0Y2hCdWZmZXIuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdy
YXBoaWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xTZWdtZW50ZWRGb250RGF0YS5oIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODkx
N2VjMDhlMzg5YWQ0NmExNzUzMmZhYTljMWRmZDZjYzUwNjIyLi42OTkxMTk4YmFlZmYyZTc1YjI4
NmJkZGRhODIwMjJmNjZiNTUyYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTYsNiArODU2LDggQEAKIAkJMUNBRjM0ODEw
QTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdl
YlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBB
NkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRj
aEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuaCAqLzsgfTsKKwkJMUNC
MDNGQjYxODM2QkVDMjAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCMDNGQjUxODM2QkVDMjAwNzUwRjM0
IC8qIFNjcmF0Y2hCdWZmZXIuY3BwICovOyB9OwogCQkxQ0I0MjE0QTBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NRG9jdW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDYwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTURvY3VtZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJMUNCNDIxNEIwQUYyQjJDQTAwODVBRDkx
IC8qIERPTUVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDkwQUM1RDUzNDAwNTMyNzBGIC8q
IERPTUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQkxQ0I0MjE0QzBBRjJCMkNBMDA4NUFEOTEg
LyogRE9NSFRNTEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNTgwQUM1RDUzNDAwNTMyNzBG
IC8qIERPTUhUTUxFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTc0NTAsNiArNzQ1Miw4IEBA
CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3Jp
cHRPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUNCMDNGQjIxODM2QkEzNzAwNzUwRjM0IC8qIFNjcmF0Y2hCdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyYXRjaEJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0IwM0ZCNTE4MzZCRUMyMDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jh
dGNoQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDQTczMjExMEFE
RDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRDBCNjIwMEFBQkRCNTAwMEQwQTNGRiAvKiBQdWJs
aWNET01JbnRlcmZhY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1Ymxp
Y0RPTUludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQw
QkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xOTI5MCw2ICsxOTI5NCw4IEBACiAJCQkJNTAxQkFBQTgxMzk1MEUyQzAw
RjdBQ0VCIC8qIFdpbmRSdWxlLmggKi8sCiAJCQkJMzc5OTE5OTQxMjAwRERGNDAwRUEwNDFDIC8q
IFdPRkZGaWxlRm9ybWF0LmNwcCAqLywKIAkJCQkzNzk5MTk5NTEyMDBEREY0MDBFQTA0MUMgLyog
V09GRkZpbGVGb3JtYXQuaCAqLywKKwkJCQkxQ0IwM0ZCMjE4MzZCQTM3MDA3NTBGMzQgLyogU2Ny
YXRjaEJ1ZmZlci5oICovLAorCQkJCTFDQjAzRkI1MTgzNkJFQzIwMDc1MEYzNCAvKiBTY3JhdGNo
QnVmZmVyLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZ3JhcGhpY3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjMyNjUsNiArMjMyNzEsNyBAQAogCQkJCUIyNzUzNTc2MEIwNTM4
MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEEw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxOEY4ODA1MEZGOTU3QUYwMDgwRjA0NSAvKiBKU0Fic3RyYWN0V29ya2VyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkxQ0IwM0ZCNDE4MzZCQTM3MDA3NTBGMzQgLyogU2NyYXRjaEJ1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkRBMTVFQ0ExMkIwM0Y1MDAwM0E1ODNBIC8qIEpTQW5hbHlz
ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzMzdGNDE4MTI1QUUzMDAwN0EyNDYgLyog
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzFEQjA5
RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTYzLDYgKzI2
OTcwLDcgQEAKIAkJCQlCMkZBM0Q5NDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDk2MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR0ZpbHRlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RUMx
ODE4NTFBQzAwOUY4MjFEIC8qIENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxQ0IwM0ZCNjE4MzZCRUMyMDA3NTBGMzQgLyogU2NyYXRjaEJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNTBDRUYwQzA3MDBEMzlENTQgLyog
SlNTVkdGb250RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODNCNzkwNDBDQ0FGRjE1
MDAwQjA4MjUgLyogSlNTVkdGb250RmFjZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTgzQjc5MDEwQ0NBRkYxNTAwMEIwODI1IC8qIEpTU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2
OTJlNGM0YTQ4YTljYi4uZWRkMzcyNTc4MzY4ODQ0ZjdiZDRjNWY3MjFhNDdmNDgxNmI5MzEyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC04MDMsMjUgKzgwMywzOCBAQCBzdGF0aWMgYm9vbCBzY2FsZXNNYXRjaChB
ZmZpbmVUcmFuc2Zvcm0gYSwgQWZmaW5lVHJhbnNmb3JtIGIpCiAgICAgcmV0dXJuIGEueFNjYWxl
KCkgPT0gYi54U2NhbGUoKSAmJiBhLnlTY2FsZSgpID09IGIueVNjYWxlKCk7CiB9CiAKLVBhc3NP
d25QdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBJbnRTaXplJiBzaXplLCBib29sIGhhc0FscGhhKSBjb25zdAorSW50U2l6ZSBHcmFw
aGljc0NvbnRleHQ6OmNvbXBhdGlibGVCdWZmZXJQaXhlbFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIGNvbnN0CiB7CiAgICAgLy8gTWFr
ZSB0aGUgYnVmZmVyIGxhcmdlciBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5n
IGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKICAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVs
IHBlciB1bml0LiBBbHNvIHNldCB1cCBhIGNvcnJlc3BvbmRpbmcgc2NhbGUgZmFjdG9yIG9uIHRo
ZQogICAgIC8vIGdyYXBoaWNzIGNvbnRleHQuCisgICAgcmV0dXJuIEludFNpemUoc3RhdGljX2Nh
c3Q8aW50PihjZWlsKHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KGNlaWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKK30K
IAorUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaGFzQWxwaGEpIGNvbnN0Cit7CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKTsKLSAgICBJbnRTaXplIHNjYWxlZFNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWls
KHNpemUud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWwoc2l6ZS5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKKyAgICBJbnRTaXplIHNj
YWxlZFNpemUgPSBjb21wYXRpYmxlQnVmZmVyUGl4ZWxTaXplKHNpemUsIHRyYW5zZm9ybSk7CiAK
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHRoaXMsIGhh
c0FscGhhKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBidWZmZXItPmNvbnRleHQoKS0+c2NhbGUoRmxvYXRTaXplKHN0YXRpY19jYXN0PGZsb2F0Pihz
Y2FsZWRTaXplLndpZHRoKCkpIC8gc2l6ZS53aWR0aCgpLAotICAgICAgICBzdGF0aWNfY2FzdDxm
bG9hdD4oc2NhbGVkU2l6ZS5oZWlnaHQoKSkgLyBzaXplLmhlaWdodCgpKSk7CisgICAgcmVzZXRD
b21wYXRpYmxlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXNldENvbXBhdGlibGVCdWZmZXIoSW1hZ2VC
dWZmZXImIGJ1ZmZlcikgY29uc3QKK3sKKyAgICBJbnRTaXplIHNpemUgPSBidWZmZXIubG9naWNh
bFNpemUoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ2V0Q1RNKERlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNvbXBhdGli
bGVCdWZmZXJQaXhlbFNpemUoc2l6ZSwgdHJhbnNmb3JtKTsKKyAgICBidWZmZXIucmVzZXRCdWZm
ZXIoKTsKKyAgICBidWZmZXIuY29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNjYWxlZFNpemUud2lkdGgoKSkgLyBzaXplLndpZHRoKCksCisgICAgICAgIHN0YXRp
Y19jYXN0PGZsb2F0PihzY2FsZWRTaXplLmhlaWdodCgpKSAvIHNpemUuaGVpZ2h0KCkpKTsKK30K
KwogYm9vbCBHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIoSW1hZ2VCdWZm
ZXIqIGJ1ZmZlcikgY29uc3QKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlckNvbnRleHQg
PSBidWZmZXItPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggNDg1MzUxMTgzZjg1ZTRkNmUzOWRiNjc3Y2I4
MzBhYzIzZWY5ZDE3Yi4uNzhkZjhlNjEzNThlZjUzNzhhZjJhMGRmOTQ0ZTZkYzVkMzI1Mjk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTQxNSw2ICs0MTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAv
LyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNvbnRleHQsIHdp
dGggc3VpdGFibGUgcmVzb2x1dGlvbgogICAgICAgICAvLyBmb3IgZHJhd2luZyBpbnRvIHRoZSBi
dWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgICAgIFBhc3NPd25QdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGJvb2wgaGFz
QWxwaGEgPSB0cnVlKSBjb25zdDsKKyAgICAgICAgLy8gVGhlIHNpemUgaW4gcGl4ZWxzIHRoYXQg
YSBjb21wYXRpYmxlIGJ1ZmZlciB3b3VsZCBiZSBpZiB5b3UgYXNrZWQgZm9yIG9uZSB3aXRoIHRo
ZQorICAgICAgICAvLyBnaXZlbiBsb2dpY2FsIHNpemUKKyAgICAgICAgSW50U2l6ZSBjb21wYXRp
YmxlQnVmZmVyUGl4ZWxTaXplKGNvbnN0IEludFNpemUmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KSBjb25zdDsKKyAgICAgICAgdm9pZCByZXNldENvbXBhdGlibGVCdWZmZXIoSW1hZ2VCdWZmZXIm
KSBjb25zdDsKICAgICAgICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoQnVmZmVyKEltYWdlQnVmZmVy
KikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBkZXZpY2Ug
c2NhbGUgZmFjdG9yIHRvIHRoZSBjb250ZXh0LCBtYWtpbmcgdGhlIGNvbnRleHQgY2FwYWJsZSBv
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggMWQ0ZjA4NWZkMWY0NzJiNGE4M2FlYWU2OTM4ZmFjMGM2Y2Y0OWRiMi4uMDI3Zjg4MDlkYjEx
MGFhMTE1MjM4YWY4NjQ1MWY2ZDlmZDNkZTMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC05MSw2ICs5MSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICAg
ICAgfkltYWdlQnVmZmVyKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHJlc2V0QnVmZmVyKCk7
CiAKICAgICAgICAgLy8gVGhlIGFjdHVhbCByZXNvbHV0aW9uIG9mIHRoZSBiYWNraW5nIHN0b3Jl
CiAgICAgICAgIGNvbnN0IEludFNpemUmIGludGVybmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2Ny
YXRjaEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TY3JhdGNo
QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTBlNjk5NWFlZDc2OTI0ZGZkYWY1Y2VjNjc1MGM0ZDFi
ZmQ0YzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2NyYXRjaEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgU2VuY2hhLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMyBEaWdpYSBQbGMuIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyYXRjaEJ1ZmZlci5oIgorCisjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2NyYXRjaEJ1
ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hCdWZmZXIsICgpKTsKKyAgICByZXR1cm4gc2NyYXRjaEJ1
ZmZlcjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2NyYXRjaEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYWY3MzNkYTVk
NmEyM2U5YjM3ZjdiNGEwNDEwYTU5NmE3NzMxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TY3JhdGNoQnVmZmVyLmgKQEAgLTAsMCArMSwxNTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIFNlbmNoYSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjLiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBTY3JhdGNoQnVmZmVyX2gKKyNkZWZpbmUg
U2NyYXRjaEJ1ZmZlcl9oCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJv
dW5kZWRSZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgaW5saW5lIGludCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoaW50IGQpCit7CisgICAg
cmV0dXJuICgxICsgKGQgPj4gNSkpIDw8IDU7Cit9CisKKy8vIFNvbWV0aW1lcyBhIGNvbW1vbiBv
cGVyYXRpb24gcmVxdWlyZXMgYW4gSW1hZ2VCdWZmZXIuCisvLyBJbnN0ZWFkIG9mIGNyZWF0aW5n
IGFuZCBkZXN0cm95aW5nIHRoZSBidWZmZXIgZm9yIGV2ZXJ5IG9wZXJhdGlvbiwKKy8vIHdlIGNy
ZWF0ZSBhIGJ1ZmZlciB3aGljaCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcHVyZ2VkIHZpYSBhIHRp
bWVyLgorY2xhc3MgU2NyYXRjaEJ1ZmZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgU2NyYXRjaEJ1ZmZlcigpCisgICAgICAgIDogbV9wdXJnZVRpbWVyKHRo
aXMsICZTY3JhdGNoQnVmZmVyOjp0aW1lckZpcmVkKQorICAgICAgICAsIG1fbGFzdFdhc0luc2V0
KGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgLCBtX2J1ZmZlckluVXNlKGZh
bHNlKQorI2VuZGlmCisgICAgeworICAgIH0KKyAgICAKKyAgICBJbWFnZUJ1ZmZlciogZ2V0U2Ny
YXRjaEJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFt
X2J1ZmZlckluVXNlKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIG1fYnVmZmVySW5V
c2UgPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRl
IHRoZSBidWZmZXIgaWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAgICAg
ICAgaWYgKG1faW1hZ2VCdWZmZXIgJiYgbV9pbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKS53aWR0
aCgpID49IHNpemUud2lkdGgoKSAmJiBtX2ltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpLmhlaWdo
dCgpID49IHNpemUuaGVpZ2h0KCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5n
ZXQoKTsKKworICAgICAgICAvLyBSb3VuZCB0byB0aGUgbmVhcmVzdCAzMiBwaXhlbHMgc28gd2Ug
ZG8gbm90IGdyb3cgdGhlIGJ1ZmZlciBmb3Igc2ltaWxhciBzaXplZCByZXF1ZXN0cy4KKyAgICAg
ICAgSW50U2l6ZSByb3VuZGVkU2l6ZShyb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS53aWR0aCgp
KSwgcm91bmRVcFRvTXVsdGlwbGVPZjMyKHNpemUuaGVpZ2h0KCkpKTsKKworICAgICAgICBjbGVh
clNjcmF0Y2hCdWZmZXIoKTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUocm91bmRlZFNpemUsIDEpOworICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQo
KTsKKyAgICB9CisKKyAgICBib29sIHNldENhY2hlZFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNp
emUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRp
aSwgY29uc3QgRmxvYXRTaXplJiBsYXllclNpemUpCisgICAgeworICAgICAgICBpZiAoIW1fbGFz
dFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29s
b3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIG1fbGFzdFNoYWRvd1JlY3Qg
PT0gc2hhZG93UmVjdCAmJiAgbV9sYXN0UmFkaWkgPT0gcmFkaWkgJiYgbV9sYXN0TGF5ZXJTaXpl
ID09IGxheWVyU2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX2xh
c3RXYXNJbnNldCA9IGZhbHNlOworICAgICAgICBtX2xhc3RSYWRpdXMgPSByYWRpdXM7CisgICAg
ICAgIG1fbGFzdENvbG9yID0gY29sb3I7CisgICAgICAgIG1fbGFzdENvbG9yU3BhY2UgPSBjb2xv
clNwYWNlOworICAgICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hhZG93UmVjdDsKKyAgICAgICAg
bV9sYXN0UmFkaWkgPSByYWRpaTsKKyAgICAgICAgbV9sYXN0TGF5ZXJTaXplID0gbGF5ZXJTaXpl
OworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fbGFzdFdhc0luc2V0ICYmIG1fbGFzdFJhZGl1cyA9PSByYWRp
dXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xvclNw
YWNlICYmIG1fbGFzdEluc2V0Qm91bmRzID09IGJvdW5kcyAmJiBzaGFkb3dSZWN0ID09IG1fbGFz
dFNoYWRvd1JlY3QgJiYgcmFkaWkgPT0gbV9sYXN0UmFkaWkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSB0cnVlOworICAgICAgICBtX2xhc3RJ
bnNldEJvdW5kcyA9IGJvdW5kczsKKyAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVzOworICAg
ICAgICBtX2xhc3RDb2xvciA9IGNvbG9yOworICAgICAgICBtX2xhc3RDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsKKyAgICAgICAgbV9sYXN0U2hhZG93UmVjdCA9IHNoYWRvd1JlY3Q7CisgICAgICAg
IG1fbGFzdFJhZGlpID0gcmFkaWk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgdm9pZCBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCisgICAgeworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICAgICAgbV9idWZmZXJJblVzZSA9IGZhbHNlOworI2VuZGlmCisgICAgICAg
IGlmIChtX3B1cmdlVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcHVyZ2VUaW1lci5z
dG9wKCk7CisKKyAgICAgICAgY29uc3QgZG91YmxlIHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFs
ID0gMjsKKyAgICAgICAgbV9wdXJnZVRpbWVyLnN0YXJ0T25lU2hvdChzY3JhdGNoQnVmZmVyUHVy
Z2VJbnRlcnZhbCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBTY3JhdGNoQnVmZmVyJiBzaGFy
ZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8U2NyYXRjaEJ1ZmZl
cj4qKQorICAgIHsKKyAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgY2xlYXJTY3JhdGNoQnVmZmVyKCkKKyAgICB7CisgICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBudWxscHRyOworICAgICAgICBtX2xhc3RSYWRpdXMgPSBGbG9hdFNpemUoKTsKKyAgICB9
CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgVGltZXI8U2Ny
YXRjaEJ1ZmZlcj4gbV9wdXJnZVRpbWVyOworICAgIAorICAgIEZsb2F0UmVjdCBtX2xhc3RJbnNl
dEJvdW5kczsKKyAgICBGbG9hdFJlY3QgbV9sYXN0U2hhZG93UmVjdDsKKyAgICBSb3VuZGVkUmVj
dDo6UmFkaWkgbV9sYXN0UmFkaWk7CisgICAgQ29sb3IgbV9sYXN0Q29sb3I7CisgICAgQ29sb3JT
cGFjZSBtX2xhc3RDb2xvclNwYWNlOworICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7CisgICAg
Ym9vbCBtX2xhc3RXYXNJbnNldDsKKyAgICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIG1fYnVmZmVySW5Vc2U7CisjZW5kaWYK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmF0Y2hCdWZmZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApp
bmRleCA3Mzg3MjczMGU1ZDEyZDI1YmQxN2FjZTZlYTg0OTRiYWFlYTc1YThjLi4wNTJmMGQwY2Vl
ODQ0NWRkZmY4ZTYwMDFhZGQ5YjY4MjRkOTk3OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiU2NyYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KQEAgLTQ1LDEyNSArNDYsNiBAQCBlbnVtIHsKICAgICByaWdodExvYmUgPSAxCiB9
OwogCi1zdGF0aWMgaW5saW5lIGludCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoaW50IGQpCi17Ci0g
ICAgcmV0dXJuICgxICsgKGQgPj4gNSkpIDw8IDU7Ci19Ci0KLS8vIFNoYWRvd0JsdXIgbmVlZHMg
YSBzY3JhdGNoIGltYWdlIGFzIHRoZSBidWZmZXIgZm9yIHRoZSBibHVyIGZpbHRlci4KLS8vIElu
c3RlYWQgb2YgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdGhlIGJ1ZmZlciBmb3IgZXZlcnkgb3Bl
cmF0aW9uLAotLy8gd2UgY3JlYXRlIGEgYnVmZmVyIHdoaWNoIHdpbGwgYmUgYXV0b21hdGljYWxs
eSBwdXJnZWQgdmlhIGEgdGltZXIuCi1jbGFzcyBTY3JhdGNoQnVmZmVyIHsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBTY3JhdGNoQnVmZmVyKCkKLSAgICAgICAg
OiBtX3B1cmdlVGltZXIodGhpcywgJlNjcmF0Y2hCdWZmZXI6OnRpbWVyRmlyZWQpCi0gICAgICAg
ICwgbV9sYXN0V2FzSW5zZXQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICAs
IG1fYnVmZmVySW5Vc2UoZmFsc2UpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotICAgIAotICAgIElt
YWdlQnVmZmVyKiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIW1fYnVmZmVySW5Vc2UpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAg
ICAgICAgbV9idWZmZXJJblVzZSA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgLy8gV2UgZG8gbm90
IG5lZWQgdG8gcmVjcmVhdGUgdGhlIGJ1ZmZlciBpZiB0aGUgY3VycmVudCBidWZmZXIgaXMgbGFy
Z2UgZW5vdWdoLgotICAgICAgICBpZiAobV9pbWFnZUJ1ZmZlciAmJiBtX2ltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpLndpZHRoKCkgPj0gc2l6ZS53aWR0aCgpICYmIG1faW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkuaGVpZ2h0KCkgPj0gc2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgICAgIHJldHVy
biBtX2ltYWdlQnVmZmVyLmdldCgpOwotCi0gICAgICAgIC8vIFJvdW5kIHRvIHRoZSBuZWFyZXN0
IDMyIHBpeGVscyBzbyB3ZSBkbyBub3QgZ3JvdyB0aGUgYnVmZmVyIGZvciBzaW1pbGFyIHNpemVk
IHJlcXVlc3RzLgotICAgICAgICBJbnRTaXplIHJvdW5kZWRTaXplKHJvdW5kVXBUb011bHRpcGxl
T2YzMihzaXplLndpZHRoKCkpLCByb3VuZFVwVG9NdWx0aXBsZU9mMzIoc2l6ZS5oZWlnaHQoKSkp
OwotCi0gICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwotICAgICAgICBtX2ltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6ZSwgMSk7Ci0gICAgICAgIHJldHVybiBt
X2ltYWdlQnVmZmVyLmdldCgpOwotICAgIH0KLQotICAgIGJvb2wgc2V0Q2FjaGVkU2hhZG93VmFs
dWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVk
UmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBGbG9hdFNpemUmIGxheWVyU2l6ZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghbV9sYXN0V2FzSW5zZXQgJiYgbV9sYXN0UmFkaXVzID09IHJhZGl1cyAmJiBt
X2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xvclNwYWNlID09IGNvbG9yU3BhY2UgJiYg
bV9sYXN0U2hhZG93UmVjdCA9PSBzaGFkb3dSZWN0ICYmICBtX2xhc3RSYWRpaSA9PSByYWRpaSAm
JiBtX2xhc3RMYXllclNpemUgPT0gbGF5ZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIG1fbGFzdFdhc0luc2V0ID0gZmFsc2U7Ci0gICAgICAgIG1fbGFzdFJhZGl1
cyA9IHJhZGl1czsKLSAgICAgICAgbV9sYXN0Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgbV9sYXN0
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7Ci0gICAgICAgIG1fbGFzdFNoYWRvd1JlY3QgPSBzaGFk
b3dSZWN0OwotICAgICAgICBtX2xhc3RSYWRpaSA9IHJhZGlpOwotICAgICAgICBtX2xhc3RMYXll
clNpemUgPSBsYXllclNpemU7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
Ym9vbCBzZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhjb25zdCBGbG9hdFNpemUmIHJhZGl1cywg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWkpCi0gICAgewotICAgICAgICBpZiAobV9sYXN0V2FzSW5zZXQgJiYgbV9s
YXN0UmFkaXVzID09IHJhZGl1cyAmJiBtX2xhc3RDb2xvciA9PSBjb2xvciAmJiBtX2xhc3RDb2xv
clNwYWNlID09IGNvbG9yU3BhY2UgJiYgbV9sYXN0SW5zZXRCb3VuZHMgPT0gYm91bmRzICYmIHNo
YWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX2xhc3RXYXNJbnNldCA9IHRydWU7
Ci0gICAgICAgIG1fbGFzdEluc2V0Qm91bmRzID0gYm91bmRzOwotICAgICAgICBtX2xhc3RSYWRp
dXMgPSByYWRpdXM7Ci0gICAgICAgIG1fbGFzdENvbG9yID0gY29sb3I7Ci0gICAgICAgIG1fbGFz
dENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOwotICAgICAgICBtX2xhc3RTaGFkb3dSZWN0ID0gc2hh
ZG93UmVjdDsKLSAgICAgICAgbV9sYXN0UmFkaWkgPSByYWRpaTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCkKLSAg
ICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7
Ci0jZW5kaWYKLSAgICAgICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAg
ICAgbV9wdXJnZVRpbWVyLnN0b3AoKTsKLQotICAgICAgICBjb25zdCBkb3VibGUgc2NyYXRjaEJ1
ZmZlclB1cmdlSW50ZXJ2YWwgPSAyOwotICAgICAgICBtX3B1cmdlVGltZXIuc3RhcnRPbmVTaG90
KHNjcmF0Y2hCdWZmZXJQdXJnZUludGVydmFsKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIFNj
cmF0Y2hCdWZmZXImIHNoYXJlZCgpOwotCi1wcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxTY3JhdGNoQnVmZmVyPiopCi0gICAgewotICAgICAgICBjbGVhclNjcmF0Y2hCdWZmZXIo
KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhclNjcmF0Y2hCdWZmZXIoKQotICAgIHsKLSAg
ICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fbGFzdFJhZGl1cyA9IEZs
b2F0U2l6ZSgpOwotICAgIH0KLQotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZl
cjsKLSAgICBUaW1lcjxTY3JhdGNoQnVmZmVyPiBtX3B1cmdlVGltZXI7Ci0gICAgCi0gICAgRmxv
YXRSZWN0IG1fbGFzdEluc2V0Qm91bmRzOwotICAgIEZsb2F0UmVjdCBtX2xhc3RTaGFkb3dSZWN0
OwotICAgIFJvdW5kZWRSZWN0OjpSYWRpaSBtX2xhc3RSYWRpaTsKLSAgICBDb2xvciBtX2xhc3RD
b2xvcjsKLSAgICBDb2xvclNwYWNlIG1fbGFzdENvbG9yU3BhY2U7Ci0gICAgRmxvYXRTaXplIG1f
bGFzdFJhZGl1czsKLSAgICBib29sIG1fbGFzdFdhc0luc2V0OwotICAgIEZsb2F0U2l6ZSBtX2xh
c3RMYXllclNpemU7Ci0gICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIGJvb2wgbV9idWZm
ZXJJblVzZTsKLSNlbmRpZgotfTsKLQotU2NyYXRjaEJ1ZmZlciYgU2NyYXRjaEJ1ZmZlcjo6c2hh
cmVkKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNjcmF0Y2hCdWZmZXIsIHNjcmF0Y2hC
dWZmZXIsICgpKTsKLSAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcjsKLX0KLQogc3RhdGljIGNvbnN0
IGludCB0ZW1wbGF0ZVNpZGVMZW5ndGggPSAxOwogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbWFnZUJ1ZmZlckJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9JbWFnZUJ1ZmZlckJsYWNrQmVycnkuY3BwCmluZGV4IGMyYWNlNGY0Y2IwZjFmOGI5ZWE5YzA3
MDJhODdkMTU1ZTMzYmJmNmMuLjJmODMyYmFhNTJkMDJiODg0MzE1ZWY1YTZkMzJmM2ZmZTYyY2E5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvSW1hZ2VCdWZmZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0ltYWdlQnVmZmVyQmxhY2tCZXJyeS5jcHAKQEAgLTE4OSw3
ICsxODksNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
ZmxvYXQsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcgogICAgIG1fZGF0YS5tX3BsYXRmb3Jt
TGF5ZXIgPSBDYW52YXNMYXllcldlYktpdFRocmVhZDo6Y3JlYXRlKG1fZGF0YS5tX2J1ZmZlciwg
ZHJhd2FibGUsIG1fc2l6ZSk7CiAgICAgbV9kYXRhLm1fd2luZG93ID0gd2luZG93OwogICAgIG1f
Y29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoZHJhd2FibGUpKTsKLSAgICBt
X2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9u
U2NhbGUpKTsKKyAgICByZXNldEJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+c2V0SXNBY2NlbGVy
YXRlZENvbnRleHQocmVuZGVyaW5nTW9kZSA9PSBBY2NlbGVyYXRlZCk7CiAgICAgc3VjY2VzcyA9
IHRydWU7CiB9CkBAIC0yMTEsNiArMjExLDEyIEBAIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIo
KQogICAgIH0KIH0KIAordm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1f
Y29udGV4dC0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZShtX3Jlc29sdXRpb25TY2FsZSwgbV9yZXNvbHV0aW9uU2NhbGUpKTsKK30KKwog
R3JhcGhpY3NDb250ZXh0KiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fY29udGV4dC5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggOGM2MmU3ZWRh
NjVmMzcxOGE1NTc0M2QwYzdkZTJkZjkzYWE0MjQzNy4uNWNlOGEzMDYzODJhYjMzZmNkOTM0NDZh
ZjQ0NDIxZWEzMTAxNGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTEyMCw2ICsxMjAs
MTEgQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKK3ZvaWQgSW1hZ2VCdWZm
ZXI6OnJlc2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQtPnNldENUTShBZmZpbmVUcmFuc2Zv
cm0oKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDRmYWI2Nzgw
MWUxZmQzODI4NTUyZDRhNmNiOWM1MTUyODZjZmJjNTIuLjlhMzI1MjQxNWU0N2I5YTFiMzNiN2Fl
NjZmZmYxYTFkOTEyNmE2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNzAsOSArMTcwLDcgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgQ29sb3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQgPSBhZG9w
dFB0cihuZXcgR3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dC5nZXQoKSkpOwotICAgIG1fY29udGV4
dC0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgbV9jb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtc2l6ZS5oZWlnaHQoKSk7CisgICAgcmVzZXRCdWZmZXIoKTsKICAgICBtX2NvbnRleHQtPnNl
dElzQWNjZWxlcmF0ZWRDb250ZXh0KGFjY2VsZXJhdGVSZW5kZXJpbmcpOwogICAgIHN1Y2Nlc3Mg
PSB0cnVlOwogfQpAQCAtMTgxLDYgKzE3OSwxNCBAQCBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVy
KCkKIHsKIH0KIAordm9pZCBJbWFnZUJ1ZmZlcjo6cmVzZXRCdWZmZXIoKQoreworICAgIG1fY29u
dGV4dC0+c2V0Q1RNKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX2NvbnRleHQtPmFwcGx5RGV2
aWNlU2NhbGVGYWN0b3IobV9yZXNvbHV0aW9uU2NhbGUpOworICAgIG1fY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CisgICAgbV9jb250ZXh0LT50cmFuc2xhdGUoMCwgLW1fbG9naWNh
bFNpemUuaGVpZ2h0KCkpOworfQorCiBHcmFwaGljc0NvbnRleHQqIEltYWdlQnVmZmVyOjpjb250
ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvSW1hZ2VCdWZmZXJXaW5DRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bkNFLmNwcAppbmRleCAyNzFkMTEyMGY4OWJiODU1MWJkNzljNTQxMGY3ZGZiN2I0YWFmZTI1Li44
ZjI5NDU0YTQ5OGI5MDE2YzUyZDJjMGE4ZTA5YzVkNTRjMGU2YWZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldpbkNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9JbWFnZUJ1ZmZlcldp
bkNFLmNwcApAQCAtODksNiArODksMTEgQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7
CiB9CiAKK3ZvaWQgSW1hZ2VCdWZmZXI6OnJlc2V0QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRleHQt
PnNldENUTShBZmZpbmVUcmFuc2Zvcm0oKSk7Cit9CisKIEdyYXBoaWNzQ29udGV4dCogSW1hZ2VC
dWZmZXI6OmNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNmFlMWM3YTA0
ZDE2YTBiZGI2NjUzY2Y1ZDI0MGMxMzVhNjA2MTRhYi4uOWU1OTc1OGMwOWZhNmU1YTZlNzdhMjBl
NjAxYjdiNWEyN2Y4ZDVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclJ1YnlUZXh0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVk
ZSAiU2NyYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC0xMDYwLDIy
ICsxMDYxLDM5IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIHN0YXRlU2F2
ZXIuc2F2ZSgpOwogCiAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lUmVjdCA9IGJvdW5k
aW5nQm94Rm9yQWxsQWN0aXZlRGVjb3JhdGlvbnMoKnRoaXMsIGNvbnRleHQsIGRlY29yYXRpb24s
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCB3aWR0aCwgZG91YmxlT2Zmc2V0LCBkZWNvcmF0aW9u
U3R5bGUsIGxvY2FsT3JpZ2luLCBsaW5lU3R5bGUsIGlzUHJpbnRpbmcsIGJhc2VsaW5lKTsKLSAg
ICAgICAgICAgIEludFJlY3QgZW5jbG9zaW5nRGV2aWNlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
dW5kZXJsaW5lUmVjdCk7Ci0gICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKGVuY2xvc2luZ0RldmljZVJlY3Qu
c2l6ZSgpKTsKLQotICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyLmdldCgpKSB7CisgICAgICAg
ICAgICBJbnRSZWN0IGVuY2xvc2luZ1VuZGVybGluZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHVu
ZGVybGluZVJlY3QpOworICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2Fs
ZSk7CisgICAgICAgICAgICBJbnRTaXplIHJlcXVlc3RlZEltYWdlQnVmZmVyU2l6ZSA9IGNvbnRl
eHQuY29tcGF0aWJsZUJ1ZmZlclBpeGVsU2l6ZShlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUo
KSwgdHJhbnNmb3JtKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU2NyYXRjaEJ1ZmZlciYg
c2NyYXRjaEJ1ZmZlciA9IFNjcmF0Y2hCdWZmZXI6OnNoYXJlZCgpOworICAgICAgICAgICAgLy8g
R3VhcmFudGVlZCB0byBiZSBlcXVhbCBvciBsYXJnZXIgdG8gdGhlIHJlcXVlc3RlZCBzaXplCisg
ICAgICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBzY3JhdGNoQnVmZmVyLmdldFNj
cmF0Y2hCdWZmZXIocmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXplKTsKKworICAgICAgICAgICAgaWYg
KGltYWdlQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgSW50U2l6ZSBpbWFnZUJ1ZmZlclNpemUg
PSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5y
ZXNldENvbXBhdGlibGVCdWZmZXIoKmltYWdlQnVmZmVyKTsKICAgICAgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQmIG1hc2tDb250ZXh0ID0gKmltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmxvYXQgeE1hZ25pZmljYXRpb24gPSAxLjAg
KiBpbWFnZUJ1ZmZlclNpemUud2lkdGgoKSAvIHJlcXVlc3RlZEltYWdlQnVmZmVyU2l6ZS53aWR0
aCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHlNYWduaWZpY2F0aW9uID0gMS4wICogaW1hZ2VC
dWZmZXJTaXplLmhlaWdodCgpIC8gcmVxdWVzdGVkSW1hZ2VCdWZmZXJTaXplLmhlaWdodCgpOwor
ICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclJlY3RJblVzZXJTcGFjZSA9IEZs
b2F0UmVjdChlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LmxvY2F0aW9uKCksCisgICAgICAgICAgICAg
ICAgICAgIEZsb2F0U2l6ZShlbmNsb3NpbmdVbmRlcmxpbmVSZWN0LnNpemUoKS53aWR0aCgpICog
eE1hZ25pZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdVbmRlcmxp
bmVSZWN0LnNpemUoKS5oZWlnaHQoKSAqIHlNYWduaWZpY2F0aW9uKSk7CisKKyAgICAgICAgICAg
ICAgICBtYXNrQ29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAgICAgICAgbWFza0NvbnRleHQuc2V0
TGluZUpvaW4oUm91bmRKb2luKTsKLSAgICAgICAgICAgICAgICBtYXNrQ29udGV4dC50cmFuc2xh
dGUoRmxvYXRQb2ludCgpIC0gZW5jbG9zaW5nRGV2aWNlUmVjdC5sb2NhdGlvbigpKTsKKyAgICAg
ICAgICAgICAgICBtYXNrQ29udGV4dC50cmFuc2xhdGUoRmxvYXRQb2ludCgpIC0gZW5jbG9zaW5n
VW5kZXJsaW5lUmVjdC5sb2NhdGlvbigpKTsKIAotICAgICAgICAgICAgICAgIG1hc2tDb250ZXh0
LmZpbGxSZWN0KGVuY2xvc2luZ0RldmljZVJlY3QpOworICAgICAgICAgICAgICAgIG1hc2tDb250
ZXh0LmZpbGxSZWN0KGVuY2xvc2luZ1VuZGVybGluZVJlY3QpOwogICAgICAgICAgICAgICAgIG1h
c2tDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVhcik7CiAgICAgCiAg
ICAgICAgICAgICAgICAgdGV4dFBhaW50ZXIucGFpbnRUZXh0SW5Db250ZXh0KG1hc2tDb250ZXh0
LCBza2lwSW5rR2FwV2lkdGgpOwogCi0gICAgICAgICAgICAgICAgY29udGV4dC5jbGlwVG9JbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgZW5jbG9zaW5nRGV2aWNlUmVjdCk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgaW1hZ2VCdWZm
ZXJSZWN0SW5Vc2VyU3BhY2UpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChlbmNsb3Np
bmdVbmRlcmxpbmVSZWN0KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNjcmF0Y2hCdWZm
ZXIuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKICAgICAgICAgfQogI2VuZGlmIC8vIENT
UzNfVEVYVF9ERUNPUkFUSU9OCiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodGV4dERl
Y29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoZGVjb3JhdGlvblN0eWxlKSk7Cg==
</data>
<flag name="review"
          id="240158"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="240159"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>