<?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>133747</bug_id>
          
          <creation_ts>2014-06-11 10:35:57 -0700</creation_ts>
          <short_desc>[EME][Mac] Propagate errors from AVSampleBufferDisplayLayer through to MSE</short_desc>
          <delta_ts>2014-06-16 10:24:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1014797</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-06-11 10:35:57 -0700</bug_when>
    <thetext>[EME][Mac] Propagate errors from AVSampleBufferDisplayLayer through to MSE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014845</commentid>
    <comment_count>1</comment_count>
      <attachid>232885</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-06-11 12:19:30 -0700</bug_when>
    <thetext>Created attachment 232885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014853</commentid>
    <comment_count>2</comment_count>
      <attachid>232885</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-06-11 12:38:05 -0700</bug_when>
    <thetext>Comment on attachment 232885
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:68
&gt; +{
&gt; +    m_parent-&gt;unregisterForErrorNotifications(this);
&gt;  }

Is it worth NULLing m_client here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014891</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-06-11 13:52:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 232885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=232885&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:68
&gt; &gt; +{
&gt; &gt; +    m_parent-&gt;unregisterForErrorNotifications(this);
&gt; &gt;  }
&gt; 
&gt; Is it worth NULLing m_client here?

Probably not, since the object itself is about to get destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014902</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-06-11 14:02:55 -0700</bug_when>
    <thetext>Committed r169830: &lt;http://trac.webkit.org/changeset/169830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1015886</commentid>
    <comment_count>5</comment_count>
      <attachid>232885</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-06-16 10:24:41 -0700</bug_when>
    <thetext>Comment on attachment 232885
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:48
&gt; +class MediaKeySession final : public RefCounted&lt;MediaKeySession&gt;, public EventTargetWithInlineData, public ActiveDOMObject, public CDMSessionClient {

Why public instead of private inheritance?

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeySession.h:90
&gt; +    virtual void sendMessage(Uint8Array*, String destinationURL);
&gt; +    virtual void sendError(MediaKeyErrorCode, unsigned long systemCode);

Why protected instead of private? Why not marked override?

&gt; Source/WebCore/platform/graphics/SourceBufferPrivateClient.h:87
&gt; +    virtual void sourceBufferPrivateDidReceiveRenderingError(SourceBufferPrivate*, int errocCode) = 0;

Typo here: &quot;errocCode&quot;.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:38
&gt; +class CDMSessionMediaSourceAVFObjC : public CDMSession, public SourceBufferPrivateAVFObjCErrorClient {

Why public instead of private inheritance?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:828
&gt; +    int errorCode = [[[error userInfo] valueForKey:@&quot;OSStatus&quot;] intValue];

Seems like this should be inside the &quot;if (m_client)&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232885</attachid>
            <date>2014-06-11 12:19:30 -0700</date>
            <delta_ts>2014-06-16 10:24:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133747-20140611121905.patch</filename>
            <type>text/plain</type>
            <size>26121</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFmZjFmNThhMDI4Mzll
Y2RkYjk0OGMxOGQ5OGVlMjIzMjRkNDQzYi4uMmFjYzQ2ODE5ZDBhM2I3ZTFjNzFiNjU5M2E5ZmJj
NDk5OTE0ODdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE0LTA2LTExICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtFTUVdW01hY10gUHJvcGFn
YXRlIGVycm9ycyBmcm9tIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHRocm91Z2ggdG8gTVNF
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM3NDcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYnN0cmFj
dCBvdXQgdGhlIGRlbGl2ZXJ5IG9mIGVycm9ycyBpbiBNZWRpYUtleVNlc3Npb24gaW50byBpdHMg
b3duIG1ldGhvZCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCBieSAKKyAgICAgICAgQ0RNU2Vzc2lv
biBvYmplY3RzIHRocm91Z2ggdGhlIENETVNlc3Npb25DbGllbnQgaW50ZXJmYWNlOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9DRE1TZXNzaW9uLmg6CisKKyAgICAgICAgQWRkIGFuIE9iamVjdGl2ZS1DIG9iamVjdCB3
aGljaCBjYW4gbGlzdGVuIGZvciBlcnJvciBLVk8gbm90aWZpY2F0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJv
ckNsaWVudDo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIg
aW5pdFdpdGhQYXJlbnQ6V2ViQ29yZTo6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVy
RXJyb3JMaXN0ZW5lciBkZWFsbG9jXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyRXJy
b3JMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyRXJy
b3JMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyOl0pOgorICAgICAgICAoLVtXZWJBVlNhbXBs
ZUJ1ZmZlckVycm9yTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyOl0pOgorICAgICAgICAoLVtX
ZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjpdKToK
KyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIHN0b3BPYnNlcnZpbmdS
ZW5kZXJlcjpdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6cmVnaXN0ZXJGb3JFcnJvck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnVucmVnaXN0ZXJGb3JFcnJvck5v
dGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmxheWVyRGlkUmVjZWl2ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpyZW5kZXJlckRpZFJlY2VpdmVFcnJvcik6CisKKyAgICAgICAgUmVn
aXN0ZXIgZm9yIHRoZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp+Q0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyk6IE1vdmVkIHRvIHNvdXJjZSBmaWxlLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKTogUmVnaXN0ZXIgZm9yIGVycm9y
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VB
VkZPYmpDOjp+Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyk6IFVucmVnaXN0ZXIgZm9yIGVy
cm9yIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpsYXllckRpZFJlY2VpdmVFcnJvcik6IFBhc3MgdGhyb3VnaCB0byBDRE1TZXNz
aW9uQ2xpZW50LgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qzo6cmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IpOiBEaXR0by4KKwogMjAxNC0wNi0wOSAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBIYW5nIHdoZW4gcGFp
bnRpbmcgbWVkaWEgYmVmb3JlIGNvbXBvc2l0aW5nIG1vZGUgYWN0aXZhdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHAKaW5kZXggNThjYmFkNzNiYmNlZGNmYjFhNzI0NzEwZDVmMWY1YWQ4OGNjMmUxNy4uZjA1
MjliZjM3ODE2ZjI1YjQyOTEyNzZlYTVlYWZjZjA0NjBlOGE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cApAQCAtMTEyLDE2ICsxMTIsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRp
bWVyRmlyZWQoVGltZXI8TWVkaWFLZXlTZXNzaW9uPiYpCiAgICAgICAgICAgICAvLyAzLjEuIENy
ZWF0ZSBhIG5ldyBNZWRpYUtleUVycm9yIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgYXR0cmli
dXRlczoKICAgICAgICAgICAgIC8vICAgICAgY29kZSA9IHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtl
eUVycm9yIGNvZGUKICAgICAgICAgICAgIC8vICAgICAgc3lzdGVtQ29kZSA9IGEgS2V5IFN5c3Rl
bS1zcGVjaWZpYyB2YWx1ZSwgaWYgcHJvdmlkZWQsIGFuZCAwIG90aGVyd2lzZQotICAgICAgICAg
ICAgUmVmUHRyPE1lZGlhS2V5RXJyb3I+IGVycm9yID0gTWVkaWFLZXlFcnJvcjo6Y3JlYXRlKGVy
cm9yQ29kZSwgc3lzdGVtQ29kZSkuZ2V0KCk7Ci0KICAgICAgICAgICAgIC8vIDMuMi4gU2V0IHRo
ZSBNZWRpYUtleVNlc3Npb24gb2JqZWN0J3MgZXJyb3IgYXR0cmlidXRlIHRvIHRoZSBlcnJvciBv
YmplY3QgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC4KLSAgICAgICAgICAgIHNldEVycm9y
KGVycm9yLmdldCgpKTsKLQogICAgICAgICAgICAgLy8gMy4zLiBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXllcnJvciBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9i
amVjdC4KLSAgICAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOwotICAgICAgICAg
ICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVl
LmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOwotCisgICAgICAgICAgICBzZW5kRXJyb3Io
ZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKICAgICAgICAgICAgIC8vIDMuNC4gQWJvcnQgdGhlIHRh
c2suCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTMwLDE0ICsxMjMsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6a2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8TWVkaWFL
ZXlTZXNzaW9uPiYpCiAgICAgICAgIC8vICAgIFRoZSBldmVudCBpcyBvZiB0eXBlIE1lZGlhS2V5
TWVzc2FnZUV2ZW50IGFuZCBoYXM6CiAgICAgICAgIC8vICAgIG1lc3NhZ2UgPSBrZXkgcmVxdWVz
dAogICAgICAgICAvLyAgICBkZXN0aW5hdGlvblVSTCA9IGRlc3RpbmF0aW9uVVJMCi0gICAgICAg
IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdCBpbml0OwotICAgICAgICBpbml0LmJ1YmJsZXMgPSBm
YWxzZTsKLSAgICAgICAgaW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7Ci0gICAgICAgIGluaXQubWVz
c2FnZSA9IGtleVJlcXVlc3Q7Ci0gICAgICAgIGluaXQuZGVzdGluYXRpb25VUkwgPSBkZXN0aW5h
dGlvblVSTDsKLSAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1l
ZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VF
dmVudCwgaW5pdCk7Ci0gICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgICAgIG1f
YXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChldmVudC5yZWxlYXNlKCkpOworICAgICAgICBz
ZW5kTWVzc2FnZShrZXlSZXF1ZXN0LmdldCgpLCBkZXN0aW5hdGlvblVSTCk7CiAgICAgfQogfQog
CkBAIC0xODQsMTUgKzE3MCw4IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZp
cmVkKFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4mKQogICAgICAgICAvLyAgICAgIFRoZSBldmVudCBp
cyBvZiB0eXBlIE1lZGlhS2V5TWVzc2FnZUV2ZW50IGFuZCBoYXM6CiAgICAgICAgIC8vICAgICAg
bWVzc2FnZSA9IG5leHQgbWVzc2FnZQogICAgICAgICAvLyAgICAgIGRlc3RpbmF0aW9uVVJMID0g
bnVsbAotICAgICAgICBpZiAobmV4dE1lc3NhZ2UpIHsKLSAgICAgICAgICAgIE1lZGlhS2V5TWVz
c2FnZUV2ZW50SW5pdCBpbml0OwotICAgICAgICAgICAgaW5pdC5idWJibGVzID0gZmFsc2U7Ci0g
ICAgICAgICAgICBpbml0LmNhbmNlbGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGluaXQubWVz
c2FnZSA9IG5leHRNZXNzYWdlOwotICAgICAgICAgICAgUmVmUHRyPE1lZGlhS2V5TWVzc2FnZUV2
ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndl
YmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7Ci0gICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50
LnJlbGVhc2UoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG5leHRNZXNzYWdlKQorICAgICAg
ICAgICAgc2VuZE1lc3NhZ2UobmV4dE1lc3NhZ2UuZ2V0KCksIGVtcHR5U3RyaW5nKCkpOwogCiAg
ICAgICAgIC8vIDIuNy4gSWYgZGlkIHN0b3JlIGtleSBpcyB0cnVlLCBxdWV1ZSBhIHRhc2sgdG8g
ZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBrZXlhZGRlZCBhdCB0aGUgTWVkaWFLZXlTZXNzaW9u
IG9iamVjdC4KICAgICAgICAgaWYgKGRpZFN0b3JlS2V5KSB7CkBAIC0yMDYsMjIgKzE4NSwzNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6YWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNl
c3Npb24+JikKICAgICAgICAgICAgIC8vIDIuOC4xLiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlFcnJv
ciBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAgICAgICAgICAgICAvLyAg
ICAgICAgY29kZSA9IHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtleUVycm9yIGNvZGUKICAgICAgICAg
ICAgIC8vICAgICAgICBzeXN0ZW1Db2RlID0gYSBLZXkgU3lzdGVtLXNwZWNpZmljIHZhbHVlLCBp
ZiBwcm92aWRlZCwgYW5kIDAgb3RoZXJ3aXNlCi0gICAgICAgICAgICBSZWZQdHI8TWVkaWFLZXlF
cnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2Rl
KS5nZXQoKTsKLQogICAgICAgICAgICAgLy8gMi44LjIuIFNldCB0aGUgTWVkaWFLZXlTZXNzaW9u
IG9iamVjdCdzIGVycm9yIGF0dHJpYnV0ZSB0byB0aGUgZXJyb3Igb2JqZWN0IGNyZWF0ZWQgaW4g
dGhlIHByZXZpb3VzIHN0ZXAuCi0gICAgICAgICAgICBzZXRFcnJvcihlcnJvci5nZXQoKSk7Ci0K
ICAgICAgICAgICAgIC8vIDIuOC4zLiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVu
dCBuYW1lZCBrZXllcnJvciBhdCB0aGUgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KLSAgICAgICAg
ICAgIFJlZlB0cjxFdmVudD4ga2V5ZXJyb3JFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLndlYmtpdGtleWVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICBrZXll
cnJvckV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOwotICAgICAgICAgICAgCisg
ICAgICAgICAgICBzZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKICAgICAgICAgICAg
IC8vIDIuOC40LiBBYm9ydCB0aGUgdGFzay4KICAgICAgICAgICAgIC8vIE5PVEU6IG5vLW9wCiAg
ICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShV
aW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpCit7CisgICAgTWVkaWFL
ZXlNZXNzYWdlRXZlbnRJbml0IGluaXQ7CisgICAgaW5pdC5idWJibGVzID0gZmFsc2U7CisgICAg
aW5pdC5jYW5jZWxhYmxlID0gZmFsc2U7CisgICAgaW5pdC5tZXNzYWdlID0gbWVzc2FnZTsKKyAg
ICBpbml0LmRlc3RpbmF0aW9uVVJMID0gZGVzdGluYXRpb25VUkw7CisgICAgUmVmUHRyPE1lZGlh
S2V5TWVzc2FnZUV2ZW50PiBldmVudCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLndlYmtpdGtleW1lc3NhZ2VFdmVudCwgaW5pdCk7CisgICAgZXZlbnQtPnNldFRh
cmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoZXZlbnQucmVs
ZWFzZSgpKTsKK30KKwordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRFcnJvcihDRE1TZXNzaW9u
Q2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVt
Q29kZSkKK3sKKyAgICBSZWZQdHI8TWVkaWFLZXlFcnJvcj4gZXJyb3IgPSBNZWRpYUtleUVycm9y
OjpjcmVhdGUoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKS5nZXQoKTsKKyAgICBzZXRFcnJvcihlcnJv
ci5nZXQoKSk7CisKKyAgICBSZWZQdHI8RXZlbnQ+IGtleWVycm9yRXZlbnQgPSBFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBmYWxzZSwgZmFsc2UpOworICAg
IGtleWVycm9yRXZlbnQtPnNldFRhcmdldCh0aGlzKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoa2V5ZXJyb3JFdmVudC5yZWxlYXNlKCkpOworfQorCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmgKaW5kZXggN2RkYzA4MGU4Mzk5MDdjZjExYTAyMTRmNDYyNjNjYjk2M2Q1YWE5
MS4uYjVmNDE0NmVmZThhM2E4MDI2Y2Q4ZTdmMjAxMzk1MmUzYjk3OWJjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNETVNlc3Npb24uaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgpAQCAtNDMsOSArNDQsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBD
RE1TZXNzaW9uOwogCi1jbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENETVNlc3Npb25DbGll
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhS2V5U2Vzc2lvbj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYUtleXMqLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSk7CiAgICAgfk1lZGlhS2V5U2Vzc2lvbigpOwpAQCAtODUsNiArODUsMTAgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQga2V5UmVxdWVzdFRpbWVyRmlyZWQoVGltZXI8TWVkaWFLZXlTZXNz
aW9uPiYpOwogICAgIHZvaWQgYWRkS2V5VGltZXJGaXJlZChUaW1lcjxNZWRpYUtleVNlc3Npb24+
Jik7CiAKKyAgICAvLyBDRE1TZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNz
YWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25VUkwpOworICAgIHZpcnR1YWwgdm9p
ZCBzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcgc3lzdGVtQ29kZSk7
CisKICAgICBNZWRpYUtleXMqIG1fa2V5czsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAg
U3RyaW5nIG1fc2Vzc2lvbklkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDU0ZTNhZTQ1M2YyMzIyMjI3YWQwNzQ5ZmMy
OGU4Y2JjYzZlOTVhODUuLjAwZDZkNmExMzdhOGEyZTYyMjY2NGY2MDNmOGIyOTlhNjQxYzY0MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTUzNSw2ICs1MzUsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgQXBwZW4KICAg
ICByZXBvcnRFeHRyYU1lbW9yeUNvc3QoKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoU291cmNlQnVmZmVyUHJpdmF0
ZSosIGludCkKK3sKKyAgICBtX3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoZGVjb2RlRXJy
b3IoKSwgSWdub3JhYmxlRXhjZXB0aW9uQ29kZSgpKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXI6
OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kKQogewogICAgIC8vIDMuNS45IENvZGVkIEZyYW1lIFJlbW92YWwgQWxnb3JpdGhtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApp
bmRleCA4ODg4MWRjZjY3NDg3MTM5ODdlZDc1ODJmZjg2OGVkMzRmNzA1ZTQ4Li5mZjljMTBkZWU3
NjMwMWU5YzIwMWVlOWNjYTJkYTMyY2RjN2NiMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTExOSw2ICsxMTksNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU2Vla1RvVGltZShT
b3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgdmlydHVhbCBNZWRp
YVRpbWUgc291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShTb3VyY2VC
dWZmZXJQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2
ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAgICAgdmly
dHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQ
cml2YXRlKiwgQXBwZW5kUmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihTb3VyY2VCdWZmZXJQcml2YXRl
KiwgaW50IGVycm9yQ29kZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1T
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DRE1TZXNzaW9uLmgK
aW5kZXggMDZmNjc0M2EwMTUzY2M3ZTJmNDQ2ZmE5YzIxNWU1ZTdlNDE0YTI5My4uZmJiNDMxNzg2
YmM0Nzg2MzJhNzFiNDE5NmExY2E2ODRiMDRhZmRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NETVNlc3Npb24uaApAQCAtMzksNiArMzksMTcgQEAgY2xhc3MgQ0RN
U2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkNsaWVudCgp
IHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBk
ZXN0aW5hdGlvblVSTCkgPSAwOworCisgICAgZW51bSB7CisgICAgICAgIE1lZGlhS2V5RXJyb3JV
bmtub3duID0gMSwKKyAgICAgICAgTWVkaWFLZXlFcnJvckNsaWVudCwKKyAgICAgICAgTWVkaWFL
ZXlFcnJvclNlcnZpY2UsCisgICAgICAgIE1lZGlhS2V5RXJyb3JPdXRwdXQsCisgICAgICAgIE1l
ZGlhS2V5RXJyb3JIYXJkd2FyZUNoYW5nZSwKKyAgICAgICAgTWVkaWFLZXlFcnJvckRvbWFpbiwK
KyAgICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgTWVkaWFLZXlFcnJvckNvZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgbG9u
ZyBzeXN0ZW1Db2RlKSA9IDA7CiB9OwogCiBjbGFzcyBDRE1TZXNzaW9uIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQuaAppbmRleCA4N2FiMGYwMzI0MDA0YzkwMGE3NjU3MWExZjcyOWUzMjc4ZjY2MTVi
Li5jMzIzMDdkMDE1NTM4Zjk4MDM4M2IxNTRkMmFjMGU0MDYxN2NkOGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUGFyc2luZ0Zh
aWxlZCwKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIEFwcGVuZFJlc3VsdCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKFNv
dXJjZUJ1ZmZlclByaXZhdGUqLCBpbnQgZXJyb2NDb2RlKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgK
aW5kZXggMjVlNmZjODY1ZDc3MWM3ZTZkNDMzYTljYzU1NGRjMjMyOTQ5MDdlOC4uYjYyZGEyMTdj
NGEzMjk3NjIzMzU4NWNlMDYzZWVkNjU2NmYyZjcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDX2gKIAogI2luY2x1ZGUg
IkNETVNlc3Npb24uaCIKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CkBAIC0zNCwxMiArMzUsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKLQotY2xhc3MgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQyA6IHB1YmxpYyBDRE1TZXNzaW9uIHsKK2NsYXNzIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMgOiBwdWJsaWMgQ0RNU2Vzc2lvbiwgcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDRXJyb3JDbGllbnQgewogcHVibGljOgogICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqIHBhcmVudCk7Ci0gICAgdmlydHVhbCB+Q0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQygpIHsgfQorICAgIHZpcnR1YWwgfkNETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoQ0RNU2Vz
c2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2Vzc2lvbklkOyB9CkBAIC00Nyw4ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50
OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5ZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgKiwgTlNFcnJvciAqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyZXJEaWRSZWNlaXZlRXJy
b3IoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICosIE5TRXJyb3IgKik7CisKIHByb3RlY3Rl
ZDoKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9wYXJlbnQ7CisgICAgUmVmUHRy
PFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBtX3BhcmVudDsKICAgICBDRE1TZXNzaW9uQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBSZWZQdHI8VWludDhBcnJheT4gbV9pbml0RGF0YTsKICAgICBS
ZWZQdHI8VWludDhBcnJheT4gbV9jZXJ0aWZpY2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDU3MDJiZWY1
ZjYxMjhjNGFkZThmYzhkNzUwYTkzODY0NDg0NjNhYzEuLjcxMWFlZjEwMDI4YTY5ZTY3MWZjODEw
OGQ1MjRiYjRlY2Y3YTU1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTgsNiArNTgsMTMgQEAgQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhTb3Vy
Y2VCdWZmZXJQcml2YXRlQVYKICAgICAsIG1fY2xpZW50KG51bGxwdHIpCiAgICAgLCBtX3Nlc3Np
b25JZChjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiB7CisgICAgQVNTRVJUKHBhcmVudCk7
CisgICAgcGFyZW50LT5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyh0aGlzKTsKK30KKwor
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6fkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMoKQoreworICAgIG1fcGFyZW50LT51bnJlZ2lzdGVyRm9yRXJyb3JOb3RpZmljYXRpb25zKHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFy
cmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKQEAgLTEzNyw2ICsxNDQsMjIgQEAg
Ym9vbCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5
LCBSZWZQdHI8VWludDhBcnJheT4mIG4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpsYXllckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAqLCBOU0Vycm9yICplcnJvcikKK3sKKyAgICBpZiAoIW1fY2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+c2VuZEVycm9yKENETVNlc3Npb25D
bGllbnQ6Ok1lZGlhS2V5RXJyb3JEb21haW4sIFtlcnJvciBjb2RlXSk7Cit9CisKK3ZvaWQgQ0RN
U2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyICosIE5TRXJyb3IgKmVycm9yKQoreworICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5zZW5kRXJyb3IoQ0RNU2Vz
c2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckRvbWFpbiwgW2Vycm9yIGNvZGVdKTsKK30KKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCmluZGV4IDlhM2ZhZTZlZGYzOGI0NzJmNjE5YTNmNWQ2ZGFhOGRhOTM1N2Ez
N2MuLjdkMjQxY2MxNDdkZDgxZjU5ZTZkMTFmNDk2MmI5NGU3YjQ4N2UwZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAt
NDcsNiArNDcsOCBAQCBPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNFcnJvcjsKIE9C
SkNfQ0xBU1MgTlNPYmplY3Q7CiBPQkpDX0NMQVNTIFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3Rl
bmVyOworT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlckVycm9yTGlzdGVuZXI7CisKIHR5cGVk
ZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24gKkNNRm9ybWF0RGVzY3Jp
cHRpb25SZWY7CiAKQEAgLTU5LDYgKzYxLDEzIEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIAorY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakNFcnJvckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXllckRp
ZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqLCBOU0Vycm9yICopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1wbGVCdWZm
ZXJBdWRpb1JlbmRlcmVyICosIE5TRXJyb3IgKikgPSAwOworfTsKKwogY2xhc3MgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMgZmluYWwgOiBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gY3Jl
YXRlKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqKTsKQEAgLTg4LDYgKzk3LDExIEBAIHB1Ymxp
YzoKICAgICBpbnQgcHJvdGVjdGVkVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdGVjdGVk
VHJhY2tJRDsgfQogICAgIEFWU3RyZWFtRGF0YVBhcnNlciogcGFyc2VyKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgcmVnaXN0ZXJGb3JFcnJvck5vdGlmaWNh
dGlvbnMoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCopOworICAgIHZvaWQg
dW5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyhTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Q0Vycm9yQ2xpZW50Kik7CisgICAgdm9pZCBsYXllckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAqLCBOU0Vycm9yICopOworICAgIHZvaWQgcmVuZGVyZXJEaWRSZWNl
aXZlRXJyb3IoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICosIE5TRXJyb3IgKik7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyopOwogCkBAIC0xMTgsNiArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAg
IFZlY3RvcjxSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+PiBtX3Zp
ZGVvVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM+PiBtX2F1ZGlvVHJhY2tzOworICAgIFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQ0Vycm9yQ2xpZW50Kj4gbV9lcnJvckNsaWVudHM7CiAKICAgICBXZWFrUHRyRmFjdG9y
eTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4gbV93ZWFrRmFjdG9yeTsKIApAQCAtMTI2LDYg
KzE0MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyPiBtX2Rpc3BsYXlMYXllcjsKICAgICBzdGQ6Om1hcDxpbnQsIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+PiBtX2F1ZGlvUmVuZGVyZXJzOwogICAgIFJldGFpblB0cjxX
ZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8
V2ViQVZTYW1wbGVCdWZmZXJFcnJvckxpc3RlbmVyPiBtX2Vycm9yTGlzdGVuZXI7CiAKICAgICBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiBtX21lZGlhU291cmNlOwogICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA1ODY4MGZkOWQ1YmZlNGRkYTMw
Zjk0YWJkYzUxZjg4OTFmYjI2MjhlLi4xMmYxNDI5YzNiMzgxYzA5MTYzNjA3ZDZmZWYwMThhNjEx
Njg4ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtMjc5LDYgKzI3OSwxMTkgQEAgU09GVF9MSU5LKENvcmVNZWRp
YSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucywgQ0dT
aXplLAogfQogQGVuZAogCitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5l
ciA6IE5TT2JqZWN0CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqKXBhcmVudDsKKy0gKHZvaWQpaW52YWxpZGF0ZTsKKy0gKHZvaWQpYmVn
aW5PYnNlcnZpbmdMYXllcjooQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilsYXllcjsKKy0g
KHZvaWQpc3RvcE9ic2VydmluZ0xheWVyOihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqKWxh
eWVyOworLSAodm9pZCliZWdpbk9ic2VydmluZ1JlbmRlcmVyOihBVlNhbXBsZUJ1ZmZlckF1ZGlv
UmVuZGVyZXIgKilyZW5kZXJlcjsKKy0gKHZvaWQpc3RvcE9ic2VydmluZ1JlbmRlcmVyOihBVlNh
bXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKilyZW5kZXJlcjsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lciB7CisgICAgV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqIF9wYXJlbnQ7CisgICAgVmVjdG9yPFJldGFpblB0cjxBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4+IF9sYXllcnM7CisgICAgVmVjdG9yPFJldGFpblB0cjxB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+PiBfcmVuZGVyZXJzOworfQorCistIChpZClpbml0
V2l0aFBhcmVudDooV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKXBhcmVudAor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgW3NlbGYgaW52YWxpZGF0ZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBpZiAoIV9wYXJlbnQgJiYgIV9sYXllcnMu
c2l6ZSgpICYmICFfcmVuZGVyZXJzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChhdXRvJiBsYXllciA6IF9sYXllcnMpCisgICAgICAgIFtsYXllciByZW1vdmVPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJlcnJvciJdOworICAgIF9sYXllcnMuY2xlYXIoKTsKKworICAgIGZv
ciAoYXV0byYgcmVuZGVyZXIgOiBfcmVuZGVyZXJzKQorICAgICAgICBbcmVuZGVyZXIgcmVtb3Zl
T2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiZXJyb3IiXTsKKyAgICBfcmVuZGVyZXJzLmNsZWFy
KCk7CisKKyAgICBfcGFyZW50ID0gbnVsbHB0cjsKK30KKworLSAodm9pZCliZWdpbk9ic2Vydmlu
Z0xheWVyOihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopbGF5ZXIKK3sKKyAgICBBU1NFUlQo
X3BhcmVudCk7CisgICAgQVNTRVJUKCFfbGF5ZXJzLmNvbnRhaW5zKGxheWVyKSk7CisKKyAgICBf
bGF5ZXJzLmFwcGVuZChsYXllcik7CisgICAgW2xheWVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5
UGF0aDpAImVycm9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4
dDpudWxscHRyXTsKK30KKworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXI6KEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKilsYXllcgoreworICAgIEFTU0VSVChfcGFyZW50KTsKKyAgICBBU1NF
UlQoX2xheWVycy5jb250YWlucyhsYXllcikpOworCisgICAgW2xheWVyIHJlbW92ZU9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgX2xheWVycy5yZW1vdmUoX2xheWVycy5m
aW5kKGxheWVyKSk7Cit9CisKKy0gKHZvaWQpYmVnaW5PYnNlcnZpbmdSZW5kZXJlcjooQVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyKilyZW5kZXJlcgoreworICAgIEFTU0VSVChfcGFyZW50KTsK
KyAgICBBU1NFUlQoIV9yZW5kZXJlcnMuY29udGFpbnMocmVuZGVyZXIpKTsKKworICAgIF9yZW5k
ZXJlcnMuYXBwZW5kKHJlbmRlcmVyKTsKKyAgICBbcmVuZGVyZXIgYWRkT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAiZXJyb3IiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBj
b250ZXh0Om51bGxwdHJdOworfQorCistICh2b2lkKXN0b3BPYnNlcnZpbmdSZW5kZXJlcjooQVZT
YW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyKilyZW5kZXJlcgoreworICAgIEFTU0VSVChfcGFyZW50
KTsKKyAgICBBU1NFUlQoX3JlbmRlcmVycy5jb250YWlucyhyZW5kZXJlcikpOworCisgICAgW3Jl
bmRlcmVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgX3Jl
bmRlcmVycy5yZW1vdmUoX3JlbmRlcmVycy5maW5kKHJlbmRlcmVyKSk7Cit9CisKKy0gKHZvaWQp
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2JqZWN0OihpZClv
YmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNvbnRl
eHQKK3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgQVNTRVJUKF9wYXJlbnQpOwor
CisgICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyRXJyb3JMaXN0ZW5lcj4gc3Ryb25nU2Vs
ZiA9IHNlbGY7CisgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpnZXRBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckNsYXNzKCldKSB7CisgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmpl
Y3Q7CisgICAgICAgIFJldGFpblB0cjxOU0Vycm9yPiBlcnJvciA9IFtjaGFuZ2UgdmFsdWVGb3JL
ZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisKKyAgICAgICAgQVNTRVJUKF9sYXllcnMuY29u
dGFpbnMobGF5ZXIuZ2V0KCkpKTsKKyAgICAgICAgQVNTRVJUKFtrZXlQYXRoIGlzRXF1YWxUbzpA
ImVycm9yIl0pOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3N0cm9uZ1NlbGYsIGxheWVy
LCBlcnJvcl0geworICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVudC0+bGF5ZXJEaWRSZWNl
aXZlRXJyb3IobGF5ZXIuZ2V0KCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgfSk7CisgICAgfSBl
bHNlIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6Z2V0QVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRl
cmVyQ2xhc3MoKV0pIHsKKyAgICAgICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5k
ZXJlcj4gcmVuZGVyZXIgPSAoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyICopb2JqZWN0Owor
ICAgICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gZXJyb3IgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5T
S2V5VmFsdWVDaGFuZ2VOZXdLZXldOworCisgICAgICAgIEFTU0VSVChfcmVuZGVyZXJzLmNvbnRh
aW5zKHJlbmRlcmVyLmdldCgpKSk7CisgICAgICAgIEFTU0VSVChba2V5UGF0aCBpc0VxdWFsVG86
QCJlcnJvciJdKTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdTZWxmLCByZW5k
ZXJlciwgZXJyb3JdIHsKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPnJlbmRlcmVy
RGlkUmVjZWl2ZUVycm9yKHJlbmRlcmVyLmdldCgpLCBlcnJvci5nZXQoKSk7CisgICAgICAgIH0p
OworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KK0BlbmQKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjcHJhZ21hIG1hcmsgLQpAQCAtNDAwLDYgKzUxMyw3IEBA
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAgICAgOiBtX3dlYWtGYWN0b3J5KHRoaXMpCiAgICAg
LCBtX3BhcnNlcihhZG9wdE5TKFtbZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBhbGxvY10g
aW5pdF0pKQogICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2Vy
TGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDpjcmVh
dGVXZWFrUHRyKCldKSkKKyAgICAsIG1fZXJyb3JMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1w
bGVCdWZmZXJFcnJvckxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAg
LCBtX21lZGlhU291cmNlKHBhcmVudCkKICAgICAsIG1fY2xpZW50KDApCiAgICAgLCBtX3BhcnNp
bmdTdWNjZWVkZWQodHJ1ZSkKQEAgLTY1OSw2ICs3NzMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoVmlkZW9UcmFja1ByaXZhdGVNZWRp
YVNvdQogICAgICAgICAgICAgW21fZGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeewogICAgICAg
ICAgICAgICAgIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModHJhY2tJRCk7CiAgICAgICAg
ICAgICB9XTsKKyAgICAgICAgICAgIFttX2Vycm9yTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXll
cjptX2Rpc3BsYXlMYXllci5nZXQoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fbWVkaWFT
b3VyY2UpCiAgICAgICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+YWRkRGlzcGxheUxh
eWVyKG1fZGlzcGxheUxheWVyLmdldCgpKTsKQEAgLTY4Myw2ICs3OTgsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1By
aXZhdGVNZWRpYVNvdQogICAgICAgICAgICAgICAgIGRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBs
ZXModHJhY2tJRCk7CiAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgIG1fYXVkaW9SZW5kZXJl
cnNbdHJhY2tJRF0gPSByZW5kZXJlcjsKKyAgICAgICAgICAgIFttX2Vycm9yTGlzdGVuZXIgYmVn
aW5PYnNlcnZpbmdSZW5kZXJlcjpyZW5kZXJlci5nZXQoKV07CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgcmVuZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzW3RyYWNrSURdLmdldCgpOwogCkBA
IC02OTEsNiArODA3LDM3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNr
RGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291CiAgICAgfQogfQogCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpyZWdpc3RlckZvckVycm9yTm90aWZpY2F0
aW9ucyhTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgQVNTRVJUKCFtX2Vycm9yQ2xpZW50cy5jb250YWlucyhjbGllbnQpKTsKKyAgICBtX2Vycm9y
Q2xpZW50cy5hcHBlbmQoY2xpZW50KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6dW5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyhTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQ0Vycm9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgQVNTRVJUKG1fZXJyb3JDbGllbnRz
LmNvbnRhaW5zKGNsaWVudCkpOworICAgIG1fZXJyb3JDbGllbnRzLnJlbW92ZShtX2Vycm9yQ2xp
ZW50cy5maW5kKGNsaWVudCkpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpsYXllckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAqbGF5ZXIs
IE5TRXJyb3IgKmVycm9yKQoreworICAgIExPRyhNZWRpYSwgIlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpsYXllckRpZFJlY2VpdmVFcnJvciglcCk6IGxheWVyKCVwKSwgZXJyb3IoJUApIiwg
dGhpcywgbGF5ZXIsIFtlcnJvciBkZXNjcmlwdGlvbl0pOworICAgIGZvciAoYXV0byYgY2xpZW50
IDogbV9lcnJvckNsaWVudHMpCisgICAgICAgIGNsaWVudC0+bGF5ZXJEaWRSZWNlaXZlRXJyb3Io
bGF5ZXIsIGVycm9yKTsKKworICAgIGludCBlcnJvckNvZGUgPSBbW1tlcnJvciB1c2VySW5mb10g
dmFsdWVGb3JLZXk6QCJPU1N0YXR1cyJdIGludFZhbHVlXTsKKworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5n
RXJyb3IodGhpcywgZXJyb3JDb2RlKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6cmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
ICpyZW5kZXJlciwgTlNFcnJvciAqZXJyb3IpCit7CisgICAgTE9HKE1lZGlhLCAiU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKCVwKTogcmVuZGVyZXIo
JXApLCBlcnJvciglQCkiLCB0aGlzLCByZW5kZXJlciwgW2Vycm9yIGRlc2NyaXB0aW9uXSk7Cisg
ICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Vycm9yQ2xpZW50cykKKyAgICAgICAgY2xpZW50LT5y
ZW5kZXJlckRpZFJlY2VpdmVFcnJvcihyZW5kZXJlciwgZXJyb3IpOworfQorCiBzdGF0aWMgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weShDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIpCiB7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgbmV3U2Ft
cGxlQnVmZmVyID0gMDsK
</data>
<flag name="review"
          id="257382"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>