<?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>145672</bug_id>
          
          <creation_ts>2015-06-04 16:20:02 -0700</creation_ts>
          <short_desc>[WK2][iOS] Limit the number of vnodes used by the WebContent processes</short_desc>
          <delta_ts>2015-06-06 17:47:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>apavlov</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1099667</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-04 16:20:02 -0700</bug_when>
    <thetext>Limit the number of VNodes used by the WebContent processes to reduce the chance of getting killed due to running out of VNodes.

We sometimes see the WebContent process use up to 50% of the system&apos;s vnode-limit on some tests, which seems excessive. Most VNodes are due to CachedResources which are mmap&apos;d from the WebKit disk cache and kept alive due to caches such as the Memory Cache / PageCache.

Radar: &lt;rdar://problem/21126637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099762</commentid>
    <comment_count>1</comment_count>
      <attachid>254341</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-04 22:02:38 -0700</bug_when>
    <thetext>Created attachment 254341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099797</commentid>
    <comment_count>2</comment_count>
      <attachid>254341</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-06-05 06:13:55 -0700</bug_when>
    <thetext>Comment on attachment 254341
Patch

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

&gt; Source/WebCore/platform/VNodeTracker.cpp:68
&gt; +    Critical critical = vnodeCount &gt; m_hardVNodeLimit ? Critical::Yes : Critical::No;

Bit suprising that we have type named Critical in WebCore global namespace.

Could just say auto.

&gt; Source/WebCore/platform/VNodeTracker.cpp:76
&gt; +    static const std::chrono::duration&lt;double&gt; minimumWarningInterval = std::chrono::seconds { 30 };

Why std::chrono::duration&lt;double&gt;? auto should work fine.

&gt; Source/WebCore/platform/VNodeTracker.h:37
&gt; +typedef std::function&lt;void(Critical)&gt; VNodePressureHandler;

Maybe move this to VNodeTracker namespace as well. (as VNodeTracker::PressureHandler)

&gt; Source/WebCore/platform/VNodeTracker.h:43
&gt; +    enum VNodeTokenType { };
&gt; +    typedef RefCounter::Token&lt;VNodeTokenType&gt; VNodeToken;

These could be just TokenType and Token. &quot;VNode&quot; is redundant in VNodeTracker scope.

&gt; Source/WebCore/platform/VNodeTracker.h:48
&gt; +    void setVNodePressureHandler(VNodePressureHandler);
&gt; +    VNodeToken vnodeToken();

Redudand vnodes in function names.

&gt; Source/WebCore/platform/cf/SharedBufferCF.cpp:40
&gt;  SharedBuffer::SharedBuffer(CFDataRef cfData)
&gt;      : m_buffer(adoptRef(new DataBuffer))
&gt;      , m_cfData(cfData)
&gt; +    , m_vnodeToken(VNodeTracker::singleton().vnodeToken())
&gt;  {
&gt;  }

Do all clients for this actually use file backed buffers?

&gt; Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm:197
&gt; +#if PLATFORM(IOS)
&gt; +    // Track the number of vnodes we are using on iOS and make sure we only use a
&gt; +    // reasonable amount because limits are fairly low on iOS devices and we can
&gt; +    // get killed when reaching the limit.
&gt; +    VNodeTracker::singleton().setVNodePressureHandler([] (Critical critical) {
&gt; +        MemoryPressureHandler::singleton().releaseMemory(critical);
&gt; +    });
&gt; +#endif

Could just wipe out resources actually using vnodes. But I suppose this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099835</commentid>
    <comment_count>3</comment_count>
      <attachid>254341</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-05 10:04:25 -0700</bug_when>
    <thetext>Comment on attachment 254341
Patch

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

&gt;&gt; Source/WebCore/platform/cf/SharedBufferCF.cpp:40
&gt;&gt;  }
&gt; 
&gt; Do all clients for this actually use file backed buffers?

Not all of them but most of them (especially the ones that are long-lived). We likely overestimate the number of vnodes a bit but I think this is a good enough estimation. We could add an &quot;isFileBacked&quot; argument so that the client could provide the information but I am not convinced it is worth the extra complexity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099849</commentid>
    <comment_count>4</comment_count>
      <attachid>254361</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-05 10:23:42 -0700</bug_when>
    <thetext>Created attachment 254361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100006</commentid>
    <comment_count>5</comment_count>
      <attachid>254361</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-05 16:20:35 -0700</bug_when>
    <thetext>Comment on attachment 254361
Patch

Clearing flags on attachment: 254361

Committed r185273: &lt;http://trac.webkit.org/changeset/185273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100007</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-05 16:20:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100058</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-06-05 21:42:36 -0700</bug_when>
    <thetext>This patch broke https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK2%20%28Tests%29/builds/12260/steps/run-api-tests/logs/stdio

Fixed here: https://trac.webkit.org/changeset/185285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100131</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-06-06 17:47:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This patch broke
&gt; https://build.webkit.org/builders/
&gt; Apple%20Mavericks%20Debug%20WK2%20%28Tests%29/builds/12260/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; Fixed here: https://trac.webkit.org/changeset/185285

Thanks Zalan!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254341</attachid>
            <date>2015-06-04 22:02:38 -0700</date>
            <delta_ts>2015-06-05 10:23:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145672-20150604220219.patch</filename>
            <type>text/plain</type>
            <size>24134</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFlYmFmYzdiZjA5YzE3NThiZGRlNzNk
