<?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>132096</bug_id>
          
          <creation_ts>2014-04-23 18:58:46 -0700</creation_ts>
          <short_desc>[iOS] Manage AudioSession category according to media type</short_desc>
          <delta_ts>2014-05-20 10:58:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1003464</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-23 18:58:46 -0700</bug_when>
    <thetext>Set the AudioSession category differently for WebAudio and &lt;audio&gt;/&lt;video&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003466</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-23 19:02:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/16565372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003472</commentid>
    <comment_count>2</comment_count>
      <attachid>230033</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-23 19:14:30 -0700</bug_when>
    <thetext>Created attachment 230033
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003474</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-23 19:16:34 -0700</bug_when>
    <thetext>Attachment 230033 did not pass style-queue:


ERROR: Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:114:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003622</commentid>
    <comment_count>4</comment_count>
      <attachid>230077</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-24 06:56:53 -0700</bug_when>
    <thetext>Created attachment 230077
Updated patch - now with fewer bogus style errors!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003661</commentid>
    <comment_count>5</comment_count>
      <attachid>230077</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-04-24 09:21:57 -0700</bug_when>
    <thetext>Comment on attachment 230077
Updated patch - now with fewer bogus style errors!

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

r=me, with nits.

&gt; Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp:62
&gt; +    if (has(MediaSession::WebAudio)) {
&gt; +        if (count(MediaSession::WebAudio) == 1)
&gt; +            AudioSession::sharedSession().setActive(1);
&gt; +    } else
&gt; +        AudioSession::sharedSession().setActive(0);

the `0` and `1` should be `true` and `false`.  

setActive() should be safe to call multiple times with the same argument, which would greatly simplify this area of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003662</commentid>
    <comment_count>6</comment_count>
      <attachid>230077</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-24 09:24:58 -0700</bug_when>
    <thetext>Comment on attachment 230077
Updated patch - now with fewer bogus style errors!

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

&gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.h:44
&gt; -class AudioDestinationIOS : public AudioDestination, public AudioSessionListener {
&gt; +class AudioDestinationIOS : public AudioDestination, public MediaSessionClient {

Can we derive from MediaSessionClient privately instead of publicly? Can this class be marked final?

&gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.h:54
&gt; +    virtual void start() override;
&gt; +    virtual void stop() override;
&gt; +    virtual bool isPlaying() override { return m_isPlaying; }
&gt; +
&gt; +    virtual void pausePlayback() override { stop(); }
&gt; +    virtual void resumePlayback() override { start(); }

Can any of these overrides be private instead of public?

&gt; Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp:60
&gt; +        if (count(MediaSession::WebAudio) == 1)
&gt; +            AudioSession::sharedSession().setActive(1);

Is leaving the shared session in the same state as before when the count is not 1 intentional? We’re not calling setActive at all, with either true or false, in that case, and maybe that’s right, but if so I don’t understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003716</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-24 11:25:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 230077 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=230077&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.h:44
&gt; &gt; -class AudioDestinationIOS : public AudioDestination, public AudioSessionListener {
&gt; &gt; +class AudioDestinationIOS : public AudioDestination, public MediaSessionClient {
&gt; 
&gt; Can we derive from MediaSessionClient privately instead of publicly? Can this class be marked final?
&gt; 
  Yes, good point.

&gt; &gt; Source/WebCore/platform/audio/ios/AudioDestinationIOS.h:54
&gt; &gt; +    virtual void start() override;
&gt; &gt; +    virtual void stop() override;
&gt; &gt; +    virtual bool isPlaying() override { return m_isPlaying; }
&gt; &gt; +
&gt; &gt; +    virtual void pausePlayback() override { stop(); }
&gt; &gt; +    virtual void resumePlayback() override { start(); }
&gt; 
&gt; Can any of these overrides be private instead of public?
&gt; 
  Yes, I will make them all private.

&gt; &gt; Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp:60
&gt; &gt; +        if (count(MediaSession::WebAudio) == 1)
&gt; &gt; +            AudioSession::sharedSession().setActive(1);
&gt; 
&gt; Is leaving the shared session in the same state as before when the count is not 1 intentional? We’re not calling setActive at all, with either true or false, in that case, and maybe that’s right, but if so I don’t understand why.

  This code always calls the first time an AudioDestination is created so leaving the state as-is for subsequent allocations doesn&apos;t hurt, but as Jer noted in his review calling setActive(true) multiple times won&apos;t hurt and it will make the code simpler, so I will change this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003720</commentid>
    <comment_count>8</comment_count>
      <attachid>230094</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-04-24 11:29:04 -0700</bug_when>
    <thetext>Created attachment 230094
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003734</commentid>
    <comment_count>9</comment_count>
      <attachid>230094</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-24 12:04:29 -0700</bug_when>
    <thetext>Comment on attachment 230094
Patch for landing.

Clearing flags on attachment: 230094

Committed r167767: &lt;http://trac.webkit.org/changeset/167767&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230033</attachid>
            <date>2014-04-23 19:14:30 -0700</date>
            <delta_ts>2014-04-24 06:56:53 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch_5.txt</filename>
            <type>text/plain</type>
            <size>20423</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA0LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFnZSBB
dWRpb1Nlc3Npb24gY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4
cG9ydCBzZXR0aW5nLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKTogTmV3
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbik6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0
aW5hdGlvbklPUyk6IFVzZSBhIE1lZGlhU2Vzc2lvbiBpbnN0ZWFkIG9mIGluaGVyaXRpbmcKKyAg
ICAgICAgICAgIGZyb20gQXVkaW9MaXN0ZW5lciBhbmQgY2FsbGluZyB0aGUgQXVkaW9TZXNzaW9u
IGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6fkF1ZGlv
RGVzdGluYXRpb25JT1MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25JT1M6OnN0YXJ0KTogTm90aWZ5IHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TOjpzdG9wKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uSU9TOjpiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmVuZGVkQXVkaW9JbnRlcnJ1cHRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjptZWRpYVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6Y2FuUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0
aW5hdGlvbklPUzo6aXNQbGF5aW5nKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjYXRlZ29yeU5h
bWUpOiBEZWJ1Zy1vbmx5IGxvZ2dpbmcgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnNldENhdGVnb3J5KTogRG9uJ3Qgc3RpY2sgd2l0aCAibWVkaWEiIG9uY2UgaXQg
aXMgc2V0LgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNl
dFJlc3RyaWN0aW9ucyk6IFNldCB1cCByZXN0cmljdGlvbnMgZm9yIFdlYkF1ZGlvLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGxheWluZ0luZm8p
OiBEb24ndCBzZXQgaW52YWxpZCBzdGFydCB0aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKTogTWFuYWdlIEF1ZGlvU2Vzc2lvbi5hY3RpdmUg
d2hlbiBXZWJBdWRpbyBjbGllbnRzCisgICAgICAgICAgICBjb21lIGFuZCBnby4gTWFuYWdlIEF1
ZGlvU2Vzc2lvbi5jYXRlZ29yeSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBXZWJBdWRpbyBh
bmQKKyAgICAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgY2xpZW50cy4KKwogMjAxNC0wNC0yMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjLCBpT1Nd
IFN0b3AgYnVmZmVyaW5nIG1lZGlhIHdoZW4gb24gYW4gaW5hY3RpdmUgdGFiLiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY0Miw2ICsyNjQyLDcgQEAgX19aTjdXZWJD
b3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdAogX19aTjdXZWJDb3JlOFNWR05hbWVzNGlu
aXRFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTNnQVZLaXRFbmFibGVkRQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjNzZXROZXR3b3JrSW50ZXJmYWNlTmFtZUVSS04zV1RGNlN0cmluZ0UKK19fWk43
V2ViQ29yZThTZXR0aW5nczE5Z01hbmFnZUF1ZGlvU2Vzc2lvbkUKIF9fWk43V2ViQ29yZThTZXR0
aW5nczMxc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZUVqCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MzNHNldE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMzhnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbkUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTY3NTAx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksMjEgKzY5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3RyaWN0aW9uTmFt
ZShIVE1MTQogfQogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVBdWRpb1Nlc3Npb24o
KQotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgYm9vbCB3YXNBdWRpb1Nlc3Npb25J
bml0aWFsaXplZDsKLSAgICBpZiAod2FzQXVkaW9TZXNzaW9uSW5pdGlhbGl6ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHdhc0F1ZGlvU2Vzc2lvbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBp
ZiAoIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVkaW9T
ZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKLSNlbmRpZgotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8SFRN
TE1lZGlhU2Vzc2lvbj4gSFRNTE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVu
dCYgY2xpZW50KQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZWRpYVNlc3Np
b24+KGNsaWVudCk7CkBAIC05Myw3ICs3OCw2IEBAIEhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRp
YVNlc3Npb24oTWVkaWEKICAgICA6IE1lZGlhU2Vzc2lvbihjbGllbnQpCiAgICAgLCBtX3Jlc3Ry
aWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKIHsKLSAgICBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCk7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGJvb2wgU2V0dGluZ3M6OmdMb3dQ
b3dlclZpZGVvQXVkaW9CdWZmZXIKIGJvb2wgU2V0dGluZ3M6OmdOZXR3b3JrRGF0YVVzYWdlVHJh
Y2tpbmdFbmFibGVkID0gZmFsc2U7CiBib29sIFNldHRpbmdzOjpnQVZLaXRFbmFibGVkID0gZmFs
c2U7CiBib29sIFNldHRpbmdzOjpnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlv
biA9IGZhbHNlOworYm9vbCBTZXR0aW5nczo6Z01hbmFnZUF1ZGlvU2Vzc2lvbiA9IGZhbHNlOwog
I2VuZGlmCiAKIC8vIE5PVEVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAx
Njc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3MCw2ICsyNzAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRP
cHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKGJvb2wgZmxhZykgeyBnU2hvdWxkT3B0T3V0
T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbiA9IGZsYWc7IH0KICAgICBzdGF0aWMgYm9vbCBzaG91
bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKCkgeyByZXR1cm4gZ1Nob3VsZE9wdE91
dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb247IH0KKworICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZE1hbmFnZUF1ZGlvU2Vzc2lvbihib29sIGZsYWcpIHsgZ01hbmFnZUF1ZGlvU2Vzc2lvbiA9IGZs
YWc7IH0KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb24oKSB7IHJldHVy
biBnTWFuYWdlQXVkaW9TZXNzaW9uOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1MSw2ICsz
NTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdOZXR3b3JrRGF0YVVzYWdlVHJhY2tp
bmdFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdBVktpdEVuYWJsZWQ7CiAgICAgc3RhdGljIGJv
b2wgZ1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb247CisgICAgc3RhdGljIGJv
b2wgZ01hbmFnZUF1ZGlvU2Vzc2lvbjsKICNlbmRpZgogCiAgICAgc3RhdGljIGRvdWJsZSBnSGlk
ZGVuUGFnZURPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDE3ICsxMDAsMTEgQEAg
QXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0aW5hdGlvbklPUwogICAgIDogbV9vdXRwdXRV
bml0KDApCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9yZW5kZXJCdXMoQXVk
aW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpKQorICAgICwgbV9tZWRp
YVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9zYW1wbGVSYXRl
KHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAsIG1faW50ZXJydXB0
ZWRPblBsYXliYWNrKGZhbHNlKQogewotICAgIEF1ZGlvU2Vzc2lvbiYgc2Vzc2lvbiA9IEF1ZGlv
U2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpOwotICAgIHNlc3Npb24uYWRkTGlzdGVuZXIodGhpcyk7
Ci0gICAgc2Vzc2lvbi5zZXRDYXRlZ29yeShBdWRpb1Nlc3Npb246OkFtYmllbnRTb3VuZCk7Ci0K
ICAgICBhdWRpb0Rlc3RpbmF0aW9ucygpLmFkZCh0aGlzKTsKLSAgICBpZiAoYXVkaW9EZXN0aW5h
dGlvbnMoKS5zaXplKCkgPT0gMSkKLSAgICAgICAgc2Vzc2lvbi5zZXRBY3RpdmUoMSk7CiAKICAg
ICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21w
b25lbnQgY29tcDsKQEAgLTE0OCwxMCArMTQyLDcgQEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6QXVk
aW9EZXN0aW5hdGlvbklPUwogCiBBdWRpb0Rlc3RpbmF0aW9uSU9TOjp+QXVkaW9EZXN0aW5hdGlv
bklPUygpCiB7Ci0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlTGlzdGVu
ZXIodGhpcyk7CiAgICAgYXVkaW9EZXN0aW5hdGlvbnMoKS5yZW1vdmUodGhpcyk7Ci0gICAgaWYg
KCFhdWRpb0Rlc3RpbmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFy
ZWRTZXNzaW9uKCkuc2V0QWN0aXZlKDApOwogCiAgICAgaWYgKG1fb3V0cHV0VW5pdCkKICAgICAg
ICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9vdXRwdXRVbml0KTsKQEAgLTE5Miwz
OCArMTgzLDMwIEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6Y29uZmlndXJlKCkKIAogdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCgpCiB7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9PdXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKKyAgICBMT0coTWVkaWEsICJBdWRp
b0Rlc3RpbmF0aW9uSU9TOjpzdGFydCIpOworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVu
dFdpbGxCZWdpblBsYXliYWNrKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcg
YmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAg
IE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKIH0KIAogdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uSU9TOjpzdG9wKCkKIHsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CisgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbklPUzo6c3RvcCIpOworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcgYmVjYXVz
ZSBvZiBpbnRlcnJ1cHRpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIE9TU3Rh
dHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRwdXRVbml0KTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKIH0KIAotdm9pZCBBdWRpb0Rl
c3RpbmF0aW9uSU9TOjpiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKCkKLXsKLSAgICBpZiAoIW1faXNQ
bGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wKCk7Ci0gICAgbV9pbnRlcnJ1cHRl
ZE9uUGxheWJhY2sgPSB0cnVlOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OmVuZGVk
QXVkaW9JbnRlcnJ1cHRpb24oKQotewotICAgIGlmICghbV9pbnRlcnJ1cHRlZE9uUGxheWJhY2sp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1faW50ZXJydXB0ZWRPblBsYXliYWNrID0gZmFsc2U7
Ci0gICAgc3RhcnQoKTsKLX0KLQogLy8gUHVsbHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCByZW5k
ZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpyZW5kZXIo
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuaAkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNl
c3Npb24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC00MCwyMSArNDEsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1
ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uSU9TIDogcHVibGljIEF1ZGlvRGVzdGlu
YXRpb24sIHB1YmxpYyBBdWRpb1Nlc3Npb25MaXN0ZW5lciB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0
aW9uSU9TIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25DbGll
bnQgewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiwg
ZG91YmxlIHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25JT1MoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0g
ICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQorICAgIHZpcnR1YWwg
dm9pZCBzdGFydCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3Rv
cCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdGFy
dCgpOyB9CiAKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVS
YXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25maWd1cmUoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYmVnYW5BdWRpb0ludGVycnVwdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBl
bmRlZEF1ZGlvSW50ZXJydXB0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6
V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSkgeyB9CiAKICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjawogICAgIHN0YXRp
YyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlv
bkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVzTnVtYmVyLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKQEAgLTY3LDEwICs3Mywx
MCBAQCBwcml2YXRlOgogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAgICAgQXVkaW9JT0Nh
bGxiYWNrJiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAKICAgICBk
b3VibGUgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0gICAgYm9vbCBtX2lu
dGVycnVwdGVkT25QbGF5YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
QXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTEwNCw2ICsxMDUs
MjYgQEAgLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKworI2lmICFMT0dfRElTQUJMRUQKK3N0YXRpYyBjb25zdCBjaGFyKiBj
YXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit7CisjZGVm
aW5lIENBU0UoY2F0ZWdvcnkpIGNhc2UgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeTogcmV0dXJuICNj
YXRlZ29yeQorICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHsKKyAgICBDQVNFKE5vbmUpOworICAgIENB
U0UoQW1iaWVudFNvdW5kKTsKKyAgICBDQVNFKFNvbG9BbWJpZW50U291bmQpOworICAgIENBU0Uo
TWVkaWFQbGF5YmFjayk7CisgICAgQ0FTRShSZWNvcmRBdWRpbyk7CisgICAgQ0FTRShQbGF5QW5k
UmVjb3JkKTsKKyAgICBDQVNFKEF1ZGlvUHJvY2Vzc2luZyk7CisgICAgfQorICAgIAorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiIjsKK30KKyNlbmRpZgorCiBjbGFzcyBB
dWRpb1Nlc3Npb25Qcml2YXRlIHsKIHB1YmxpYzoKICAgICBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1
ZGlvU2Vzc2lvbiopOwpAQCAtMTI4LDE4ICsxNDksMTQgQEAgQXVkaW9TZXNzaW9uOjp+QXVkaW9T
ZXNzaW9uKCkKIAogdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBu
ZXdDYXRlZ29yeSkKIHsKLSAgICBpZiAoY2F0ZWdvcnlPdmVycmlkZSgpICYmIGNhdGVnb3J5T3Zl
cnJpZGUoKSAhPSBuZXdDYXRlZ29yeSkKLSAgICAgICAgcmV0dXJuOworICAgIExPRyhNZWRpYSwg
IkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGNhdGVnb3J5ID0gJXMiLCBjYXRlZ29yeU5h
bWUobmV3Q2F0ZWdvcnkpKTsKIAotICAgIGlmICghY2F0ZWdvcnlPdmVycmlkZSgpKSB7Ci0gICAg
ICAgIC8vIElmIGEgcGFnZSBwbGF5cyBvbmx5IFdlYkF1ZGlvIHdlIHNldCB0aGUgYXVkaW8gY2F0
ZWdvcnkgdG8gImFtYmllbnQiIHNvIGl0IGlzIG11dGVkIGJ5IHRoZSByaW5nZXIgc3dpdGNoLgot
ICAgICAgICAvLyBIb3dldmVyLCBhdWRpbyBmcm9tIGFuIEhUTUw1IG1lZGlhIGVsZW1lbnQgb3Ig
ZnJvbSBhIHBsdWctaW4gc2hvdWxkIGFsd2F5cyBwbGF5IGFzICJtZWRpYSIgc28gZG9uJ3QgY2hh
bmdlIHRoZQotICAgICAgICAvLyBjYXRlZ29yeSBvbmNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2V0
IHRvIG1lZGlhLgotICAgICAgICBpZiAobmV3Q2F0ZWdvcnkgPT0gQXVkaW9TZXNzaW9uOjpBbWJp
ZW50U291bmQgJiYgY2F0ZWdvcnkoKSA9PSBBdWRpb1Nlc3Npb246Ok1lZGlhUGxheWJhY2spCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgaWYgKGNhdGVnb3J5T3ZlcnJpZGUoKSAmJiBjYXRlZ29y
eU92ZXJyaWRlKCkgIT0gbmV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9T
ZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gb3ZlcnJpZGUgc2V0LCBOT1QgY2hhbmdpbmciKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE5TU3RyaW5nKiBjYXRlZ29yeVN0cmluZzsKKyAg
ICBOU1N0cmluZyAqY2F0ZWdvcnlTdHJpbmc7CiAgICAgc3dpdGNoIChuZXdDYXRlZ29yeSkgewog
ICAgIGNhc2UgQW1iaWVudFNvdW5kOgogICAgICAgICBjYXRlZ29yeVN0cmluZyA9IEFWQXVkaW9T
ZXNzaW9uQ2F0ZWdvcnlBbWJpZW50OwpAQCAtMTcxLDcgKzE4OCw3IEBAIHZvaWQgQXVkaW9TZXNz
aW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVQKIAogQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CiB7Ci0gICAgTlNTdHJpbmcqIGNhdGVnb3J5
U3RyaW5nID0gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gY2F0ZWdvcnldOworICAg
IE5TU3RyaW5nICpjYXRlZ29yeVN0cmluZyA9IFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFu
Y2VdIGNhdGVnb3J5XTsKICAgICBpZiAoW2NhdGVnb3J5U3RyaW5nIGlzRXF1YWw6QVZBdWRpb1Nl
c3Npb25DYXRlZ29yeUFtYmllbnRdKQogICAgICAgICByZXR1cm4gQW1iaWVudFNvdW5kOwogICAg
IGlmIChbY2F0ZWdvcnlTdHJpbmcgaXNFcXVhbDpBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5U29sb0Ft
YmllbnRdKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJldmlzaW9uIDE2NzUwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsOCArMTM2LDE1IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6cmVzZXRSZXN0cmkKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246
OlZpZGVvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpOwogICAgIGFkZFJlc3RyaWN0
aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIEJhY2tncm91bmRQbGF5YmFja05vdFBlcm1pdHRlZCk7
CiAKKyAgICByZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBDb25jdXJyZW50
UGxheWJhY2tOb3RQZXJtaXR0ZWQpOworICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lv
bjo6QXVkaW8sIEJhY2tncm91bmRQbGF5YmFja05vdFBlcm1pdHRlZCk7CisKKyAgICByZW1vdmVS
ZXN0cmljdGlvbihNZWRpYVNlc3Npb246OldlYkF1ZGlvLCBDb25jdXJyZW50UGxheWJhY2tOb3RQ
ZXJtaXR0ZWQpOworICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8s
IEJhY2tncm91bmRQbGF5YmFja05vdFBlcm1pdHRlZCk7CisKICAgICByZW1vdmVSZXN0cmljdGlv
bihNZWRpYVNlc3Npb246OkF1ZGlvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwog
ICAgIHJlbW92ZVJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIE1ldGFkYXRhUHJlbG9h
ZGluZ05vdFBlcm1pdHRlZCk7CisKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1
ZGlvLCBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCk7CiAgICAgYWRkUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpWaWRlbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOwogfQpAQCAtMTkz
LDcgKzIwMCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGwKICAg
ICAgICAgW2luZm8gc2V0VmFsdWU6QChkdXJhdGlvbikgZm9yS2V5Ok1QTWVkaWFJdGVtUHJvcGVy
dHlQbGF5YmFja0R1cmF0aW9uXTsKICAgICAKICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBjdXJy
ZW50U2Vzc2lvbi0+Y3VycmVudFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShjdXJyZW50
VGltZSkpCisgICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpICYmIGN1cnJlbnRUaW1l
ICE9IE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQogICAgICAgICBbaW5mbyBzZXRWYWx1ZTpA
KGN1cnJlbnRUaW1lKSBmb3JLZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5RWxhcHNlZFBsYXli
YWNrVGltZV07CiAgICAgCiAgICAgW2luZm8gc2V0VmFsdWU6KGN1cnJlbnRTZXNzaW9uLT5zdGF0
ZSgpID09IE1lZGlhU2Vzc2lvbjo6UGxheWluZyA/IEBZRVMgOiBATk8pIGZvcktleTpNUE5vd1Bs
YXlpbmdJbmZvUHJvcGVydHlQbGF5YmFja1JhdGVdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFj
LmNwcAkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDExICs0Niwy
OCBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TCiAKICAgICBpZiAo
aGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQogICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKS5zZXRQcmVmZXJyZWRCdWZmZXJTaXplKGtXZWJBdWRpb0J1ZmZlclNpemUpOwot
ICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5
IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93Ci0gICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRlc3Rz
IHRvIGZhaWwgb24gMTAuOC4KICNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIGVsc2UgaWYgKChoYXMoTWVkaWFTZXNzaW9uOjpW
aWRlbykgfHwgaGFzKE1lZGlhU2Vzc2lvbjo6QXVkaW8pKSAmJiBTZXR0aW5nczo6bG93UG93ZXJW
aWRlb0F1ZGlvQnVmZmVyU2l6ZUVuYWJsZWQoKSkKKyAgICBlbHNlIGlmICgoaGFzKE1lZGlhU2Vz
c2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRpYVNlc3Npb246OkF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxv
d1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjcyNT4gRmlndXJlIG91dCB3aHkgZW5hYmxpbmcgdGhl
IGNvZGUgYmVsb3cKKyAgICAgICAgLy8gY2F1c2VzIG1lZGlhIExheW91dFRlc3RzIHRvIGZhaWwg
b24gMTAuOC4KICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShrTG93UG93ZXJWaWRlb0J1ZmZlclNpemUpOworICAgIH0KKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChoYXMoTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykp
IHsKKyAgICAgICAgaWYgKGNvdW50KE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pID09IDEpCisgICAg
ICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUoMSk7CisgICAg
fSBlbHNlCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldEFjdGl2ZSgw
KTsKKworICAgIGlmICghU2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhN
ZWRpYVNlc3Npb246OkF1ZGlvKSkKKyAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKKyAgICBlbHNlIGlm
IChoYXMoTWVkaWFTZXNzaW9uOjpXZWJBdWRpbykpCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hh
cmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kKTsKICNl
bmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjc3MzQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wNC0y
MyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBNYW5hZ2UgQXVkaW9TZXNzaW9uIGNhdGVnb3J5IGFjY29yZGluZyB0byBtZWRpYSB0eXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIwOTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFn
ZSk6IFRlbGwgV2ViQ29yZSB0byBtYW5hZ2UgdGhlIEF1ZGlvU2Vzc2lvbi4KKwogMjAxNC0wNC0y
MyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFN1
cHBvcnQgZW5jb2RpbmcvZGVjb2RpbmcgTlNVSW50ZWdlciBhcmd1bWVudHMgaW4gV0tSZW1vdGVP
YmplY3RDb2Rlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDE2NzUwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDYgKzMwOSwxMCBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgLy8gNG1zIHNo
b3VsZCBiZSBhZG9wdGVkIHByb2plY3Qtd2lkZSBub3csIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTIxNAogICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbCgwLjAwNCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgU2V0dGluZ3M6OnNl
dFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbih0cnVlKTsKKyNlbmRpZgorCiAgICAgUGFnZTo6UGFn
ZUNsaWVudHMgcGFnZUNsaWVudHM7CiAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3
IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA0LTIzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFn
ZSBBdWRpb1Nlc3Npb24gY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5h
bWU6Z3JvdXBOYW1lOl0pOiBUZWxsIAorICAgICAgICAgICAgV2ViQ29yZSB0byBtYW5hZ2UgdGhl
IEF1ZGlvU2Vzc2lvbiB3aGVuIHJ1bm5pbmcgaW4gTW9iaWxlU2FmYXJpLgorCiAyMDE0LTA0LTIz
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3Qg
bWlncmF0ZSB0aGUgV0tWaWV3LmggaGVhZGVyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE2NzUwMSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTAx
LDYgKzkwMSwxMSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAg
ICAgICAgIAogICAgICAgICBTZXR0aW5nczo6c2V0U2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NB
dHRyaWJ1dGVTZXR0ZXJzKHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVy
cygpKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgaWYgKGFwcGxpY2F0aW9uSXNNb2Jp
bGVTYWZhcmkoKSkKKyAgICAgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nl
c3Npb24odHJ1ZSk7CisjZW5kaWYKKwogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24g
PSB0cnVlOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230077</attachid>
            <date>2014-04-24 06:56:53 -0700</date>
            <delta_ts>2014-05-20 10:58:05 -0700</delta_ts>
            <desc>Updated patch - now with fewer bogus style errors!</desc>
            <filename>patch_6.txt</filename>
            <type>text/plain</type>
            <size>20451</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA0LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFnZSBB
dWRpb1Nlc3Npb24gY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IEV4
cG9ydCBzZXR0aW5nLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRpYVNlc3Npb24pOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKTogTmV3
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbik6
IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0
aW5hdGlvbklPUyk6IFVzZSBhIE1lZGlhU2Vzc2lvbiBpbnN0ZWFkIG9mIGluaGVyaXRpbmcKKyAg
ICAgICAgICAgIGZyb20gQXVkaW9MaXN0ZW5lciBhbmQgY2FsbGluZyB0aGUgQXVkaW9TZXNzaW9u
IGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6fkF1ZGlv
RGVzdGluYXRpb25JT1MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25JT1M6OnN0YXJ0KTogTm90aWZ5IHNlc3Npb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TOjpzdG9wKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uSU9TOjpiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmVuZGVkQXVkaW9JbnRlcnJ1cHRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjptZWRpYVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6Y2FuUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0
aW5hdGlvbklPUzo6aXNQbGF5aW5nKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjYXRlZ29yeU5h
bWUpOiBEZWJ1Zy1vbmx5IGxvZ2dpbmcgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnNldENhdGVnb3J5KTogRG9uJ3Qgc3RpY2sgd2l0aCAibWVkaWEiIG9uY2UgaXQg
aXMgc2V0LgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpyZXNl
dFJlc3RyaWN0aW9ucyk6IFNldCB1cCByZXN0cmljdGlvbnMgZm9yIFdlYkF1ZGlvLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6dXBkYXRlTm93UGxheWluZ0luZm8p
OiBEb24ndCBzZXQgaW52YWxpZCBzdGFydCB0aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9u
TWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKTogTWFuYWdlIEF1ZGlvU2Vzc2lvbi5hY3RpdmUg
d2hlbiBXZWJBdWRpbyBjbGllbnRzCisgICAgICAgICAgICBjb21lIGFuZCBnby4gTWFuYWdlIEF1
ZGlvU2Vzc2lvbi5jYXRlZ29yeSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBXZWJBdWRpbyBh
bmQKKyAgICAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgY2xpZW50cy4KKwogMjAxNC0wNC0yMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjLCBpT1Nd
IFN0b3AgYnVmZmVyaW5nIG1lZGlhIHdoZW4gb24gYW4gaW5hY3RpdmUgdGFiLiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjY0Miw2ICsyNjQyLDcgQEAgX19aTjdXZWJD
b3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdAogX19aTjdXZWJDb3JlOFNWR05hbWVzNGlu
aXRFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTNnQVZLaXRFbmFibGVkRQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjNzZXROZXR3b3JrSW50ZXJmYWNlTmFtZUVSS04zV1RGNlN0cmluZ0UKK19fWk43
V2ViQ29yZThTZXR0aW5nczE5Z01hbmFnZUF1ZGlvU2Vzc2lvbkUKIF9fWk43V2ViQ29yZThTZXR0
aW5nczMxc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZUVqCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MzNHNldE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMzhnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbkUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkocmV2aXNpb24gMTY3NTAx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFTZXNzaW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksMjEgKzY5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHJlc3RyaWN0aW9uTmFt
ZShIVE1MTQogfQogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVBdWRpb1Nlc3Npb24o
KQotewotI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0aWMgYm9vbCB3YXNBdWRpb1Nlc3Npb25J
bml0aWFsaXplZDsKLSAgICBpZiAod2FzQXVkaW9TZXNzaW9uSW5pdGlhbGl6ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHdhc0F1ZGlvU2Vzc2lvbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBp
ZiAoIVdlYkNvcmU6OmFwcGxpY2F0aW9uSXNNb2JpbGVTYWZhcmkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0Q2F0ZWdvcnkoQXVkaW9T
ZXNzaW9uOjpNZWRpYVBsYXliYWNrKTsKLSNlbmRpZgotfQotCiBzdGQ6OnVuaXF1ZV9wdHI8SFRN
TE1lZGlhU2Vzc2lvbj4gSFRNTE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKE1lZGlhU2Vzc2lvbkNsaWVu
dCYgY2xpZW50KQogewogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhUTUxNZWRpYVNlc3Np
b24+KGNsaWVudCk7CkBAIC05Myw3ICs3OCw2IEBAIEhUTUxNZWRpYVNlc3Npb246OkhUTUxNZWRp
YVNlc3Npb24oTWVkaWEKICAgICA6IE1lZGlhU2Vzc2lvbihjbGllbnQpCiAgICAgLCBtX3Jlc3Ry
aWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKIHsKLSAgICBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCk7
CiB9CiAKIHZvaWQgSFRNTE1lZGlhU2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGJvb2wgU2V0dGluZ3M6OmdMb3dQ
b3dlclZpZGVvQXVkaW9CdWZmZXIKIGJvb2wgU2V0dGluZ3M6OmdOZXR3b3JrRGF0YVVzYWdlVHJh
Y2tpbmdFbmFibGVkID0gZmFsc2U7CiBib29sIFNldHRpbmdzOjpnQVZLaXRFbmFibGVkID0gZmFs
c2U7CiBib29sIFNldHRpbmdzOjpnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlv
biA9IGZhbHNlOworYm9vbCBTZXR0aW5nczo6Z01hbmFnZUF1ZGlvU2Vzc2lvbiA9IGZhbHNlOwog
I2VuZGlmCiAKIC8vIE5PVEVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiAx
Njc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3MCw2ICsyNzAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRP
cHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKGJvb2wgZmxhZykgeyBnU2hvdWxkT3B0T3V0
T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbiA9IGZsYWc7IH0KICAgICBzdGF0aWMgYm9vbCBzaG91
bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKCkgeyByZXR1cm4gZ1Nob3VsZE9wdE91
dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb247IH0KKworICAgIHN0YXRpYyB2b2lkIHNldFNob3Vs
ZE1hbmFnZUF1ZGlvU2Vzc2lvbihib29sIGZsYWcpIHsgZ01hbmFnZUF1ZGlvU2Vzc2lvbiA9IGZs
YWc7IH0KKyAgICBzdGF0aWMgYm9vbCBzaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb24oKSB7IHJldHVy
biBnTWFuYWdlQXVkaW9TZXNzaW9uOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1MSw2ICsz
NTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGdOZXR3b3JrRGF0YVVzYWdlVHJhY2tp
bmdFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdBVktpdEVuYWJsZWQ7CiAgICAgc3RhdGljIGJv
b2wgZ1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb247CisgICAgc3RhdGljIGJv
b2wgZ01hbmFnZUF1ZGlvU2Vzc2lvbjsKICNlbmRpZgogCiAgICAgc3RhdGljIGRvdWJsZSBnSGlk
ZGVuUGFnZURPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3Bw
CShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDE3ICsxMDAsMTEgQEAg
QXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0aW5hdGlvbklPUwogICAgIDogbV9vdXRwdXRV
bml0KDApCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9yZW5kZXJCdXMoQXVk
aW9CdXM6OmNyZWF0ZSgyLCBrUmVuZGVyQnVmZmVyU2l6ZSwgZmFsc2UpKQorICAgICwgbV9tZWRp
YVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogICAgICwgbV9zYW1wbGVSYXRl
KHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAsIG1faW50ZXJydXB0
ZWRPblBsYXliYWNrKGZhbHNlKQogewotICAgIEF1ZGlvU2Vzc2lvbiYgc2Vzc2lvbiA9IEF1ZGlv
U2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpOwotICAgIHNlc3Npb24uYWRkTGlzdGVuZXIodGhpcyk7
Ci0gICAgc2Vzc2lvbi5zZXRDYXRlZ29yeShBdWRpb1Nlc3Npb246OkFtYmllbnRTb3VuZCk7Ci0K
ICAgICBhdWRpb0Rlc3RpbmF0aW9ucygpLmFkZCh0aGlzKTsKLSAgICBpZiAoYXVkaW9EZXN0aW5h
dGlvbnMoKS5zaXplKCkgPT0gMSkKLSAgICAgICAgc2Vzc2lvbi5zZXRBY3RpdmUoMSk7CiAKICAg
ICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21w
b25lbnQgY29tcDsKQEAgLTE0OCwxMCArMTQyLDcgQEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6QXVk
aW9EZXN0aW5hdGlvbklPUwogCiBBdWRpb0Rlc3RpbmF0aW9uSU9TOjp+QXVkaW9EZXN0aW5hdGlv
bklPUygpCiB7Ci0gICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkucmVtb3ZlTGlzdGVu
ZXIodGhpcyk7CiAgICAgYXVkaW9EZXN0aW5hdGlvbnMoKS5yZW1vdmUodGhpcyk7Ci0gICAgaWYg
KCFhdWRpb0Rlc3RpbmF0aW9ucygpLnNpemUoKSkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFy
ZWRTZXNzaW9uKCkuc2V0QWN0aXZlKDApOwogCiAgICAgaWYgKG1fb3V0cHV0VW5pdCkKICAgICAg
ICAgQXVkaW9Db21wb25lbnRJbnN0YW5jZURpc3Bvc2UobV9vdXRwdXRVbml0KTsKQEAgLTE5Miwz
OCArMTgzLDMwIEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6Y29uZmlndXJlKCkKIAogdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCgpCiB7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0g
QXVkaW9PdXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKKyAgICBMT0coTWVkaWEsICJBdWRp
b0Rlc3RpbmF0aW9uSU9TOjpzdGFydCIpOworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVu
dFdpbGxCZWdpblBsYXliYWNrKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcg
YmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAg
IE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIG1faXNQbGF5aW5nID0gdHJ1ZTsKIH0KIAogdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uSU9TOjpzdG9wKCkKIHsKLSAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CisgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbklPUzo6c3RvcCIpOworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcgYmVjYXVz
ZSBvZiBpbnRlcnJ1cHRpb24iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIE9TU3Rh
dHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0b3AobV9vdXRwdXRVbml0KTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKIH0KIAotdm9pZCBBdWRpb0Rl
c3RpbmF0aW9uSU9TOjpiZWdhbkF1ZGlvSW50ZXJydXB0aW9uKCkKLXsKLSAgICBpZiAoIW1faXNQ
bGF5aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdG9wKCk7Ci0gICAgbV9pbnRlcnJ1cHRl
ZE9uUGxheWJhY2sgPSB0cnVlOwotfQotCi12b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OmVuZGVk
QXVkaW9JbnRlcnJ1cHRpb24oKQotewotICAgIGlmICghbV9pbnRlcnJ1cHRlZE9uUGxheWJhY2sp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1faW50ZXJydXB0ZWRPblBsYXliYWNrID0gZmFsc2U7
Ci0gICAgc3RhcnQoKTsKLX0KLQogLy8gUHVsbHMgb24gb3VyIHByb3ZpZGVyIHRvIGdldCByZW5k
ZXJlZCBhdWRpbyBzdHJlYW0uCiBPU1N0YXR1cyBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpyZW5kZXIo
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuaAkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9u
LmgiCiAjaW5jbHVkZSAiQXVkaW9TZXNzaW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNl
c3Npb24uaCIKICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCkBAIC00MCwyMSArNDEsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAv
LyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1
ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uSU9TIDogcHVibGljIEF1ZGlvRGVzdGlu
YXRpb24sIHB1YmxpYyBBdWRpb1Nlc3Npb25MaXN0ZW5lciB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0
aW9uSU9TIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25DbGll
bnQgewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiwg
ZG91YmxlIHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25JT1MoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7Ci0g
ICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJldHVybiBtX2lzUGxheWluZzsgfQorICAgIHZpcnR1YWwg
dm9pZCBzdGFydCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3Rv
cCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdGFy
dCgpOyB9CiAKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVS
YXRlOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb25maWd1cmUoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYmVnYW5BdWRpb0ludGVycnVwdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBl
bmRlZEF1ZGlvSW50ZXJydXB0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6
V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSkgeyB9CiAKICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFjawogICAgIHN0YXRp
YyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5pdFJlbmRlckFjdGlv
bkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVzTnVtYmVyLCBVSW50MzIg
bnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKQEAgLTY3LDEwICs3Mywx
MCBAQCBwcml2YXRlOgogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAgICAgQXVkaW9JT0Nh
bGxiYWNrJiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9yZW5kZXJCdXM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CiAKICAgICBk
b3VibGUgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0gICAgYm9vbCBtX2lu
dGVycnVwdGVkT25QbGF5YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FW
QXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTEwNCw2ICsxMDUs
MjYgQEAgLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICopbgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKKworI2lmICFMT0dfRElTQUJMRUQKK3N0YXRpYyBjb25zdCBjaGFyKiBj
YXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit7CisjZGVm
aW5lIENBU0UoY2F0ZWdvcnkpIGNhc2UgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeTogcmV0dXJuICNj
YXRlZ29yeQorICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHsKKyAgICAgICAgQ0FTRShOb25lKTsKKyAg
ICAgICAgQ0FTRShBbWJpZW50U291bmQpOworICAgICAgICBDQVNFKFNvbG9BbWJpZW50U291bmQp
OworICAgICAgICBDQVNFKE1lZGlhUGxheWJhY2spOworICAgICAgICBDQVNFKFJlY29yZEF1ZGlv
KTsKKyAgICAgICAgQ0FTRShQbGF5QW5kUmVjb3JkKTsKKyAgICAgICAgQ0FTRShBdWRpb1Byb2Nl
c3NpbmcpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gIiI7Cit9CisjZW5kaWYKKwogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7CiBwdWJsaWM6
CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKQEAgLTEyOCwxOCArMTQ5
LDE0IEBAIEF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpCiAKIHZvaWQgQXVkaW9TZXNzaW9u
OjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnkpCiB7Ci0gICAgaWYgKGNhdGVn
b3J5T3ZlcnJpZGUoKSAmJiBjYXRlZ29yeU92ZXJyaWRlKCkgIT0gbmV3Q2F0ZWdvcnkpCi0gICAg
ICAgIHJldHVybjsKKyAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkg
LSBjYXRlZ29yeSA9ICVzIiwgY2F0ZWdvcnlOYW1lKG5ld0NhdGVnb3J5KSk7CiAKLSAgICBpZiAo
IWNhdGVnb3J5T3ZlcnJpZGUoKSkgewotICAgICAgICAvLyBJZiBhIHBhZ2UgcGxheXMgb25seSBX
ZWJBdWRpbyB3ZSBzZXQgdGhlIGF1ZGlvIGNhdGVnb3J5IHRvICJhbWJpZW50IiBzbyBpdCBpcyBt
dXRlZCBieSB0aGUgcmluZ2VyIHN3aXRjaC4KLSAgICAgICAgLy8gSG93ZXZlciwgYXVkaW8gZnJv
bSBhbiBIVE1MNSBtZWRpYSBlbGVtZW50IG9yIGZyb20gYSBwbHVnLWluIHNob3VsZCBhbHdheXMg
cGxheSBhcyAibWVkaWEiIHNvIGRvbid0IGNoYW5nZSB0aGUKLSAgICAgICAgLy8gY2F0ZWdvcnkg
b25jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byBtZWRpYS4KLSAgICAgICAgaWYgKG5ld0Nh
dGVnb3J5ID09IEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kICYmIGNhdGVnb3J5KCkgPT0gQXVk
aW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmIChj
YXRlZ29yeU92ZXJyaWRlKCkgJiYgY2F0ZWdvcnlPdmVycmlkZSgpICE9IG5ld0NhdGVnb3J5KSB7
CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIG92ZXJy
aWRlIHNldCwgTk9UIGNoYW5naW5nIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBO
U1N0cmluZyogY2F0ZWdvcnlTdHJpbmc7CisgICAgTlNTdHJpbmcgKmNhdGVnb3J5U3RyaW5nOwog
ICAgIHN3aXRjaCAobmV3Q2F0ZWdvcnkpIHsKICAgICBjYXNlIEFtYmllbnRTb3VuZDoKICAgICAg
ICAgY2F0ZWdvcnlTdHJpbmcgPSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudDsKQEAgLTE3
MSw3ICsxODgsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUCiAK
IEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkoKSBjb25z
dAogewotICAgIE5TU3RyaW5nKiBjYXRlZ29yeVN0cmluZyA9IFtbQVZBdWRpb1Nlc3Npb24gc2hh
cmVkSW5zdGFuY2VdIGNhdGVnb3J5XTsKKyAgICBOU1N0cmluZyAqY2F0ZWdvcnlTdHJpbmcgPSBb
W0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBjYXRlZ29yeV07CiAgICAgaWYgKFtjYXRl
Z29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50XSkKICAgICAg
ICAgcmV0dXJuIEFtYmllbnRTb3VuZDsKICAgICBpZiAoW2NhdGVnb3J5U3RyaW5nIGlzRXF1YWw6
QVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50XSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2Vy
SU9TLm1tCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDgg
KzEzNiwxNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0UmVzdHJpCiAgICAg
YWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgQ29uY3VycmVudFBsYXliYWNrTm90
UGVybWl0dGVkKTsKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBCYWNr
Z3JvdW5kUGxheWJhY2tOb3RQZXJtaXR0ZWQpOwogCisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVk
aWFTZXNzaW9uOjpBdWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKTsKKyAgICBy
ZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBCYWNrZ3JvdW5kUGxheWJhY2tO
b3RQZXJtaXR0ZWQpOworCisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpXZWJB
dWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKTsKKyAgICByZW1vdmVSZXN0cmlj
dGlvbihNZWRpYVNlc3Npb246OldlYkF1ZGlvLCBCYWNrZ3JvdW5kUGxheWJhY2tOb3RQZXJtaXR0
ZWQpOworCiAgICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpBdWRpbywgTWV0YWRh
dGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKICAgICByZW1vdmVSZXN0cmljdGlvbihNZWRpYVNl
c3Npb246OlZpZGVvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQpOworCiAgICAgYWRk
UmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpBdWRpbywgQXV0b1ByZWxvYWRpbmdOb3RQZXJtaXR0
ZWQpOwogICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8sIEF1dG9QcmVsb2Fk
aW5nTm90UGVybWl0dGVkKTsKIH0KQEAgLTE5Myw3ICsyMDAsNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsCiAgICAgICAgIFtpbmZvIHNldFZhbHVlOkAoZHVyYXRp
b24pIGZvcktleTpNUE1lZGlhSXRlbVByb3BlcnR5UGxheWJhY2tEdXJhdGlvbl07CiAgICAgCiAg
ICAgZG91YmxlIGN1cnJlbnRUaW1lID0gY3VycmVudFNlc3Npb24tPmN1cnJlbnRUaW1lKCk7Ci0g
ICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpKQorICAgIGlmIChzdGQ6OmlzZmluaXRl
KGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUo
KSkKICAgICAgICAgW2luZm8gc2V0VmFsdWU6QChjdXJyZW50VGltZSkgZm9yS2V5Ok1QTm93UGxh
eWluZ0luZm9Qcm9wZXJ0eUVsYXBzZWRQbGF5YmFja1RpbWVdOwogICAgIAogICAgIFtpbmZvIHNl
dFZhbHVlOihjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcg
PyBAWUVTIDogQE5PKSBmb3JLZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5UGxheWJhY2tSYXRl
XTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHJldmlzaW9uIDE2NzUwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00NiwxMSArNDYsMjggQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
Ojp1cGRhdGVTZXNzaW9uUwogCiAgICAgaWYgKGhhcyhNZWRpYVNlc3Npb246OldlYkF1ZGlvKSkK
ICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJlZmVycmVkQnVmZmVy
U2l6ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKLSAgICAvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTE2NzI1PiBGaWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29kZSBiZWxvdwotICAg
IC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjguCiAjaWYgUExBVEZP
Uk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBl
bHNlIGlmICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRpYVNlc3Npb246OkF1
ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkKCkp
CisgICAgZWxzZSBpZiAoKGhhcyhNZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNz
aW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9CdWZmZXJTaXplRW5h
YmxlZCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTY3MjU+
IEZpZ3VyZSBvdXQgd2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93CisgICAgICAgIC8vIGNhdXNl
cyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjguCiAgICAgICAgIEF1ZGlvU2Vzc2lv
bjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa0xvd1Bvd2VyVmlkZW9C
dWZmZXJTaXplKTsKKyAgICB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
aGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKSB7CisgICAgICAgIGlmIChjb3VudChNZWRpYVNl
c3Npb246OldlYkF1ZGlvKSA9PSAxKQorICAgICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0QWN0aXZlKDEpOworICAgIH0gZWxzZQorICAgICAgICBBdWRpb1Nlc3Npb246
OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUoMCk7CisKKyAgICBpZiAoIVNldHRpbmdzOjpzaG91
bGRNYW5hZ2VBdWRpb1Nlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGhhcyhN
ZWRpYVNlc3Npb246OlZpZGVvKSB8fCBoYXMoTWVkaWFTZXNzaW9uOjpBdWRpbykpCisgICAgICAg
IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lvbjo6
TWVkaWFQbGF5YmFjayk7CisgICAgZWxzZSBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8p
KQorICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRDYXRlZ29yeShBdWRp
b1Nlc3Npb246OkFtYmllbnRTb3VuZCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTY3NzM0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDQtMjMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gTWFuYWdlIEF1ZGlvU2Vzc2lvbiBjYXRlZ29y
eSBhY2NvcmRpbmcgdG8gbWVkaWEgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOiBUZWxsIFdlYkNvcmUgdG8gbWFuYWdlIHRo
ZSBBdWRpb1Nlc3Npb24uCisKIDIwMTQtMDQtMjMgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3po
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGVuY29kaW5nL2RlY29kaW5nIE5TVUlu
dGVnZXIgYXJndW1lbnRzIGluIFdLUmVtb3RlT2JqZWN0Q29kZXIuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjc1MDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwOSw2ICszMDksMTAgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IAogICAgIC8vIDRtcyBzaG91bGQgYmUgYWRvcHRlZCBwcm9qZWN0LXdpZGUg
bm93LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEyMTQKICAgICBT
ZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCisjaWYgUExB
VEZPUk0oSU9TKQorICAgIFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb24odHJ1
ZSk7CisjZW5kaWYKKwogICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwogICAgIHBh
Z2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAjaWYg
RU5BQkxFKENPTlRFWFRfTUVOVVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjc3
MzQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxNC0wNC0yMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBNYW5hZ2UgQXVkaW9TZXNzaW9uIGNhdGVnb3J5IGFjY29y
ZGluZyB0byBtZWRpYSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzIwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKTogVGVsbCAKKyAgICAg
ICAgICAgIFdlYkNvcmUgdG8gbWFuYWdlIHRoZSBBdWRpb1Nlc3Npb24gd2hlbiBydW5uaW5nIGlu
IE1vYmlsZVNhZmFyaS4KKwogMjAxNC0wNC0yMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IG1pZ3JhdGUgdGhlIFdLVmlldy5oIGhlYWRlciBm
cm9tIFdlYkNvcmUgdG8gV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwMSw2ICs5MDEsMTEgQEAgLSAodm9pZClfY29tbW9u
SW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICAKICAgICAgICAgU2V0dGluZ3M6OnNl
dFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhzaG91bGRSZXNwZWN0
UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgICAgIGlmIChhcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCisgICAgICAgICAgICBTZXR0
aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKHRydWUpOworI2VuZGlmCisKICAgICAg
ICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230094</attachid>
            <date>2014-04-24 11:29:04 -0700</date>
            <delta_ts>2014-04-24 12:04:29 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch_7.txt</filename>
            <type>text/plain</type>
            <size>20517</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE0LTA0LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFnZSBB
dWRpb1Nlc3Npb24gY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
c2V0dGluZy4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmluaXRpYWxpemVBdWRpb1Nlc3Npb24pOiBEZWxldGVkLgorCisgICAgICAgICog
cGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAo
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbik6IE5ldy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb24pOiBEaXR0
by4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlvRGVzdGluYXRp
b25JT1MpOiBVc2UgYSBNZWRpYVNlc3Npb24gaW5zdGVhZCBvZiBpbmhlcml0aW5nCisgICAgICAg
ICAgICBmcm9tIEF1ZGlvTGlzdGVuZXIgYW5kIGNhbGxpbmcgdGhlIEF1ZGlvU2Vzc2lvbiBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6On5BdWRpb0Rlc3Rp
bmF0aW9uSU9TKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9T
OjpzdGFydCk6IE5vdGlmeSBzZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbklPUzo6c3RvcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bklPUzo6YmVnYW5BdWRpb0ludGVycnVwdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjplbmRlZEF1ZGlvSW50ZXJydXB0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6bWVkaWFUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbklPUzo6ZGlkUmVjZWl2
ZVJlbW90ZUNvbnRyb2xDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25JT1M6OmlzUGxheWluZyk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y2F0ZWdvcnlOYW1lKTog
RGVidWctb25seSBsb2dnaW5nIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpzZXRDYXRlZ29yeSk6IERvbid0IHN0aWNrIHdpdGggIm1lZGlhIiBvbmNlIGl0IGlzIHNl
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6cmVzZXRSZXN0
cmljdGlvbnMpOiBTZXQgdXAgcmVzdHJpY3Rpb25zIGZvciBXZWJBdWRpby4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsYXlpbmdJbmZvKTogRG9u
J3Qgc2V0IGludmFsaWQgc3RhcnQgdGltZS4KKworICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21h
Yy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcDoKKyAgICAgICAgKE1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSk6IE1hbmFnZSBBdWRpb1Nlc3Npb24uYWN0aXZlIHdoZW4g
V2ViQXVkaW8gY2xpZW50cworICAgICAgICAgICAgY29tZSBhbmQgZ28uIE1hbmFnZSBBdWRpb1Nl
c3Npb24uY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgV2ViQXVkaW8gYW5kCisg
ICAgICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGNsaWVudHMuCisKIDIwMTQtMDQtMjMgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW01hYywgaU9TXSBTdG9w
IGJ1ZmZlcmluZyBtZWRpYSB3aGVuIG9uIGFuIGluYWN0aXZlIHRhYi4gCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2NDIsNiArMjY0Miw3IEBAIF9fWk43V2ViQ29yZThQ
b3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHQKIF9fWk43V2ViQ29yZThTVkdOYW1lczRpbml0RXYK
IF9fWk43V2ViQ29yZThTZXR0aW5nczEzZ0FWS2l0RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0
aW5nczIzc2V0TmV0d29ya0ludGVyZmFjZU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNv
cmU4U2V0dGluZ3MxOWdNYW5hZ2VBdWRpb1Nlc3Npb25FCiBfX1pON1dlYkNvcmU4U2V0dGluZ3Mz
MXNldEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGVFagogX19aTjdXZWJDb3JlOFNldHRpbmdz
MzRzZXROZXR3b3JrRGF0YVVzYWdlVHJhY2tpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczM4Z1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb25FCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYVNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDE2NzUwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDIxICs2OSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyKiByZXN0cmljdGlvbk5hbWUoSFRN
TE0KIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCkKLXsK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgc3RhdGljIGJvb2wgd2FzQXVkaW9TZXNzaW9uSW5pdGlh
bGl6ZWQ7Ci0gICAgaWYgKHdhc0F1ZGlvU2Vzc2lvbkluaXRpYWxpemVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB3YXNBdWRpb1Nlc3Npb25Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgaWYgKCFX
ZWJDb3JlOjphcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldENhdGVnb3J5KEF1ZGlvU2Vzc2lv
bjo6TWVkaWFQbGF5YmFjayk7Ci0jZW5kaWYKLX0KLQogc3RkOjp1bmlxdWVfcHRyPEhUTUxNZWRp
YVNlc3Npb24+IEhUTUxNZWRpYVNlc3Npb246OmNyZWF0ZShNZWRpYVNlc3Npb25DbGllbnQmIGNs
aWVudCkKIHsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIVE1MTWVkaWFTZXNzaW9uPihj
bGllbnQpOwpAQCAtOTMsNyArNzgsNiBAQCBIVE1MTWVkaWFTZXNzaW9uOjpIVE1MTWVkaWFTZXNz
aW9uKE1lZGlhCiAgICAgOiBNZWRpYVNlc3Npb24oY2xpZW50KQogICAgICwgbV9yZXN0cmljdGlv
bnMoTm9SZXN0cmljdGlvbnMpCiB7Ci0gICAgaW5pdGlhbGl6ZUF1ZGlvU2Vzc2lvbigpOwogfQog
CiB2b2lkIEhUTUxNZWRpYVNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAko
cmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsNyBAQCBib29sIFNldHRpbmdzOjpnTG93UG93ZXJW
aWRlb0F1ZGlvQnVmZmVyCiBib29sIFNldHRpbmdzOjpnTmV0d29ya0RhdGFVc2FnZVRyYWNraW5n
RW5hYmxlZCA9IGZhbHNlOwogYm9vbCBTZXR0aW5nczo6Z0FWS2l0RW5hYmxlZCA9IGZhbHNlOwog
Ym9vbCBTZXR0aW5nczo6Z1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24gPSBm
YWxzZTsKK2Jvb2wgU2V0dGluZ3M6OmdNYW5hZ2VBdWRpb1Nlc3Npb24gPSBmYWxzZTsKICNlbmRp
ZgogCiAvLyBOT1RFcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gMTY3NTAx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzAsNiArMjcwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0U2hvdWxkT3B0T3V0
T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbihib29sIGZsYWcpIHsgZ1Nob3VsZE9wdE91dE9mTmV0
d29ya1N0YXRlT2JzZXJ2YXRpb24gPSBmbGFnOyB9CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkT3B0
T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbigpIHsgcmV0dXJuIGdTaG91bGRPcHRPdXRPZk5l
dHdvcmtTdGF0ZU9ic2VydmF0aW9uOyB9CisKKyAgICBzdGF0aWMgdm9pZCBzZXRTaG91bGRNYW5h
Z2VBdWRpb1Nlc3Npb24oYm9vbCBmbGFnKSB7IGdNYW5hZ2VBdWRpb1Nlc3Npb24gPSBmbGFnOyB9
CisgICAgc3RhdGljIGJvb2wgc2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKCkgeyByZXR1cm4gZ01h
bmFnZUF1ZGlvU2Vzc2lvbjsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0zNTEsNiArMzU0LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBnTmV0d29ya0RhdGFVc2FnZVRyYWNraW5nRW5h
YmxlZDsKICAgICBzdGF0aWMgYm9vbCBnQVZLaXRFbmFibGVkOwogICAgIHN0YXRpYyBib29sIGdT
aG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uOworICAgIHN0YXRpYyBib29sIGdN
YW5hZ2VBdWRpb1Nlc3Npb247CiAjZW5kaWYKIAogICAgIHN0YXRpYyBkb3VibGUgZ0hpZGRlblBh
Z2VET01UaW1lckFsaWdubWVudEludGVydmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAkocmV2
aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMCwxNyArMTAwLDExIEBAIEF1ZGlv
RGVzdGluYXRpb25JT1M6OkF1ZGlvRGVzdGluYXRpb25JT1MKICAgICA6IG1fb3V0cHV0VW5pdCgw
KQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVz
OjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUsIGZhbHNlKSkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1w
bGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX2ludGVycnVwdGVkT25Q
bGF5YmFjayhmYWxzZSkKIHsKLSAgICBBdWRpb1Nlc3Npb24mIHNlc3Npb24gPSBBdWRpb1Nlc3Np
b246OnNoYXJlZFNlc3Npb24oKTsKLSAgICBzZXNzaW9uLmFkZExpc3RlbmVyKHRoaXMpOwotICAg
IHNlc3Npb24uc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpBbWJpZW50U291bmQpOwotCiAgICAg
YXVkaW9EZXN0aW5hdGlvbnMoKS5hZGQodGhpcyk7Ci0gICAgaWYgKGF1ZGlvRGVzdGluYXRpb25z
KCkuc2l6ZSgpID09IDEpCi0gICAgICAgIHNlc3Npb24uc2V0QWN0aXZlKDEpOwogCiAgICAgLy8g
T3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZhdWx0T3V0cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50
IGNvbXA7CkBAIC0xNDgsMTAgKzE0Miw3IEBAIEF1ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlvRGVz
dGluYXRpb25JT1MKIAogQXVkaW9EZXN0aW5hdGlvbklPUzo6fkF1ZGlvRGVzdGluYXRpb25JT1Mo
KQogewotICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnJlbW92ZUxpc3RlbmVyKHRo
aXMpOwogICAgIGF1ZGlvRGVzdGluYXRpb25zKCkucmVtb3ZlKHRoaXMpOwotICAgIGlmICghYXVk
aW9EZXN0aW5hdGlvbnMoKS5zaXplKCkpCi0gICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vz
c2lvbigpLnNldEFjdGl2ZSgwKTsKIAogICAgIGlmIChtX291dHB1dFVuaXQpCiAgICAgICAgIEF1
ZGlvQ29tcG9uZW50SW5zdGFuY2VEaXNwb3NlKG1fb3V0cHV0VW5pdCk7CkBAIC0xOTIsMzggKzE4
MywzMCBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OmNvbmZpZ3VyZSgpCiAKIHZvaWQgQXVk
aW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogewotICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlv
T3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CisgICAgTE9HKE1lZGlhLCAiQXVkaW9EZXN0
aW5hdGlvbklPUzo6c3RhcnQiKTsKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxs
QmVnaW5QbGF5YmFjaygpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIiAgcmV0dXJuaW5nIGJlY2F1
c2Ugb2YgaW50ZXJydXB0aW9uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBPU1N0
YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdGFydChtX291dHB1dFVuaXQpOwogICAgIGlm
ICghcmVzdWx0KQogICAgICAgICBtX2lzUGxheWluZyA9IHRydWU7CiB9CiAKIHZvaWQgQXVkaW9E
ZXN0aW5hdGlvbklPUzo6c3RvcCgpCiB7Ci0gICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PdXRw
dXRVbml0U3RvcChtX291dHB1dFVuaXQpOworICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRp
b25JT1M6OnN0b3AiKTsKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQ
bGF5YmFjaygpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2Yg
aW50ZXJydXB0aW9uIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBPU1N0YXR1cyBy
ZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1
bHQpCiAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CiB9CiAKLXZvaWQgQXVkaW9EZXN0aW5h
dGlvbklPUzo6YmVnYW5BdWRpb0ludGVycnVwdGlvbigpCi17Ci0gICAgaWYgKCFtX2lzUGxheWlu
ZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RvcCgpOwotICAgIG1faW50ZXJydXB0ZWRPblBs
YXliYWNrID0gdHJ1ZTsKLX0KLQotdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjplbmRlZEF1ZGlv
SW50ZXJydXB0aW9uKCkKLXsKLSAgICBpZiAoIW1faW50ZXJydXB0ZWRPblBsYXliYWNrKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX2ludGVycnVwdGVkT25QbGF5YmFjayA9IGZhbHNlOwotICAg
IHN0YXJ0KCk7Ci19Ci0KIC8vIFB1bGxzIG9uIG91ciBwcm92aWRlciB0byBnZXQgcmVuZGVyZWQg
YXVkaW8gc3RyZWFtLgogT1NTdGF0dXMgQXVkaW9EZXN0aW5hdGlvbklPUzo6cmVuZGVyKFVJbnQz
MiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmgJKHJldmlzaW9uIDE2NzUwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgog
I2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9u
LmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIApAQCAtNDAsMjEgKzQxLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4g
QXVkaW9EZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBBdWRpb1Vu
aXQKIAotY2xhc3MgQXVkaW9EZXN0aW5hdGlvbklPUyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9u
LCBwdWJsaWMgQXVkaW9TZXNzaW9uTGlzdGVuZXIgeworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbklP
UyBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwcml2YXRlIE1lZGlhU2Vzc2lvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2sm
LCBkb3VibGUgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbklPUygp
OwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsK
LSAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9Ci0KIHByaXZhdGU6
CiAgICAgdm9pZCBjb25maWd1cmUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnYW5BdWRpb0ludGVy
cnVwdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRlZEF1ZGlvSW50ZXJydXB0
aW9uKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBBdWRpb0Rlc3RpbmF0aW9uCisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlp
bmc7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3NhbXBsZVJhdGU7IH0KKworICAgIC8vIE1lZGlhU2Vzc2lvbkNsaWVudAorICAgIHZp
cnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4g
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygp
IG92ZXJyaWRlIHsgc3RvcCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkg
b3ZlcnJpZGUgeyBzdGFydCgpOyB9CiAKICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFj
awogICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVzTnVt
YmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKQEAg
LTY3LDEwICs3MywxMCBAQCBwcml2YXRlOgogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CiAg
ICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxBdWRpb0J1cz4gbV9y
ZW5kZXJCdXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Np
b247CiAKICAgICBkb3VibGUgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0g
ICAgYm9vbCBtX2ludGVycnVwdGVkT25QbGF5YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Np
b25JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbQkocmV2aXNpb24gMTY3NTAxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TKQogCisj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWQXVkaW9TZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAg
LTEwNCw2ICsxMDUsMjYgQEAgLSAodm9pZClpbnRlcnJ1cHRpb246KE5TTm90aWZpY2F0aW9uICop
bgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKworI2lmICFMT0dfRElTQUJMRUQKK3N0YXRpYyBj
b25zdCBjaGFyKiBjYXRlZ29yeU5hbWUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdv
cnkpCit7CisjZGVmaW5lIENBU0UoY2F0ZWdvcnkpIGNhc2UgQXVkaW9TZXNzaW9uOjpjYXRlZ29y
eTogcmV0dXJuICNjYXRlZ29yeQorICAgIHN3aXRjaCAoY2F0ZWdvcnkpIHsKKyAgICAgICAgQ0FT
RShOb25lKTsKKyAgICAgICAgQ0FTRShBbWJpZW50U291bmQpOworICAgICAgICBDQVNFKFNvbG9B
bWJpZW50U291bmQpOworICAgICAgICBDQVNFKE1lZGlhUGxheWJhY2spOworICAgICAgICBDQVNF
KFJlY29yZEF1ZGlvKTsKKyAgICAgICAgQ0FTRShQbGF5QW5kUmVjb3JkKTsKKyAgICAgICAgQ0FT
RShBdWRpb1Byb2Nlc3NpbmcpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gIiI7Cit9CisjZW5kaWYKKwogY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZSB7CiBwdWJsaWM6CiAgICAgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qKTsKQEAg
LTEyOCwxOCArMTQ5LDE0IEBAIEF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpCiAKIHZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnkpCiB7Ci0g
ICAgaWYgKGNhdGVnb3J5T3ZlcnJpZGUoKSAmJiBjYXRlZ29yeU92ZXJyaWRlKCkgIT0gbmV3Q2F0
ZWdvcnkpCi0gICAgICAgIHJldHVybjsKKyAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNl
dENhdGVnb3J5KCkgLSBjYXRlZ29yeSA9ICVzIiwgY2F0ZWdvcnlOYW1lKG5ld0NhdGVnb3J5KSk7
CiAKLSAgICBpZiAoIWNhdGVnb3J5T3ZlcnJpZGUoKSkgewotICAgICAgICAvLyBJZiBhIHBhZ2Ug
cGxheXMgb25seSBXZWJBdWRpbyB3ZSBzZXQgdGhlIGF1ZGlvIGNhdGVnb3J5IHRvICJhbWJpZW50
IiBzbyBpdCBpcyBtdXRlZCBieSB0aGUgcmluZ2VyIHN3aXRjaC4KLSAgICAgICAgLy8gSG93ZXZl
ciwgYXVkaW8gZnJvbSBhbiBIVE1MNSBtZWRpYSBlbGVtZW50IG9yIGZyb20gYSBwbHVnLWluIHNo
b3VsZCBhbHdheXMgcGxheSBhcyAibWVkaWEiIHNvIGRvbid0IGNoYW5nZSB0aGUKLSAgICAgICAg
Ly8gY2F0ZWdvcnkgb25jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNldCB0byBtZWRpYS4KLSAgICAg
ICAgaWYgKG5ld0NhdGVnb3J5ID09IEF1ZGlvU2Vzc2lvbjo6QW1iaWVudFNvdW5kICYmIGNhdGVn
b3J5KCkgPT0gQXVkaW9TZXNzaW9uOjpNZWRpYVBsYXliYWNrKQotICAgICAgICAgICAgcmV0dXJu
OworICAgIGlmIChjYXRlZ29yeU92ZXJyaWRlKCkgJiYgY2F0ZWdvcnlPdmVycmlkZSgpICE9IG5l
d0NhdGVnb3J5KSB7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdv
cnkoKSAtIG92ZXJyaWRlIHNldCwgTk9UIGNoYW5naW5nIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBOU1N0cmluZyogY2F0ZWdvcnlTdHJpbmc7CisgICAgTlNTdHJpbmcgKmNhdGVn
b3J5U3RyaW5nOwogICAgIHN3aXRjaCAobmV3Q2F0ZWdvcnkpIHsKICAgICBjYXNlIEFtYmllbnRT
b3VuZDoKICAgICAgICAgY2F0ZWdvcnlTdHJpbmcgPSBBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1i
aWVudDsKQEAgLTE3MSw3ICsxODgsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnko
Q2F0ZWdvcnlUCiAKIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0
ZWdvcnkoKSBjb25zdAogewotICAgIE5TU3RyaW5nKiBjYXRlZ29yeVN0cmluZyA9IFtbQVZBdWRp
b1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIGNhdGVnb3J5XTsKKyAgICBOU1N0cmluZyAqY2F0ZWdv
cnlTdHJpbmcgPSBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBjYXRlZ29yeV07CiAg
ICAgaWYgKFtjYXRlZ29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJp
ZW50XSkKICAgICAgICAgcmV0dXJuIEFtYmllbnRTb3VuZDsKICAgICBpZiAoW2NhdGVnb3J5U3Ry
aW5nIGlzRXF1YWw6QVZBdWRpb1Nlc3Npb25DYXRlZ29yeVNvbG9BbWJpZW50XSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLm1tCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTM2LDggKzEzNiwxNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnJlc2V0
UmVzdHJpCiAgICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpWaWRlbywgQ29uY3VycmVu
dFBsYXliYWNrTm90UGVybWl0dGVkKTsKICAgICBhZGRSZXN0cmljdGlvbihNZWRpYVNlc3Npb246
OlZpZGVvLCBCYWNrZ3JvdW5kUGxheWJhY2tOb3RQZXJtaXR0ZWQpOwogCisgICAgcmVtb3ZlUmVz
dHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpBdWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0
dGVkKTsKKyAgICByZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OkF1ZGlvLCBCYWNrZ3Jv
dW5kUGxheWJhY2tOb3RQZXJtaXR0ZWQpOworCisgICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFT
ZXNzaW9uOjpXZWJBdWRpbywgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKTsKKyAgICBy
ZW1vdmVSZXN0cmljdGlvbihNZWRpYVNlc3Npb246OldlYkF1ZGlvLCBCYWNrZ3JvdW5kUGxheWJh
Y2tOb3RQZXJtaXR0ZWQpOworCiAgICAgcmVtb3ZlUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpB
dWRpbywgTWV0YWRhdGFQcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKICAgICByZW1vdmVSZXN0cmlj
dGlvbihNZWRpYVNlc3Npb246OlZpZGVvLCBNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQp
OworCiAgICAgYWRkUmVzdHJpY3Rpb24oTWVkaWFTZXNzaW9uOjpBdWRpbywgQXV0b1ByZWxvYWRp
bmdOb3RQZXJtaXR0ZWQpOwogICAgIGFkZFJlc3RyaWN0aW9uKE1lZGlhU2Vzc2lvbjo6VmlkZW8s
IEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkKTsKIH0KQEAgLTE5Myw3ICsyMDAsNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnVwZGF0ZU5vd1BsCiAgICAgICAgIFtpbmZvIHNldFZh
bHVlOkAoZHVyYXRpb24pIGZvcktleTpNUE1lZGlhSXRlbVByb3BlcnR5UGxheWJhY2tEdXJhdGlv
bl07CiAgICAgCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gY3VycmVudFNlc3Npb24tPmN1cnJl
bnRUaW1lKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUoY3VycmVudFRpbWUpKQorICAgIGlmIChz
dGQ6OmlzZmluaXRlKGN1cnJlbnRUaW1lKSAmJiBjdXJyZW50VGltZSAhPSBNZWRpYVBsYXllcjo6
aW52YWxpZFRpbWUoKSkKICAgICAgICAgW2luZm8gc2V0VmFsdWU6QChjdXJyZW50VGltZSkgZm9y
S2V5Ok1QTm93UGxheWluZ0luZm9Qcm9wZXJ0eUVsYXBzZWRQbGF5YmFja1RpbWVdOwogICAgIAog
ICAgIFtpbmZvIHNldFZhbHVlOihjdXJyZW50U2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Np
b246OlBsYXlpbmcgPyBAWUVTIDogQE5PKSBmb3JLZXk6TVBOb3dQbGF5aW5nSW5mb1Byb3BlcnR5
UGxheWJhY2tSYXRlXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9N
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAJKHJldmlzaW9uIDE2
NzUwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwxMSArNDYsMjcgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjp1cGRhdGVTZXNzaW9uUwogCiAgICAgaWYgKGhhcyhNZWRpYVNlc3Npb246
OldlYkF1ZGlvKSkKICAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkuc2V0UHJl
ZmVycmVkQnVmZmVyU2l6ZShrV2ViQXVkaW9CdWZmZXJTaXplKTsKLSAgICAvLyBGSVhNRTogPGh0
dHA6Ly93ZWJraXQub3JnL2IvMTE2NzI1PiBGaWd1cmUgb3V0IHdoeSBlbmFibGluZyB0aGUgY29k
ZSBiZWxvdwotICAgIC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjgu
CiAjaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKLSAgICBlbHNlIGlmICgoaGFzKE1lZGlhU2Vzc2lvbjo6VmlkZW8pIHx8IGhhcyhNZWRp
YVNlc3Npb246OkF1ZGlvKSkgJiYgU2V0dGluZ3M6Omxvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNp
emVFbmFibGVkKCkpCisgICAgZWxzZSBpZiAoKGhhcyhNZWRpYVNlc3Npb246OlZpZGVvKSB8fCBo
YXMoTWVkaWFTZXNzaW9uOjpBdWRpbykpICYmIFNldHRpbmdzOjpsb3dQb3dlclZpZGVvQXVkaW9C
dWZmZXJTaXplRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMTY3MjU+IEZpZ3VyZSBvdXQgd2h5IGVuYWJsaW5nIHRoZSBjb2RlIGJlbG93CisgICAg
ICAgIC8vIGNhdXNlcyBtZWRpYSBMYXlvdXRUZXN0cyB0byBmYWlsIG9uIDEwLjguCiAgICAgICAg
IEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldFByZWZlcnJlZEJ1ZmZlclNpemUoa0xv
d1Bvd2VyVmlkZW9CdWZmZXJTaXplKTsKKyAgICB9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoaGFzKE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW8pKQorICAgICAgICBBdWRpb1Nl
c3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUodHJ1ZSk7CisgICAgZWxzZQorICAgICAg
ICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUoZmFsc2UpOworCisgICAg
aWYgKCFTZXR0aW5nczo6c2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChoYXMoTWVkaWFTZXNzaW9uOjpWaWRlbykgfHwgaGFzKE1lZGlhU2Vzc2lv
bjo6QXVkaW8pKQorICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRDYXRl
Z29yeShBdWRpb1Nlc3Npb246Ok1lZGlhUGxheWJhY2spOworICAgIGVsc2UgaWYgKGhhcyhNZWRp
YVNlc3Npb246OldlYkF1ZGlvKSkKKyAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkuc2V0Q2F0ZWdvcnkoQXVkaW9TZXNzaW9uOjpBbWJpZW50U291bmQpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTA0LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFnZSBB
dWRpb1Nlc3Npb24gY2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6IFRlbGwgV2ViQ29y
ZSB0byBtYW5hZ2UgdGhlIEF1ZGlvU2Vzc2lvbi4KKwogMjAxNC0wNC0yMyAgWW9uZ2p1biBaaGFu
ZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgZW5jb2Rpbmcv
ZGVjb2RpbmcgTlNVSW50ZWdlciBhcmd1bWVudHMgaW4gV0tSZW1vdGVPYmplY3RDb2Rlci4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDE2NzUwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDYgKzMwOSwxMCBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgLy8gNG1zIHNob3VsZCBiZSBhZG9wdGVk
IHByb2plY3Qtd2lkZSBub3csIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MTIxNAogICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAw
NCk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1
ZGlvU2Vzc2lvbih0cnVlKTsKKyNlbmRpZgorCiAgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNs
aWVudHM7CiAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVu
dCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE2NzczNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA0LTIzICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIE1hbmFnZSBBdWRpb1Nlc3Npb24g
Y2F0ZWdvcnkgYWNjb3JkaW5nIHRvIG1lZGlhIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjA5NgorCisgICAgICAgIFJldmlld2VkIGJ5IEpl
ciBOb2JsZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKTogVGVs
bCAKKyAgICAgICAgICAgIFdlYkNvcmUgdG8gbWFuYWdlIHRoZSBBdWRpb1Nlc3Npb24gd2hlbiBy
dW5uaW5nIGluIE1vYmlsZVNhZmFyaS4KKwogMjAxNC0wNC0yMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IG1pZ3JhdGUgdGhlIFdLVmlldy5o
IGhlYWRlciBmcm9tIFdlYkNvcmUgdG8gV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNjc1MDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTkwMSw2ICs5MDEsMTEgQEAgLSAodm9p
ZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICAKICAgICAgICAgU2V0
dGluZ3M6OnNldFNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycyhzaG91
bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSk7CiAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgICAgIGlmIChhcHBsaWNhdGlvbklzTW9iaWxlU2FmYXJpKCkpCisgICAgICAg
ICAgICBTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uKHRydWUpOworI2VuZGlm
CisKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>