YzRjOWU3YmUyZWNhNzliMjIuLmUzYmVhZjhjOGMzNjU3ZDdkNjljOGQ2ZmY0OGM3OTkxOWRlMWY4
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtpT1NdIExpbWl0IHRoZSBudW1iZXIgb2Ygdm5v
ZGVzIHVzZWQgYnkgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIxMTI2NjM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1JlZkNvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6dmFs
dWUpOgorCisgICAgICAgIEV4cG9zZSB0aGUgYWN0dWFsIHJlZmNvdW50IGluc3RlYWQgb2YgYSBi
b29sZWFuIHZhbHVlLgorCiAyMDE1LTA2LTAyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIERlbGVnYXRlIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHJlZmVyZW5jZSBjb3VudGluZyB0byBSZWFkYWJsZVN0cmVhbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDg3YTIwOTI2MzRjZDhiZmEyZjc2MzM1NTNjYzYxNDIzYWFiMjQ1MzUuLjMxOWIwN2FkYTlhOTc2
ODg5MjE1YzM0ZWQzMmY3NzdjYWViMzRhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAor
MjAxNS0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtX
SzJdW2lPU10gTGltaXQgdGhlIG51bWJlciBvZiB2bm9kZXMgdXNlZCBieSB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NTY3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMjY2Mzc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGltaXQgdGhlIG51bWJlciBv
ZiB2bm9kZXMgdXNlZCBieSB0aGUgV2ViQ29udGVudCBwcm9jZXNzZXMgdG8gcmVkdWNlCisgICAg
ICAgIHRoZSBjaGFuY2Ugb2YgZ2V0dGluZyBraWxsZWQgZHVlIHRvIHRoZSBzeXN0ZW0gcnVubmlu
ZyBvdXQgb2Ygdm5vZGVzLgorICAgICAgICBXZSBzb21ldGltZXMgc2VlIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgdXNlIHVwIHRvIDUwJSBvZiB0aGUgc3lzdGVtJ3MKKyAgICAgICAgdm5vZGUgbGlt
aXQgb24gc29tZSB0ZXN0cyBvbiBpT1MsIHdoaWNoIHNlZW1zIGV4Y2Vzc2l2ZS4gTW9zdCB2bm9k
ZXMKKyAgICAgICAgYXJlIGR1ZSB0byBDYWNoZWRSZXNvdXJjZXMgd2hpY2ggYXJlIG1tYXAnZCBm
cm9tIHRoZSBXZWJLaXQgZGlzayBjYWNoZQorICAgICAgICBhbmQga2VwdCBhbGl2ZSBkdWUgdG8g
Y2FjaGVzIHN1Y2ggYXMgdGhlIE1lbW9yeSBDYWNoZSAvIFBhZ2VDYWNoZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgU2hhcmVkQnVmZmVyIG9i
amVjdHMgdGhhdCBhcmUKKyAgICAgICAgYmFja2VkIGJ5IGEgQ0ZEYXRhUmVmIGFzIHRoaXMgc2hv
dWxkIHRyYWNrIG1vc3Qgb2YgdGhlIHZub2RlcyB1c2VkIGJ5CisgICAgICAgIHRoZSBwcm9jZXNz
LiBUaGUgV2ViQ29udGVudCBwcm9jZXNzIHJlZ2lzdGVycyBhIHZub2RlIHByZXNzdXJlIGhhbmRs
ZXIKKyAgICAgICAgdXBvbiBpbml0aWFsaXphdGlvbiAobGlrZWx5IGl0IGFscmVhZHkgZG9lcyBm
b3IgbWVtb3J5IHByZXNzdXJlCisgICAgICAgIGhhbmRsaW5nKS4gVGhpcyBoYW5kbGVyIGdldHMg
Y2FsbGVkIHdoZW4gdGhlIHByb2Nlc3MgdXNlcyBvdmVyIDE1JSBvZgorICAgICAgICBvZiBzeXN0
ZW0ncyB2bm9kZSBsaW1pdCBhbmQgdGhlICJjcml0aWNhbCIgZmxhZyBpcyBzZXQgaWYgaXQgdXNl
cyBvdmVyCisgICAgICAgIDIwJSBvZiB0aGUgc3lzdGVtIGxpbWl0LiBUaGUgdm5vZGUgcHJlc3N1
cmUgaGFuZGxlciBjdXJyZW50bHkgY2FsbHMgdGhlCisgICAgICAgIG1lbW9yeSBwcmVzc3VyZSBo
YW5kbGVyIGFzIGZyZWVpbmcgb3VyIGNhY2hlcyAoZXNwZWNpYWxseSBQYWdlQ2FjaGUsCisgICAg
ICAgIE1lbW9yeUNhY2hlKSBhbmQgZG9pbmcgYSBKUyBHQyBmcmVlcyB1cCB2bm9kZXMuCisKKyAg
ICAgICAgT24gaVBob25lIDYgUGx1cywgdGhlIHN5c3RlbSBsaW1pdCBpcyBhdCAzMDAwLCB3aGlj
aCB3b3VsZCBsZWFkIHRvIHRoZQorICAgICAgICBmb2xsb3dpbmcgbGltaXRzIGJlaW5nIHVzZWQ6
CisgICAgICAgIHNvZnQ6IDQ1MCAvIGhhcmQ6IDYwMAorCisgICAgICAgIEhvd2V2ZXIsIG9uIG9s
ZGVyIGhhcmR3YXJlLCB0aGUgc3lzdGVtIGxpbWl0IGNhbiBiZSBhcyBsb3cgYXMgMjAwMCwKKyAg
ICAgICAgd2hpY2ggd291bGQgbGVhZCB0byB0aGUgZm9sbG93aW5nIGxpbWl0cyBiZWluZyB1c2Vk
OgorICAgICAgICBzb2Z0OiAzMDAgLyBoYXJkOiA0MDAKKworICAgICAgICB2bm9kZSB0cmFja2lu
ZyBpcyBjdXJyZW50bHkgb25seSBlbmFibGVkIG9uIGlPUyBiZWNhdXNlIHN5c3RlbSB2bm9kZQor
ICAgICAgICBsaW1pdHMgYXJlIHVzdWFsbHkgbXVjaCBoaWdoZXIgb24gTWFjIChlLmcuIDQ3MzY5
NSBvbiBNYWMgUHJvLCA5OTg0CisgICAgICAgIG9uIGEgMjAxMSBNYWNCb29rIEFpcikgYW5kIHdl
IG5vcm1hbGx5IGRvbid0IGdldCBraWxsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgWENvZGUg
cHJvamVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorCisgICAgICAg
IEFkZCBhIFZOb2RlVG9rZW4gbWVtYmVyIG5leHQgdG8gdGhlIENGRGF0YVJlZiBtZW1iZXIgdGhh
dCB3ZSBpbml0aWFsaXplCisgICAgICAgIGlmIHRoZSBTaGFyZWRCdWZmZXIgaXMgY29uc3RydWN0
ZWQgZnJvbSBhIENGRGF0YVJlZi4KKworICAgICAgICAqIHBsYXRmb3JtL1ZOb2RlVHJhY2tlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpWTm9kZVRyYWNrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpjaGVja1ZOb2RlUHJlc3N1cmVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWTm9kZVRyYWNrZXI6OnZub2RlUHJlc3N1cmVUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZOb2RlVHJhY2tlcjo6bmV4dFRpbWVyRmlyaW5nSW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1ZOb2RlVHJhY2tlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZO
b2RlVHJhY2tlcjo6c2V0Vk5vZGVQcmVzc3VyZUhhbmRsZXIpOgorCisgICAgICAgIEFkZCBhIG5l
dyBWTm9kZVRyYWNrZXIgc2luZ2xldG9uIHRvIGtlZXAgdHJhY2sgdGhlIG51bWJlciBvZiB2bm9k
ZXMKKyAgICAgICAgdXNlZCBieSB0aGUgcHJvY2VzcyBzaW5jZSB0aGUgc3lzdGVtIGRvZXMgbm90
IGlzc3VlIHdhcm5pbmdzIGJlZm9yZQorICAgICAgICByZWFjaGluZyBpdHMgdm5vZGUgbGltaXQu
IENhbGwgc2l0ZXMgc2hvdWxkIHJlcXVlc3QgVk5vZGVUb2tlbnMgZm9yCisgICAgICAgIGV2ZXJ5
IHZub2RlIHRoZXkgdXNlIGZvciB0cmFja2luZyBwdXJwb3Nlcy4gRWFjaCBwcm9jZXNzIGNhbiB0
aGVuCisgICAgICAgIHNldCBhIHZub2RlIHByZXNzdXJlIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3
aWxsIGJlIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICBwcm9jZXNzIGlzIG92ZXIgdGhlIGRlc2ln
bmF0ZWQgbGltaXRzLgorCisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorCisgICAg
ICAgIFRha2UgYSBWTm9kZVRva2VuIGZyb20gdGhlIFZOb2RlVHJhY2tlciB3aGVuIGNvbnN0cnVj
dGluZyB0aGUKKyAgICAgICAgU2hhcmVkQnVmZmVyIGZyb20gYSBDRkRhdGFSZWYgYXMgdGhlc2Ug
dXN1YWxseSB1c2UgbW1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tl
ckNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWTm9kZVRyYWNrZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisKKyAgICAgICAgR2V0IHRoZSBzeXN0ZW0ncyB2bm9kZSBsaW1pdCBh
bmQgdXNlcyAxNSUgb2YgdGhhdCB2YWx1ZSBhcyBzb2Z0CisgICAgICAgIGxpbWl0IGZvciB0aGUg
cHJvY2VzcyBhbmQgMjAlIG9mIHRoYXQgdmFsdWUgYXMgaGFyZCBsaW1pdC4KKwogMjAxNS0wNi0w
NCAgSHVuc2VvcCBKZW9uZyAgPGhzODUuamVvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVw
bGFjZSAwIHdpdGggbnVsbHB0ciBpbiBXZWJDb3JlL1BhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTc2MDUz
ZGI2NzdmNDhiZTE4YmJiZjM1MWRmNzcxNmExZTYwYTMzZi4uNjUwYjI3NjA0ZGFhODY2Y2I1ZDA2
MTk4ZWZkOTQ1ZTNhZjhjNDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA2
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1baU9T
XSBMaW1pdCB0aGUgbnVtYmVyIG9mIHZub2RlcyB1c2VkIGJ5IHRoZSBXZWJDb250ZW50IHByb2Nl
c3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1
NjcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTEyNjYzNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZlIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MgcmVnaXN0ZXIgYSB2bm9kZSBwcmVzc3VyZSBoYW5kbGVyIG9uIGlPUywKKyAgICAgICAgd2hp
Y2ggY2FsbHMgdGhlIG1lbW9yeSBwcmVzc3VyZSBoYW5kbGVyLgorCisgICAgICAgIE9uIG5vbi1j
cml0aWNhbCBwcmVzc3VyZSwgaXQgd2lsbCBwcnVuZSBkZWFkIHJlc291cmNlcyBmcm9tIHRoZSBt
ZW1vcnkKKyAgICAgICAgY2FjaGUsIHdoaWNoIHNob3VsZCBmcmVlIHVwIHNvbWUgdm5vZGVzLiBP
biBjcml0aWNhbCBwcmVzc3VyZSwgdGhlCisgICAgICAgIGhhbmRsZXIgd2lsbCBjbGVhciB0aGUg
UGFnZUNhY2hlIGFuZCBkbyBhIEpTIEdDLCB3aGljaCBzaG91bGQgZnJlZSBldmVuCisgICAgICAg
IG1vcmUgdm5vZGVzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorCiAyMDE1LTA2LTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTjogZHJhZ2dlZCBub2Rl
IGluIHRoZSBET00gVHJlZSBpc24ndCBwb3NpdGlvbmVkIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUmVmQ291bnRlci5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlci5o
CmluZGV4IGUzMDRlNmJhNWMyNzZkNzA3Zjg3MGE4YjkzYTM4NjczYjM5ZDRiMGQuLmJjOGJiOGM0
MmQ2MmZkZmJmOTdlYjFiZWRiMThhM2M3MDVkODRhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVG9rZW48VD4obV9jb3VudCk7CiAg
ICAgfQogCi0gICAgYm9vbCB2YWx1ZSgpIGNvbnN0CisgICAgdW5zaWduZWQgdmFsdWUoKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fY291bnQtPm1fdmFsdWU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4
MmRjYzgwYzE5OWM5N2QzZTY5YjRkOTViOTdkMDA1NzZmNGJjNjcuLmM3MjZlYmUwMTJjMDQwNmFi
NzMwMTdkYzZjM2I0NzdjZjEyY2UxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NDksNyArMTY0OSwxMCBAQAogCQk0Njg5
RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyog
RmlsZU1ldGFkYXRhLmggKi87IH07CiAJCTQ2QzgzRUZEMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9O
b3RpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuY3BwICovOyB9OwogCQk0
NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAv
KiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2REI3RDU3MUIyMEZFNDYwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2NvYS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1
NjFCMjBGRTNDMDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwICovOyB9OwogCQk0NkRC
QjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEz
IC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgfTsKKwkJNDZGM0UzRjkxQjIxMDkwMDAwODdFRDEz
IC8qIFZOb2RlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAq
LzsgfTsKKwkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTkxQjIwRkU1
ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2RkNCNjE4MUE3MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9z
dGljTG9nZ2luZ0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTA3
MDdFNjEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3RTQxMjE5QzA0MzAwRDkw
RTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLzsgfTsKIAkJNDkwNzA3RTcxMjE5QzA0MzAw
RDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJL
aXRCcmlkZ2UuaCAqLzsgfTsKQEAgLTg4MzYsNiArODgzOSw5IEBACiAJCTQ2ODlGMUFFMTI2N0JB
RTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2Qzgz
RUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZW9Ob3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NkRCN0Q1NjFCMjBGRTNDMDA1NjUxQjIgLyogVk5vZGVUcmFja2Vy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk5vZGVUcmFj
a2VyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRCN0Q1ODFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZOb2RlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2REI3RDU5MUIyMEZFNTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk5vZGVUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFj
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5QzA0MzAwRDkwRTUxIC8q
IEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xODk4Miw2ICsxODk4OCw3IEBACiAJCQkJNUQ1OTc1QjExOTYz
NUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLywKIAkJCQk1RDU5NzVCMjE5NjM1RjEx
MDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLywKIAkJCQk3Q0M1NjRCOTE4QkFDNzIwMDAx
Qjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHAgKi8sCisJCQkJNDZEQjdE
NTYxQjIwRkUzQzAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjE5MDgsNiAr
MjE5MTUsOCBAQAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAvKiBVc2VyQWN0aXZpdHku
aCAqLywKIAkJCQkyRTNCQkYwNTExNjJEQTExMDBCOTQwOUEgLyogVVVJRC5jcHAgKi8sCiAJCQkJ
MkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLywKKwkJCQk0NkRCN0Q1ODFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLywKKwkJCQk0NkRCN0Q1OTFCMjBGRTU4
MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8sCiAJCQkJOUExMTQyMDMxODMyRDEzNDAwMEJC
OEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLywKIAkJCQk5MzgwRjQ3MTA5QTExQUI0MDAxRkRCMzQg
LyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0
LmggKi8sCkBAIC0yNDcxNyw2ICsyNDcyNiw3IEBACiAJCQkJQTc0QkI3NkIxM0JEQTg2MzAwRkY3
QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ4
QUZEQTUwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzY3Q0UwQjE0NUFCQzEzMDA1RTY0REIgLyogRXhjZXB0aW9uSGVhZGVycy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2N0NFMEMxNDVBQkMxMzAwNUU2NERCIC8qIEV4Y2Vw
dGlvbkludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNjdEMkE5MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNjdEMkE3MTI4MEU4
QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3
NDQsNiArMjc3NTQsNyBAQAogCQkJCTA3MDU4NEZGMTdGOUYwNUUwMDVGMkJDQiAvKiBDYXBhYmls
aXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyQ0E4NjExNkNCNERDMzAwOEFFMTMx
IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5RDA4
NkMxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQ2RjNFM0Y5MUIyMTA5MDAwMDg3RUQxMyAvKiBWTm9kZVRyYWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDQzBCNEUxOEJFOTg0OTAwNkNFQkNDIC8qIENh
cHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzczNDE0MTk3Nzg5
NkMwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1MEI2
OUQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3OTMxLDYgKzI3OTQyLDcgQEAKIAkJCQkzNzFGNTNFQTBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NT
VW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQwM0FBRkExNDY4NDU1
MzAwQTM5QjVCIC8qIENTU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQkE3NkNCMTFE
MjBFNTcwMDRDMjAxQyAvKiBDU1NWYWx1ZUtleXdvcmRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQ2REI3RDU3MUIyMEZFNDYwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBODBFNkNFNDBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUU0OUJEQTBCMTMxRkQzRTUwMDNDNTZGMCAvKiBDU1NWYWx1
ZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExQUYxNTExMUI5QTFBMzAwODA1MTAzIC8q
IEN1cnNvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggMDUyYTJhZTlmNWQwNjgzYmQ5MmU2NDdkYWJlMDE3MDQ3MzgxMTFmMy4uYWIy
Yzk5NGY3ZjY3ZGIxZjQxODliNTc4MDU1YjY4NWU2NGYyMGI4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikKKyNpbmNsdWRlICJWTm9kZVRyYWNrZXIuaCIK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAtMTY3LDYgKzE2OCw3IEBA
IHByaXZhdGU6CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fY2ZEYXRhOworICAgIFZOb2RlVHJhY2tl
cjo6Vk5vZGVUb2tlbiBtX3Zub2RlVG9rZW47CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVk5vZGVUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZOb2RlVHJhY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFkMDc0YTE2
MWU1ZDM3Yjg2MmQ4YzU3NTcwNGE3YmM0MTBkODU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZOb2RlVHJhY2tlci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWTm9kZVRyYWNrZXIuaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1ZOb2Rl
VHJhY2tlciYgVk5vZGVUcmFja2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxWTm9kZVRyYWNrZXI+IHZub2RlVHJhY2tlcjsKKyAgICByZXR1cm4gdm5vZGVUcmFj
a2VyOworfQorCitWTm9kZVRyYWNrZXI6OlZOb2RlVHJhY2tlcigpCisgICAgOiBtX3Zub2RlUHJl
c3N1cmVUaW1lcigqdGhpcywgJlZOb2RlVHJhY2tlcjo6dm5vZGVQcmVzc3VyZVRpbWVyRmlyZWQp
CisgICAgLCBtX2xhc3RXYXJuaW5nVGltZShzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3co
KSkKK3sKKyAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKKworICAgIExPRyhNZW1vcnlQcmVzc3Vy
ZSwgIlVzaW5nIGZvbGxvd2luZyB2bm9kZSBsaW1pdHMgZm9yIHRoaXMgcHJvY2Vzczogc29mdD0l
dSwgaGFyZD0ldSIsIG1fc29mdFZOb2RlTGltaXQsIG1faGFyZFZOb2RlTGltaXQpOworfQorCit2
b2lkIFZOb2RlVHJhY2tlcjo6Y2hlY2tWTm9kZVByZXNzdXJlU3RhdGUoKQoreworICAgIEFTU0VS
VChtX2xvd1ZOb2RlSGFuZGxlcik7CisKKyAgICBpZiAobV92bm9kZUNvdW50ZXIudmFsdWUoKSA8
PSBtX3NvZnRWTm9kZUxpbWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fdm5vZGVQ
cmVzc3VyZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdm5vZGVQcmVzc3VyZVRpbWVyLnN0
YXJ0T25lU2hvdChuZXh0VGltZXJGaXJpbmdJbnRlcnZhbCgpKTsKK30KKwordm9pZCBWTm9kZVRy
YWNrZXI6OnZub2RlUHJlc3N1cmVUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAobV92bm9kZUNvdW50
ZXIudmFsdWUoKSA8PSBtX3NvZnRWTm9kZUxpbWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2xhc3RXYXJuaW5nVGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOworICAg
IHVuc2lnbmVkIHZub2RlQ291bnQgPSBtX3Zub2RlQ291bnRlci52YWx1ZSgpOworICAgIENyaXRp
Y2FsIGNyaXRpY2FsID0gdm5vZGVDb3VudCA+IG1faGFyZFZOb2RlTGltaXQgPyBDcml0aWNhbDo6
WWVzIDogQ3JpdGljYWw6Ok5vOworICAgIG1fbG93Vk5vZGVIYW5kbGVyKGNyaXRpY2FsKTsKKyAg
ICBMT0coTWVtb3J5UHJlc3N1cmUsICJ2bm9kZSBwcmVzc3VyZSBoYW5kbGVyIGZyZWVkICVkIHZu
b2RlcyBvdXQgb2YgJXUgKGNyaXRpY2FsIHByZXNzdXJlOiAlcykiLCB2bm9kZUNvdW50IC0gbV92
bm9kZUNvdW50ZXIudmFsdWUoKSwgdm5vZGVDb3VudCwgY3JpdGljYWwgPT0gQ3JpdGljYWw6Olll
cyA/ICJZZXMiIDogIk5vIik7Cit9CisKK3N0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgVk5vZGVU
cmFja2VyOjpuZXh0VGltZXJGaXJpbmdJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8gV2UgcnVu
IHRoZSB2bm9kZSBwcmVzc3VyZSBoYW5kbGVyIGV2ZXJ5IDMwIHNlY29uZHMgYXQgbW9zdC4KKyAg
ICBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4gbWluaW11bVdhcm5p
bmdJbnRlcnZhbCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHsgMzAgfTsKKyAgICBhdXRvIHRpbWVT
aW5jZUxhc3RXYXJuaW5nID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgLSBtX2xh
c3RXYXJuaW5nVGltZTsKKyAgICBpZiAodGltZVNpbmNlTGFzdFdhcm5pbmcgPCBtaW5pbXVtV2Fy
bmluZ0ludGVydmFsKQorICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4obWluaW11bVdhcm5pbmdJbnRlcnZhbCAtIHRpbWVT
aW5jZUxhc3RXYXJuaW5nKTsKKyAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB7
IDAgfTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBWTm9kZVRyYWNrZXI6OnBs
YXRmb3JtSW5pdGlhbGl6ZSgpCit7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZOb2RlVHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViMWM0
NzIwYmEzNThlMzFjMDA5YjFmM2EzNTM5Y2MzOGRhM2U4YmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaApAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBWTm9kZVRyYWNrZXJfaAorI2RlZmluZSBWTm9kZVRyYWNrZXJf
aAorCisjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCisjaW5jbHVkZSAiVGltZXIu
aCIKKyNpbmNsdWRlIDxjaHJvbm8+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgc3Rk
OjpmdW5jdGlvbjx2b2lkKENyaXRpY2FsKT4gVk5vZGVQcmVzc3VyZUhhbmRsZXI7CisKK2NsYXNz
IFZOb2RlVHJhY2tlciB7CisgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8Vk5v
ZGVUcmFja2VyPjsKK3B1YmxpYzoKKyAgICBlbnVtIFZOb2RlVG9rZW5UeXBlIHsgfTsKKyAgICB0
eXBlZGVmIFJlZkNvdW50ZXI6OlRva2VuPFZOb2RlVG9rZW5UeXBlPiBWTm9kZVRva2VuOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZOb2RlVHJhY2tlciYgc2luZ2xldG9uKCk7CisKKyAg
ICB2b2lkIHNldFZOb2RlUHJlc3N1cmVIYW5kbGVyKFZOb2RlUHJlc3N1cmVIYW5kbGVyKTsKKyAg
ICBWTm9kZVRva2VuIHZub2RlVG9rZW4oKTsKKworcHJpdmF0ZToKKyAgICBWTm9kZVRyYWNrZXIo
KTsKKworICAgIHZvaWQgY2hlY2tWTm9kZVByZXNzdXJlU3RhdGUoKTsKKyAgICB2b2lkIHZub2Rl
UHJlc3N1cmVUaW1lckZpcmVkKCk7CisgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBuZXh0
VGltZXJGaXJpbmdJbnRlcnZhbCgpIGNvbnN0OworCisgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emUoKTsKKworICAgIHVuc2lnbmVkIG1faGFyZFZOb2RlTGltaXQgeyA0MDAgfTsKKyAgICB1bnNp
Z25lZCBtX3NvZnRWTm9kZUxpbWl0IHsgMzAwIH07CisgICAgVk5vZGVQcmVzc3VyZUhhbmRsZXIg
bV9sb3dWTm9kZUhhbmRsZXI7CisgICAgUmVmQ291bnRlciBtX3Zub2RlQ291bnRlcjsKKyAgICBU
aW1lciBtX3Zub2RlUHJlc3N1cmVUaW1lcjsKKyAgICBzdGQ6OmNocm9ubzo6dGltZV9wb2ludDxz
dGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrPiBtX2xhc3RXYXJuaW5nVGltZTsKK307CisKK2lubGlu
ZSB2b2lkIFZOb2RlVHJhY2tlcjo6c2V0Vk5vZGVQcmVzc3VyZUhhbmRsZXIoVk5vZGVQcmVzc3Vy
ZUhhbmRsZXIgaGFuZGxlcikKK3sKKyAgICBtX2xvd1ZOb2RlSGFuZGxlciA9IGhhbmRsZXI7Cit9
CisKK2lubGluZSBhdXRvIFZOb2RlVHJhY2tlcjo6dm5vZGVUb2tlbigpIC0+IFZOb2RlVG9rZW4K
K3sKKyAgICBpZiAoIW1fbG93Vk5vZGVIYW5kbGVyKQorICAgICAgICByZXR1cm4gVk5vZGVUb2tl
bigpOworCisgICAgVk5vZGVUb2tlbiB0b2tlbihtX3Zub2RlQ291bnRlci50b2tlbjxWTm9kZVRv
a2VuVHlwZT4oKSk7CisgICAgY2hlY2tWTm9kZVByZXNzdXJlU3RhdGUoKTsKKyAgICByZXR1cm4g
dG9rZW47Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFZOb2RlVHJh
Y2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
aW5kZXggNjUwYjZhOGVlZDVlMGU2YjNjZWNjMzZmY2I3M2JhYmNiOTgwZDU5MC4uYzNiM2MxOTEx
YWUzZDk5YTgyM2VlYzZlM2Q2MzZlMTU2MzNhZTBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgY2ZEYXRhKQog
ICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFCdWZmZXIpKQogICAgICwgbV9jZkRhdGEo
Y2ZEYXRhKQorICAgICwgbV92bm9kZVRva2VuKFZOb2RlVHJhY2tlcjo6c2luZ2xldG9uKCkudm5v
ZGVUb2tlbigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9WTm9kZVRyYWNrZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9WTm9kZVRyYWNrZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIwZTJlMGE3MzFmM2YxZTY1NWFk
MWRiZTI0MjJkYmNiMWJmMzZkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tlckNvY29hLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlZOb2RlVHJhY2tlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWTm9kZVRyYWNrZXI6
OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCit7CisgICAgdW5zaWduZWQgc3lzdGVtTWF4Vk5vZGVzID0g
MDsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKHN5c3RlbU1heFZOb2Rlcyk7CisKKyAgICAvLyBR
dWVyeSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm5vZGVzIG9uIHRoZSBzeXN0ZW0gYW5kIHVzZSAx
NSUgb2YgdGhhdCB2YWx1ZSBhcyBzb2Z0IGxpbWl0IGZvciB0aGlzIHByb2Nlc3MsCisgICAgLy8g
YW5kIDIwJSBvZiB0aGF0IHZhbHVlIGFzIGhhcmQgbGltaXQuCisgICAgaWYgKHN5c2N0bGJ5bmFt
ZSgia2Vybi5tYXh2bm9kZXMiLCAmc3lzdGVtTWF4Vk5vZGVzLCAmbGVuLCBudWxscHRyLCAwKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKE1lbW9yeVByZXNzdXJlLCAiU3lzdGVtIHZub2Rl
IGxpbWl0IGlzICV1Iiwgc3lzdGVtTWF4Vk5vZGVzKTsKKworICAgIG1fc29mdFZOb2RlTGltaXQg
PSBzdGQ6Om1heChtX3NvZnRWTm9kZUxpbWl0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3lzdGVt
TWF4Vk5vZGVzICogMC4xNSkpOworICAgIG1faGFyZFZOb2RlTGltaXQgPSBzdGQ6Om1heChtX2hh
cmRWTm9kZUxpbWl0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3lzdGVtTWF4Vk5vZGVzICogMC4y
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggNzZlMjc0NWYyNzAzNTU3
OTA4MmIzM2FlMGVmNjdmZjJkMzYyMWU1MC4uNDIyOWMyZjg4MWQyN2IzODQxZmE4NTVkMThjYzU2
NTU0ODM0YTM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KQEAgLTUwLDYgKzUwLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTWVt
b3J5Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9WTm9kZVRyYWNr
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KQEAgLTE4Niw2ICsx
ODcsMTUgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXIKIAogICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyOjpzZXRMb2dnaW5nRW5hYmxlZChwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyk7CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgLy8gVHJhY2sgdGhlIG51bWJlciBvZiB2bm9kZXMgd2UgYXJlIHVzaW5nIG9uIGlPUyBhbmQg
bWFrZSBzdXJlIHdlIG9ubHkgdXNlIGEKKyAgICAvLyByZWFzb25hYmxlIGFtb3VudCBiZWNhdXNl
IGxpbWl0cyBhcmUgZmFpcmx5IGxvdyBvbiBpT1MgZGV2aWNlcyBhbmQgd2UgY2FuCisgICAgLy8g
Z2V0IGtpbGxlZCB3aGVuIHJlYWNoaW5nIHRoZSBsaW1pdC4KKyAgICBWTm9kZVRyYWNrZXI6OnNp
bmdsZXRvbigpLnNldFZOb2RlUHJlc3N1cmVIYW5kbGVyKFtdIChDcml0aWNhbCBjcml0aWNhbCkg
eworICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnJlbGVhc2VNZW1v
cnkoY3JpdGljYWwpOworICAgIH0pOworI2VuZGlmCisKICAgICBzZXRFbmhhbmNlZEFjY2Vzc2li
aWxpdHkocGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxl
ZCk7CiAKICNpZiBVU0UoQVBQS0lUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254361</attachid>
            <date>2015-06-05 10:23:42 -0700</date>
            <delta_ts>2015-06-05 16:20:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145672-20150605102321.patch</filename>
            <type>text/plain</type>
            <size>25864</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFlYmFmYzdiZjA5YzE3NThiZGRlNzNk
YzRjOWU3YmUyZWNhNzliMjIuLmNiOWU0YzllMzJmNTU2N2I5ZmM3N2E1NTRjNDUxYjExYzMwZTRh
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDYtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtpT1NdIExpbWl0IHRoZSBudW1iZXIgb2Ygdm5v
ZGVzIHVzZWQgYnkgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzc2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU2NzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIxMTI2NjM3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisg
ICAgICAgICogd3RmL1JlZkNvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6dmFs
dWUpOgorCisgICAgICAgIEV4cG9zZSB0aGUgYWN0dWFsIHJlZmNvdW50IGluc3RlYWQgb2YgYSBi
b29sZWFuIHZhbHVlLgorCiAyMDE1LTA2LTAyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIERlbGVnYXRlIFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHJlZmVyZW5jZSBjb3VudGluZyB0byBSZWFkYWJsZVN0cmVhbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGE4MWE3N2NjZWFjODdkZjA3YTU3YmY0NTZjYTZkOTFiODI3NzA0MDguLmY1YTQ1ZGEzMGMyNDhm
NWU1ODFjMjM5N2NkYjZjMGEyNzAyZmFjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OCBAQAor
MjAxNS0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtX
SzJdW2lPU10gTGltaXQgdGhlIG51bWJlciBvZiB2bm9kZXMgdXNlZCBieSB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0NTY3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMjY2Mzc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTGltaXQgdGhlIG51bWJlciBv
ZiB2bm9kZXMgdXNlZCBieSB0aGUgV2ViQ29udGVudCBwcm9jZXNzZXMgdG8gcmVkdWNlCisgICAg
ICAgIHRoZSBjaGFuY2Ugb2YgZ2V0dGluZyBraWxsZWQgZHVlIHRvIHRoZSBzeXN0ZW0gcnVubmlu
ZyBvdXQgb2Ygdm5vZGVzLgorICAgICAgICBXZSBzb21ldGltZXMgc2VlIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MgdXNlIHVwIHRvIDUwJSBvZiB0aGUgc3lzdGVtJ3MKKyAgICAgICAgdm5vZGUgbGlt
aXQgb24gc29tZSB0ZXN0cyBvbiBpT1MsIHdoaWNoIHNlZW1zIGV4Y2Vzc2l2ZS4gTW9zdCB2bm9k
ZXMKKyAgICAgICAgYXJlIGR1ZSB0byBDYWNoZWRSZXNvdXJjZXMgd2hpY2ggYXJlIG1tYXAnZCBm
cm9tIHRoZSBXZWJLaXQgZGlzayBjYWNoZQorICAgICAgICBhbmQga2VwdCBhbGl2ZSBkdWUgdG8g
Y2FjaGVzIHN1Y2ggYXMgdGhlIE1lbW9yeSBDYWNoZSAvIFBhZ2VDYWNoZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFkZHMgdHJhY2tpbmcgZm9yIHRoZSBudW1iZXIgb2YgU2hhcmVkQnVmZmVyIG9i
amVjdHMgdGhhdCBhcmUKKyAgICAgICAgYmFja2VkIGJ5IGEgQ0ZEYXRhUmVmIGFzIHRoaXMgc2hv
dWxkIHRyYWNrIG1vc3Qgb2YgdGhlIHZub2RlcyB1c2VkIGJ5CisgICAgICAgIHRoZSBwcm9jZXNz
LiBUaGUgV2ViQ29udGVudCBwcm9jZXNzIHJlZ2lzdGVycyBhIHZub2RlIHByZXNzdXJlIGhhbmRs
ZXIKKyAgICAgICAgdXBvbiBpbml0aWFsaXphdGlvbiAobGlrZWx5IGl0IGFscmVhZHkgZG9lcyBm
b3IgbWVtb3J5IHByZXNzdXJlCisgICAgICAgIGhhbmRsaW5nKS4gVGhpcyBoYW5kbGVyIGdldHMg
Y2FsbGVkIHdoZW4gdGhlIHByb2Nlc3MgdXNlcyBvdmVyIDE1JSBvZgorICAgICAgICBvZiBzeXN0
ZW0ncyB2bm9kZSBsaW1pdCBhbmQgdGhlICJjcml0aWNhbCIgZmxhZyBpcyBzZXQgaWYgaXQgdXNl
cyBvdmVyCisgICAgICAgIDIwJSBvZiB0aGUgc3lzdGVtIGxpbWl0LiBUaGUgdm5vZGUgcHJlc3N1
cmUgaGFuZGxlciBjdXJyZW50bHkgY2FsbHMgdGhlCisgICAgICAgIG1lbW9yeSBwcmVzc3VyZSBo
YW5kbGVyIGFzIGZyZWVpbmcgb3VyIGNhY2hlcyAoZXNwZWNpYWxseSBQYWdlQ2FjaGUsCisgICAg
ICAgIE1lbW9yeUNhY2hlKSBhbmQgZG9pbmcgYSBKUyBHQyBmcmVlcyB1cCB2bm9kZXMuCisKKyAg
ICAgICAgT24gaVBob25lIDYgUGx1cywgdGhlIHN5c3RlbSBsaW1pdCBpcyBhdCAzMDAwLCB3aGlj
aCB3b3VsZCBsZWFkIHRvIHRoZQorICAgICAgICBmb2xsb3dpbmcgbGltaXRzIGJlaW5nIHVzZWQ6
CisgICAgICAgIHNvZnQ6IDQ1MCAvIGhhcmQ6IDYwMAorCisgICAgICAgIEhvd2V2ZXIsIG9uIG9s
ZGVyIGhhcmR3YXJlLCB0aGUgc3lzdGVtIGxpbWl0IGNhbiBiZSBhcyBsb3cgYXMgMjAwMCwKKyAg
ICAgICAgd2hpY2ggd291bGQgbGVhZCB0byB0aGUgZm9sbG93aW5nIGxpbWl0cyBiZWluZyB1c2Vk
OgorICAgICAgICBzb2Z0OiAzMDAgLyBoYXJkOiA0MDAKKworICAgICAgICB2bm9kZSB0cmFja2lu
ZyBpcyBjdXJyZW50bHkgb25seSBlbmFibGVkIG9uIGlPUyBiZWNhdXNlIHN5c3RlbSB2bm9kZQor
ICAgICAgICBsaW1pdHMgYXJlIHVzdWFsbHkgbXVjaCBoaWdoZXIgb24gTWFjIChlLmcuIDQ3MzY5
NSBvbiBNYWMgUHJvLCA5OTg0CisgICAgICAgIG9uIGEgMjAxMSBNYWNCb29rIEFpcikgYW5kIHdl
IG5vcm1hbGx5IGRvbid0IGdldCBraWxsZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgWENvZGUg
cHJvamVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorCisgICAgICAg
IEFkZCBhIFZOb2RlVHJhY2tlcjo6VG9rZW4gbWVtYmVyIG5leHQgdG8gdGhlIENGRGF0YVJlZiBt
ZW1iZXIgdGhhdCB3ZQorICAgICAgICBpbml0aWFsaXplIGlmIHRoZSBTaGFyZWRCdWZmZXIgaXMg
Y29uc3RydWN0ZWQgZnJvbSBhIENGRGF0YVJlZi4KKworICAgICAgICAqIHBsYXRmb3JtL1ZOb2Rl
VHJhY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpzaW5n
bGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpWTm9kZVRyYWNrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpjaGVja1ByZXNzdXJlU3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Vk5vZGVUcmFja2VyOjpwcmVzc3VyZVdhcm5pbmdUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlZOb2RlVHJhY2tlcjo6bmV4dFByZXNzdXJlV2FybmluZ0ludGVy
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlZOb2RlVHJhY2tlcjo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpWTm9kZVRyYWNrZXI6OnNldFByZXNzdXJlSGFuZGxlcik6CisKKyAgICAgICAgQWRk
IGEgbmV3IFZOb2RlVHJhY2tlciBzaW5nbGV0b24gdG8ga2VlcCB0cmFjayB0aGUgbnVtYmVyIG9m
IHZub2RlcworICAgICAgICB1c2VkIGJ5IHRoZSBwcm9jZXNzIHNpbmNlIHRoZSBzeXN0ZW0gZG9l
cyBub3QgaXNzdWUgd2FybmluZ3MgYmVmb3JlCisgICAgICAgIHJlYWNoaW5nIGl0cyB2bm9kZSBs
aW1pdC4gQ2FsbCBzaXRlcyBzaG91bGQgcmVxdWVzdCBUb2tlbnMgZm9yCisgICAgICAgIGV2ZXJ5
IHZub2RlIHRoZXkgdXNlIGZvciB0cmFja2luZyBwdXJwb3Nlcy4gRWFjaCBwcm9jZXNzIGNhbiB0
aGVuCisgICAgICAgIHNldCBhIHZub2RlIHByZXNzdXJlIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3
aWxsIGJlIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICBwcm9jZXNzIGlzIG92ZXIgdGhlIGRlc2ln
bmF0ZWQgbGltaXRzLgorCisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorCisgICAg
ICAgIFRha2UgYSBWTm9kZVRva2VuIGZyb20gdGhlIFZOb2RlVHJhY2tlciB3aGVuIGNvbnN0cnVj
dGluZyB0aGUKKyAgICAgICAgU2hhcmVkQnVmZmVyIGZyb20gYSBDRkRhdGFSZWYgYXMgdGhlc2Ug
dXN1YWxseSB1c2UgbW1hcC4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tl
ckNvY29hLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWTm9kZVRyYWNrZXI6OnBsYXRm
b3JtSW5pdGlhbGl6ZSk6CisKKyAgICAgICAgR2V0IHRoZSBzeXN0ZW0ncyB2bm9kZSBsaW1pdCBh
bmQgdXNlcyAxNSUgb2YgdGhhdCB2YWx1ZSBhcyBzb2Z0CisgICAgICAgIGxpbWl0IGZvciB0aGUg
cHJvY2VzcyBhbmQgMjAlIG9mIHRoYXQgdmFsdWUgYXMgaGFyZCBsaW1pdC4KKwogMjAxNS0wNi0w
NCAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUHVy
Z2UgUGFzc1JlZlB0ciBjcmVhdGUoKSBmYWN0b3J5IGZ1bmN0aW9ucyBpbiBXZWJDb3JlL2Nzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDYxYmNmNjExYWRjZWUyYWNiY2Q4NmQ5MTdmMjM2ZmFhMTUwMzEyMmQuLjEz
ZTFkZmVlMzY1ZGE4YWJhOThiNGYxZWNkZWU2NzQzY2Q5ZWViZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtXSzJdW2lPU10gTGltaXQgdGhlIG51bWJlciBvZiB2bm9kZXMgdXNlZCBieSB0
aGUgV2ViQ29udGVudCBwcm9jZXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NTY3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjExMjY2Mzc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgSGF2ZSB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIHJlZ2lzdGVyIGEgdm5vZGUgcHJlc3N1cmUgaGFuZGxlciBv
biBpT1MsCisgICAgICAgIHdoaWNoIGNhbGxzIHRoZSBtZW1vcnkgcHJlc3N1cmUgaGFuZGxlci4K
KworICAgICAgICBPbiBub24tY3JpdGljYWwgcHJlc3N1cmUsIGl0IHdpbGwgcHJ1bmUgZGVhZCBy
ZXNvdXJjZXMgZnJvbSB0aGUgbWVtb3J5CisgICAgICAgIGNhY2hlLCB3aGljaCBzaG91bGQgZnJl
ZSB1cCBzb21lIHZub2Rlcy4gT24gY3JpdGljYWwgcHJlc3N1cmUsIHRoZQorICAgICAgICBoYW5k
bGVyIHdpbGwgY2xlYXIgdGhlIFBhZ2VDYWNoZSBhbmQgZG8gYSBKUyBHQywgd2hpY2ggc2hvdWxk
IGZyZWUgZXZlbgorICAgICAgICBtb3JlIHZub2Rlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNS0wNi0wNCAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTg1MDkx
KTogQ3Jhc2ggaGFwcGVucyBvbiBpbmRleGRiIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZDb3VudGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgKaW5kZXggZTMw
NGU2YmE1YzI3NmQ3MDdmODcwYThiOTNhMzg2NzNiMzlkNGIwZC4uYmM4YmI4YzQyZDYyZmRmYmY5
N2ViMWJlZGIxOGEzYzcwNWQ4NGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291
bnRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaApAQCAtODUsNyArODUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBUb2tlbjxUPihtX2NvdW50KTsKICAgICB9CiAKLSAg
ICBib29sIHZhbHVlKCkgY29uc3QKKyAgICB1bnNpZ25lZCB2YWx1ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9jb3VudC0+bV92YWx1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAyY2ZlNTNlYzI4YjFlMzkx
ZDg2OWE2MTQ5MTFjMjBiODM1MWI0Y2E2Li45Y2QxZmYxMWM4ZWFkNjQ3MzI3ZDViMDgzN2Q5YmFh
MDI1ZmQyMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKQEAgLTgwMjIsNiArODAyMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxUaW1lci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxVc2VyQWN0aXZpdHkuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cVVVJRC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxW
Tm9kZVRyYWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
V2lkZ2V0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHNvdXBc
U2hhcmVkQnVmZmVyU291cC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5OTI1LDYgKzE5OTI2LDcgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFRocmVhZFRpbWVycy5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cVGltZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXFVzZXJBY3Rpdml0eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cVk5vZGVUcmFja2VyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxIeXN0ZXJlc2lzQWN0aXZpdHkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXFVVSUQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXFdpZGdldC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGJiZGFlNjAzNDVhNzYzYjY5ZDJm
YWVlYTdmYTg5MTUzY2NkNTFlNjUuLjU4YTgyN2RkMzgxMjA1M2RmZmMzN2FkZjQ5YzM2OWVhN2Zj
N2E1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTExODUsNiArMTE4NSw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVVUlELmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxWTm9kZVRyYWNrZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XFdpZGdldC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xD
b21waWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGM4MmRjYzgwYzE5OWM5N2QzZTY5YjRkOTViOTdkMDA1NzZmNGJjNjcuLmM3
MjZlYmUwMTJjMDQwNmFiNzMwMTdkYzZjM2I0NzdjZjEyY2UxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NDksNyArMTY0
OSwxMCBAQAogCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg5RjFBRTEyNjdC
QUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IH07CiAJCTQ2QzgzRUZEMUE5QkJFMjkw
MEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIu
Y3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZDMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2REI3RDU3MUIyMEZFNDYwMDU2NTFCMiAvKiBWTm9k
ZVRyYWNrZXJDb2NvYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkRCN0Q1NjFCMjBGRTNDMDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3Bw
ICovOyB9OwogCQk0NkRCQjY1MDFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQkI2NEUx
QUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLzsgfTsKKwkJNDZGM0UzRjkx
QjIxMDkwMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBGRTU4MDA1NjUxQjIgLyogVk5v
ZGVUcmFja2VyLmNwcCAqLzsgfTsKKwkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEzIC8qIFZOb2Rl
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZEQjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RkNCNjE4MUE3MDgyMEUwMEM1
QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9z
dGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0OTA3MDdFNjEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3
RTQxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLzsgfTsKIAkJNDkw
NzA3RTcxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNTEyMTlDMDQzMDBEOTBF
NTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLzsgfTsKQEAgLTg4MzYsNiArODgzOSw5IEBACiAJ
CTQ2ODlGMUFFMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9Ob3RpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9O
b3RpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9Ob3RpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkRCN0Q1NjFCMjBGRTNDMDA1NjUxQjIg
LyogVk5vZGVUcmFja2VyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVk5vZGVUcmFja2VyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NkRCN0Q1ODFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZOb2RlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2REI3RDU5MUIyMEZFNTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk5vZGVUcmFja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQ
b3dlck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvd2Vy
T2JzZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODk4Miw2ICsxODk4OCw3IEBACiAJ
CQkJNUQ1OTc1QjExOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLywKIAkJCQk1
RDU5NzVCMjE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLywKIAkJCQk3Q0M1
NjRCOTE4QkFDNzIwMDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHAg
Ki8sCisJCQkJNDZEQjdENTYxQjIwRkUzQzAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNw
cCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMjE5MDgsNiArMjE5MTUsOCBAQAogCQkJCTg2ODE2MEQyMTg3NjY5QzQwMDIxRTc5RCAv
KiBVc2VyQWN0aXZpdHkuaCAqLywKIAkJCQkyRTNCQkYwNTExNjJEQTExMDBCOTQwOUEgLyogVVVJ
RC5jcHAgKi8sCiAJCQkJMkUzQkJGMDYxMTYyREExMTAwQjk0MDlBIC8qIFVVSUQuaCAqLywKKwkJ
CQk0NkRCN0Q1ODFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLywKKwkJCQk0
NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8sCiAJCQkJOUExMTQy
MDMxODMyRDEzNDAwMEJCOEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLywKIAkJCQk5MzgwRjQ3MTA5
QTExQUI0MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAx
RkRCMzQgLyogV2lkZ2V0LmggKi8sCkBAIC0yNDcxNyw2ICsyNDcyNiw3IEBACiAJCQkJQTc0QkI3
NkIxM0JEQTg2MzAwRkY3QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ4QUZEQTUwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzY3Q0UwQjE0NUFCQzEzMDA1RTY0REIgLyogRXhjZXB0
aW9uSGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEz
IC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2N0NFMEMxNDVBQkMxMzAw
NUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFNjdE
MkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFNjdEMkE3MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjc3NDQsNiArMjc3NTQsNyBAQAogCQkJCTA3MDU4NEZGMTdGOUYwNUUwMDVG
MkJDQiAvKiBDYXBhYmlsaXR5UmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyQ0E4NjEx
NkNCNERDMzAwOEFFMTMxIC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDc5RDA4NkMxNjJGMjFGOTAwREI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2RjNFM0Y5MUIyMTA5MDAwMDg3RUQx
MyAvKiBWTm9kZVRyYWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlDQzBCNEUxOEJFOTg0
OTAwNkNFQkNDIC8qIENhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQzczNDE0MTk3Nzg5NkMwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjU1MEI2OUQwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI3OTMxLDYgKzI3OTQyLDcgQEAKIAkJCQkzNzFGNTNFQTBEMjcwNEY5
MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUQwM0FBRkExNDY4NDU1MzAwQTM5QjVCIC8qIENTU1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQkE3NkNCMTFEMjBFNTcwMDRDMjAxQyAvKiBDU1NWYWx1ZUtleXdvcmRzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQ2REI3RDU3MUIyMEZFNDYwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFNkNFNDBBMTk4OUNBMDA3RkI4QzUgLyog
Q1NTVmFsdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0OUJEQTBCMTMxRkQzRTUwMDND
NTZGMCAvKiBDU1NWYWx1ZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTExQUYxNTExMUI5
QTFBMzAwODA1MTAzIC8qIEN1cnNvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMDUyYTJhZTlmNWQwNjgzYmQ5MmU2NDdkYWJlMDE3
MDQ3MzgxMTFmMy4uNDAzMGJkYTEzNjJmYjZkYWQ0Y2M5YTAxMjQzNmIwOWYxYzc1MDVjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikKKyNpbmNsdWRlICJW
Tm9kZVRyYWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIApAQCAt
MTY3LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fY2ZEYXRhOwor
ICAgIFZOb2RlVHJhY2tlcjo6VG9rZW4gbV92bm9kZVRva2VuOwogI2VuZGlmCiAKICNpZiBVU0Uo
U09VUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ZOb2RlVHJhY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiOGRkOTdhNmYyZDVhOWJkYzQ0MzEwZTlmMzYxMmI5N2FlYzQxZDAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuY3BwCkBAIC0wLDAgKzEs
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVk5vZGVU
cmFja2VyLmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitWTm9kZVRyYWNrZXImIFZOb2RlVHJhY2tlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Vk5vZGVUcmFja2VyPiB2bm9kZVRyYWNrZXI7CisgICAgcmV0dXJu
IHZub2RlVHJhY2tlcjsKK30KKworVk5vZGVUcmFja2VyOjpWTm9kZVRyYWNrZXIoKQorICAgIDog
bV9wcmVzc3VyZVdhcm5pbmdUaW1lcigqdGhpcywgJlZOb2RlVHJhY2tlcjo6cHJlc3N1cmVXYXJu
aW5nVGltZXJGaXJlZCkKKyAgICAsIG1fbGFzdFdhcm5pbmdUaW1lKHN0ZDo6Y2hyb25vOjpzdGVh
ZHlfY2xvY2s6Om5vdygpKQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworCisgICAgTE9H
KE1lbW9yeVByZXNzdXJlLCAiVXNpbmcgZm9sbG93aW5nIHZub2RlIGxpbWl0cyBmb3IgdGhpcyBw
cm9jZXNzOiBzb2Z0PSV1LCBoYXJkPSV1IiwgbV9zb2Z0Vk5vZGVMaW1pdCwgbV9oYXJkVk5vZGVM
aW1pdCk7Cit9CisKK3ZvaWQgVk5vZGVUcmFja2VyOjpjaGVja1ByZXNzdXJlU3RhdGUoKQorewor
ICAgIEFTU0VSVChtX3ByZXNzdXJlSGFuZGxlcik7CisKKyAgICBpZiAobV92bm9kZUNvdW50ZXIu
dmFsdWUoKSA8PSBtX3NvZnRWTm9kZUxpbWl0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1fcHJlc3N1cmVXYXJuaW5nVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wcmVzc3VyZVdh
cm5pbmdUaW1lci5zdGFydE9uZVNob3QobmV4dFByZXNzdXJlV2FybmluZ0ludGVydmFsKCkpOwor
fQorCit2b2lkIFZOb2RlVHJhY2tlcjo6cHJlc3N1cmVXYXJuaW5nVGltZXJGaXJlZCgpCit7Cisg
ICAgaWYgKG1fdm5vZGVDb3VudGVyLnZhbHVlKCkgPD0gbV9zb2Z0Vk5vZGVMaW1pdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9sYXN0V2FybmluZ1RpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5
X2Nsb2NrOjpub3coKTsKKyAgICB1bnNpZ25lZCB2bm9kZUNvdW50ID0gbV92bm9kZUNvdW50ZXIu
dmFsdWUoKTsKKyAgICBhdXRvIGNyaXRpY2FsID0gdm5vZGVDb3VudCA+IG1faGFyZFZOb2RlTGlt
aXQgPyBDcml0aWNhbDo6WWVzIDogQ3JpdGljYWw6Ok5vOworICAgIG1fcHJlc3N1cmVIYW5kbGVy
KGNyaXRpY2FsKTsKKyAgICBMT0coTWVtb3J5UHJlc3N1cmUsICJ2bm9kZSBwcmVzc3VyZSBoYW5k
bGVyIGZyZWVkICVkIHZub2RlcyBvdXQgb2YgJXUgKGNyaXRpY2FsIHByZXNzdXJlOiAlcykiLCB2
bm9kZUNvdW50IC0gbV92bm9kZUNvdW50ZXIudmFsdWUoKSwgdm5vZGVDb3VudCwgY3JpdGljYWwg
PT0gQ3JpdGljYWw6OlllcyA/ICJZZXMiIDogIk5vIik7Cit9CisKK3N0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgVk5vZGVUcmFja2VyOjpuZXh0UHJlc3N1cmVXYXJuaW5nSW50ZXJ2YWwoKSBjb25z
dAoreworICAgIC8vIFdlIHJ1biB0aGUgdm5vZGUgcHJlc3N1cmUgaGFuZGxlciBldmVyeSAzMCBz
ZWNvbmRzIGF0IG1vc3QuCisgICAgc3RhdGljIGNvbnN0IGF1dG8gbWluaW11bVdhcm5pbmdJbnRl
cnZhbCA9IHN0ZDo6Y2hyb25vOjpzZWNvbmRzIHsgMzAgfTsKKyAgICBhdXRvIHRpbWVTaW5jZUxh
c3RXYXJuaW5nID0gc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkgLSBtX2xhc3RXYXJu
aW5nVGltZTsKKyAgICBpZiAodGltZVNpbmNlTGFzdFdhcm5pbmcgPCBtaW5pbXVtV2FybmluZ0lu
dGVydmFsKQorICAgICAgICByZXR1cm4gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4obWluaW11bVdhcm5pbmdJbnRlcnZhbCAtIHRpbWVTaW5jZUxh
c3RXYXJuaW5nKTsKKyAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB7IDAgfTsK
K30KKworI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBWTm9kZVRyYWNrZXI6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCit7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ZOb2RlVHJhY2tlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkNzA2MzE4ZjM2
MzJiOThjNjI5OGIxZTdlMGFiODY0ODNlNjllMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaApAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBWTm9kZVRyYWNrZXJfaAorI2RlZmluZSBWTm9kZVRyYWNrZXJfaAorCisj
aW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDxjaHJvbm8+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFZOb2RlVHJhY2tl
ciB7CisgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8Vk5vZGVUcmFja2VyPjsK
K3B1YmxpYzoKKyAgICB1c2luZyBQcmVzc3VyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Q3JpdGljYWwpPjsKKworICAgIGVudW0gVG9rZW5UeXBlIHsgfTsKKyAgICB1c2luZyBUb2tlbiA9
IFJlZkNvdW50ZXI6OlRva2VuPFRva2VuVHlwZT47CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgVk5vZGVUcmFja2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc2V0UHJlc3N1cmVIYW5k
bGVyKFByZXNzdXJlSGFuZGxlcik7CisgICAgVG9rZW4gdG9rZW4oKTsKKworcHJpdmF0ZToKKyAg
ICBWTm9kZVRyYWNrZXIoKTsKKworICAgIHZvaWQgY2hlY2tQcmVzc3VyZVN0YXRlKCk7CisgICAg
dm9pZCBwcmVzc3VyZVdhcm5pbmdUaW1lckZpcmVkKCk7CisgICAgc3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcyBuZXh0UHJlc3N1cmVXYXJuaW5nSW50ZXJ2YWwoKSBjb25zdDsKKworICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CisKKyAgICB1bnNpZ25lZCBtX2hhcmRWTm9kZUxpbWl0IHsg
NDAwIH07CisgICAgdW5zaWduZWQgbV9zb2Z0Vk5vZGVMaW1pdCB7IDMwMCB9OworICAgIFByZXNz
dXJlSGFuZGxlciBtX3ByZXNzdXJlSGFuZGxlcjsKKyAgICBSZWZDb3VudGVyIG1fdm5vZGVDb3Vu
dGVyOworICAgIFRpbWVyIG1fcHJlc3N1cmVXYXJuaW5nVGltZXI7CisgICAgc3RkOjpjaHJvbm86
OnRpbWVfcG9pbnQ8c3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jaz4gbV9sYXN0V2FybmluZ1RpbWU7
Cit9OworCitpbmxpbmUgdm9pZCBWTm9kZVRyYWNrZXI6OnNldFByZXNzdXJlSGFuZGxlcihQcmVz
c3VyZUhhbmRsZXIgaGFuZGxlcikKK3sKKyAgICBtX3ByZXNzdXJlSGFuZGxlciA9IGhhbmRsZXI7
Cit9CisKK2lubGluZSBhdXRvIFZOb2RlVHJhY2tlcjo6dG9rZW4oKSAtPiBUb2tlbgoreworICAg
IGlmICghbV9wcmVzc3VyZUhhbmRsZXIpCisgICAgICAgIHJldHVybiBUb2tlbigpOworCisgICAg
VG9rZW4gdG9rZW4obV92bm9kZUNvdW50ZXIudG9rZW48VG9rZW5UeXBlPigpKTsKKyAgICBjaGVj
a1ByZXNzdXJlU3RhdGUoKTsKKyAgICByZXR1cm4gdG9rZW47Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFZOb2RlVHJhY2tlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNjUwYjZhOGVlZDVlMGU2YjNjZWNj
MzZmY2I3M2JhYmNiOTgwZDU5MC4uMmE3NWU1NmQ1MmQwY2JkYjM0NDNkN2Q0MzkyMzMyYTlkMjY4
MmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYgY2ZEYXRhKQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3
IERhdGFCdWZmZXIpKQogICAgICwgbV9jZkRhdGEoY2ZEYXRhKQorICAgICwgbV92bm9kZVRva2Vu
KFZOb2RlVHJhY2tlcjo6c2luZ2xldG9uKCkudG9rZW4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVk5vZGVUcmFja2VyQ29jb2EuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVk5vZGVUcmFja2VyQ29jb2EuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiMGUyZTBhNzMxZjNmMWU2NTVhZDFkYmUyNDIyZGJjYjFiZjM2ZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WTm9kZVRyYWNrZXJDb2NvYS5j
cHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWTm9kZVRyYWNrZXIuaCIK
KworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8
c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgVk5vZGVUcmFja2VyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIHVu
c2lnbmVkIHN5c3RlbU1heFZOb2RlcyA9IDA7CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihzeXN0
ZW1NYXhWTm9kZXMpOworCisgICAgLy8gUXVlcnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZub2Rl
cyBvbiB0aGUgc3lzdGVtIGFuZCB1c2UgMTUlIG9mIHRoYXQgdmFsdWUgYXMgc29mdCBsaW1pdCBm
b3IgdGhpcyBwcm9jZXNzLAorICAgIC8vIGFuZCAyMCUgb2YgdGhhdCB2YWx1ZSBhcyBoYXJkIGxp
bWl0LgorICAgIGlmIChzeXNjdGxieW5hbWUoImtlcm4ubWF4dm5vZGVzIiwgJnN5c3RlbU1heFZO
b2RlcywgJmxlbiwgbnVsbHB0ciwgMCkpCisgICAgICAgIHJldHVybjsKKworICAgIExPRyhNZW1v
cnlQcmVzc3VyZSwgIlN5c3RlbSB2bm9kZSBsaW1pdCBpcyAldSIsIHN5c3RlbU1heFZOb2Rlcyk7
CisKKyAgICBtX3NvZnRWTm9kZUxpbWl0ID0gc3RkOjptYXgobV9zb2Z0Vk5vZGVMaW1pdCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN5c3RlbU1heFZOb2RlcyAqIDAuMTUpKTsKKyAgICBtX2hhcmRW
Tm9kZUxpbWl0ID0gc3RkOjptYXgobV9oYXJkVk5vZGVMaW1pdCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN5c3RlbU1heFZOb2RlcyAqIDAuMikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCmluZGV4IDc2ZTI3NDVmMjcwMzU1NzkwODJiMzNhZTBlZjY3ZmYyZDM2MjFlNTAuLjMyMDcz
M2JlZjY4ZWE5MmZmZjVmNDdiNDNkNWM4YzUzMzlkY2JhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MCw2ICs1MCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvVk5vZGVUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVO
U1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0
IDxhbGdvcml0aG0+CkBAIC0xODYsNiArMTg3LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
CiAKICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c2V0TG9nZ2luZ0Vu
YWJsZWQocGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcp
OwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIFRyYWNrIHRoZSBudW1iZXIgb2Ygdm5vZGVz
IHdlIGFyZSB1c2luZyBvbiBpT1MgYW5kIG1ha2Ugc3VyZSB3ZSBvbmx5IHVzZSBhCisgICAgLy8g
cmVhc29uYWJsZSBhbW91bnQgYmVjYXVzZSBsaW1pdHMgYXJlIGZhaXJseSBsb3cgb24gaU9TIGRl
dmljZXMgYW5kIHdlIGNhbgorICAgIC8vIGdldCBraWxsZWQgd2hlbiByZWFjaGluZyB0aGUgbGlt
aXQuCisgICAgVk5vZGVUcmFja2VyOjpzaW5nbGV0b24oKS5zZXRQcmVzc3VyZUhhbmRsZXIoW10g
KENyaXRpY2FsIGNyaXRpY2FsKSB7CisgICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2lu
Z2xldG9uKCkucmVsZWFzZU1lbW9yeShjcml0aWNhbCk7CisgICAgfSk7CisjZW5kaWYKKwogICAg
IHNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShwYXJhbWV0ZXJzLmFjY2Vzc2liaWxpdHlFbmhhbmNl
ZFVzZXJJbnRlcmZhY2VFbmFibGVkKTsKIAogI2lmIFVTRShBUFBLSVQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>