<?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>43792</bug_id>
          
          <creation_ts>2010-08-10 08:08:30 -0700</creation_ts>
          <short_desc>Accelerated transitions do not suspend/resume properly.</short_desc>
          <delta_ts>2010-09-24 19:52:31 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43733</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262684</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-10 08:08:30 -0700</bug_when>
    <thetext>If you call AnimationController::suspendAnimations() while an accelerated transition is running, it does not suspend. When you call resumeAnimations() after the transition has finished, it will perform the transition again from the point at which suspend was called and then snap back to the start state briefly at the end.

This can be tested when https://bugs.webkit.org/show_bug.cgi?id=43733 is landed

rdar://problem/7616086</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276815</commentid>
    <comment_count>1</comment_count>
      <attachid>67108</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-09-09 16:00:59 -0700</bug_when>
    <thetext>Created attachment 67108
Partial patch. Transitions pause and resume, but sometimes at end of transition, flashes back to start for an instant

This patch is just a checkpoint. The basic bug is fixed, but there is sometimes a flash back to the start frame at the end of the transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284161</commentid>
    <comment_count>2</comment_count>
      <attachid>68634</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-23 18:09:42 -0700</bug_when>
    <thetext>Created attachment 68634
Main patch: unify transitions and animations in GraphicsLayer, and pause transitions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284163</commentid>
    <comment_count>3</comment_count>
      <attachid>68634</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-23 18:10:37 -0700</bug_when>
    <thetext>Comment on attachment 68634
Main patch: unify transitions and animations in GraphicsLayer, and pause transitions.

As Chris noted, with these changes, unpaused transitions can jump at the end. I&apos;ll fix that in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284198</commentid>
    <comment_count>4</comment_count>
      <attachid>68634</attachid>
    <who name="">mitz</who>
    <bug_when>2010-09-23 20:20:09 -0700</bug_when>
    <thetext>Comment on attachment 68634
Main patch: unify transitions and animations in GraphicsLayer, and pause transitions.

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

&gt; WebCore/platform/graphics/GraphicsLayer.cpp:252
&gt; +    return String::format(&quot;-|transition%d-&quot;, property);

Can you use %c instead?

&gt; WebCore/platform/graphics/GraphicsLayer.h:295
&gt; +    virtual void removeAnimation(const String&amp; /*animationName*/)  { }

Extra space before the brace.

&gt; WebCore/platform/graphics/mac/GraphicsLayerCA.h:275
&gt; +    void setCAAnimationOnLayer(CAPropertyAnimation*, AnimatedPropertyID property, const String&amp; animationName, int index, double timeOffset);
&gt; +    bool removeCAAnimationFromLayer(AnimatedPropertyID property, const String&amp; animationName, int index);
&gt; +    void pauseCAAnimationOnLayer(AnimatedPropertyID property, const String&amp; animationName, int index, double timeOffset);

I don’t know why you named the AnimatedPropertyID parameter in these declarations.

&gt; WebCore/platform/graphics/mac/GraphicsLayerCA.h:340
&gt; +        LayerPropertyAnimation(CAPropertyAnimation* caAnim, const String&amp; animationName, AnimatedPropertyID property, int index, double timeOffset)

Could rename caAnim to caPropertyAnimation.

&gt; WebCore/platform/graphics/mac/GraphicsLayerCA.mm:549
&gt; +    NSString* animationID = animationIdentifier;

Star on the wrong side.

&gt; WebCore/platform/graphics/mac/GraphicsLayerCA.mm:550
&gt; +    CAAnimation* anim = [fromLayer animationForKey:animationID];

Ditto.

&gt; WebCore/rendering/RenderLayerBacking.cpp:1238
&gt; +// This is used for the &apos;freeze&apos; api, for testing only.

API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284212</commentid>
    <comment_count>5</comment_count>
      <attachid>68634</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-23 21:17:58 -0700</bug_when>
    <thetext>Comment on attachment 68634
Main patch: unify transitions and animations in GraphicsLayer, and pause transitions.

http://trac.webkit.org/changeset/68233

Keeping bug open to fix flash at end of resumed transition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284880</commentid>
    <comment_count>6</comment_count>
      <attachid>68795</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-24 17:58:21 -0700</bug_when>
    <thetext>Created attachment 68795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284926</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-24 19:52:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/68323</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67108</attachid>
            <date>2010-09-09 16:00:59 -0700</date>
            <delta_ts>2010-09-23 18:09:39 -0700</delta_ts>
            <desc>Partial patch. Transitions pause and resume, but sometimes at end of transition, flashes back to start for an instant</desc>
            <filename>43792-partial.patch</filename>
            <type>text/plain</type>
            <size>14332</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nLVBFUAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5n
ZUxvZy1QRVAJKHJldmlzaW9uIDI0NjU0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nLVBFUAkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEwLTA4LTE4ICBDaHJpcyBNYXJyaW4gIDxj
bWFycmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzYxNjA4Nj4gU2Nyb2xsaW5nIHdoaWxlIHNob3dj
YXNlIGlzIGFuaW1hdGluZyBvZnRlbiBjYXVzZXMgYSBoaWNjdXAgaW4gdGhlIGFuaW1hdGlvbgor
CisgICAgICAgIEFkZGVkIGxvZ2ljIHRvIHBhdXNlIHRyYW5zaXRpb25zIGp1c3QgbGlrZSB3ZSBk
byBmb3IgYW5pbWF0aW9ucy4gUGx1bWJlZCBjYWxsIGZyb20gQW5pbWF0aW9uQ29udHJvbGxlcgor
ICAgICAgICB0aHJvdWdoIFJlbmRlckxheWVyQmFja2luZyB0byBHcmFwaGljc0xheWVyLgorCisg
ICAgICAgIEkgY2hhbmdlZCB0aGUgbmFtZSBvZiBHcmFwaGljc0xheWVyOjpwYXVzZUFuaW1hdGlv
bnMoKSB0byBwYXVzZUFuaW1hdGlvbnNGb3JLZXlmcmFtZXMuIFRoaXMgaXMgYmVjYXVzZQorICAg
ICAgICBJIGFkZGVkIHBhdXNlQW5pbWF0aW9uc0ZvclByb3BlcnR5IHRvIHBhdXNlIHRyYW5zaXRp
b25zLiBJIGRvbid0IHBhcnRpY3VsYXJseSBsaWtlIHRoZSB3YXkKKyAgICAgICAgR3JhcGhpY3NM
YXllciB1c2VzICJBbmltYXRpb25zRm9yUHJvcGVydHkiIHdoZW4gaXQgbWVhbnMgIlRyYW5zaXRp
b25zIiwgYnV0IHRoaXMgaXMgcGVydmFzaXZlCisgICAgICAgIGFuZCBzaG91bGQgYmUgY2hhbmdl
ZCBzZXBhcmF0ZWx5LiBJJ3ZlIG9wZW5lZCBhIFdlYktpdCBUT1QgYnVnIGZvciB0aGlzIChodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQyMTQpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIGl0IG9ubHkgaGFwcGVucyB3aXRoIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nLCB3aGljaCBpcyBub3QgY3VycmVudGx5IHRlc3RhYmxlLgorICAgICAgICBXaGVuIEkg
cHVsbCB0aGlzIGNoYW5nZSBpbnRvIFdlYktpdCBUT1QgSSB3aWxsIGFkZCB0ZXN0cyB0aGVyZSBi
ZWNhdXNlIHdlIGNhbiB0ZXN0IG9uIHRoZSBkZXNrdG9wLgorICAgICAgICBFdmVudHVhbGx5IHRo
b3NlIHRlc3RzIGNhbiBiZSB1c2VkIGZvciBQRVAuCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1h
dGlvbjo6cGF1c2VBbmltYXRpb24pOiBQbHVtYmVkIGRvd24gdG8gUmVuZGVyTGF5ZXJCYWNraW5n
CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpwYXVzZUFuaW1hdGlvbnNGb3JQcm9wZXJ0eSk6IFByb3RvdHlwZSBmb3Ig
bmV3IHBhdXNlQW5pbWF0aW9uc0ZvclByb3BlcnR5IGZvciB0cmFuc2l0aW9ucworICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cGF1c2VBbmltYXRpb25zRm9yS2V5ZnJhbWVzKTogUmVu
YW1lZCBleGlzdGluZyBwYXVzZUFuaW1hdGlvbnMgdG8gbWF0Y2ggdHJhbnNpdGlvbiB2ZXJzaW9u
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW06CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbnNGb3JQcm9wZXJ0eSk6
IENoYW5nZWQgdG8gdXNlIGEgSGFzaE1hcCB3aXRoIGFjdGlvbiBhbmQgdGltZU9mZnNldCB0byBt
YXRjaCBob3cgYW5pbWF0aW9ucyB3b3JrCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnBhdXNlQW5pbWF0aW9uc0ZvclByb3BlcnR5KTogTmV3IG1ldGhvZCB3aGljaCBmb2xsb3dz
IGtleWZyYW1lIGFuaW1hdGlvbiBtb2RlbCBmb3IgcGF1c2luZworICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbnNGb3JLZXlmcmFtZXMpOiBSZW5hbWVkIHRv
IGJlIGNvbnNpc3RlbnQgd2l0aCBtZXRob2RzIGZvciB0cmFuc2l0aW9ucworICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckFuaW1hdGlvbnMpOiBBZGRlZCBuZXcg
bG9naWMgZm9yIHBhdXNpbmcgdHJhbnNpdGlvbnMKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6cGF1c2VBbmltYXRpb25PbkxheWVyKTogTm93IHJldHVybnMgYm9vbCBzbyB3ZSBr
bm93IHdoZW4gdG8gdGVybWluYXRlIGxvb3AgZm9yIHRyYW5zaXRpb25zCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OmFuaW1hdGlvblBhdXNlZCk6IFBsdW1iIHRocm91Z2gKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dHJhbnNpdGlvblBhdXNlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorCiAyMDEwLTA4LTE4ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzMjUy
Mjg+IGlPUzogUkVHUkVTU0lPTiAocjYzNDUyKTogTGF5ZXJpbmcgcHJvYmxlbSBvbiBHb29nbGUg
aW1hZ2UgcmVzdWx0cyB3aGVuIHNlbGVjdGluZyBhbiBpbWFnZSAoNDMwMTQpCkluZGV4OiBXZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCShyZXZpc2lvbiAyNDY0OTYp
CisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvbkVu
ZChkb3VibGUgZWxhcHNlZFRpbWUpOwogICAgIHZpcnR1YWwgYm9vbCBzdGFydEFuaW1hdGlvbihk
b3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGRvdWJs
ZSAvKnRpbWVPZmZzZXQqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kQW5pbWF0aW9uKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5
bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOwpJbmRleDogV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI0NjQ5NikK
KysrIFdlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNiArMTIwLDI1IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lk
IEltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkKK3sK
KyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisgICAgaWYgKG1fb2JqZWN0LT5oYXNMYXllcigpKSB7CisgICAgICAg
IFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9vYmplY3QpLT5s
YXllcigpOworICAgICAgICBpZiAobGF5ZXItPmlzQ29tcG9zaXRlZCgpKQorICAgICAgICAgICAg
bGF5ZXItPmJhY2tpbmcoKS0+dHJhbnNpdGlvblBhdXNlZCh0aW1lT2Zmc2V0LCBtX2FuaW1hdGlu
Z1Byb3BlcnR5KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0aW1lT2Zmc2V0KTsK
KyNlbmRpZgorICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQor
ICAgIGlmICghcGF1c2VkKCkpCisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3Qt
Pm5vZGUoKSk7Cit9CisKIHZvaWQgSW1wbGljaXRBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDI0NjQ5NikK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDkgQEAKIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmlt
YXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBj
b25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1l
T2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uc0ZvclByb3BlcnR5KEFu
aW1hdGVkUHJvcGVydHlJRCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uc0ZvclBy
b3BlcnR5KEFuaW1hdGVkUHJvcGVydHlJRCwgZG91YmxlIHRpbWVPZmZzZXQpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVBbmltYXRpb25zRm9yS2V5ZnJhbWVzKGNvbnN0IFN0cmluZyYga2V5ZnJh
bWVzTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYg
a2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZUFuaW1hdGlvbnNGb3JLZXlmcmFtZXMoY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3Vi
bGUgdGltZU9mZnNldCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFn
ZShJbWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1M
YXllciopOwpAQCAtMjkwLDcgKzI5MSw3IEBACiAKICAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5
ZXIoQ0FQcm9wZXJ0eUFuaW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiBrZXlmcmFtZXNOYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICBib29s
IHJlbW92ZUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYga2V5ZnJhbWVzTmFtZSwgaW50IGluZGV4KTsKLSAgICB2b2lkIHBhdXNlQW5pbWF0aW9uT25M
YXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgaW50
IGluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgYm9vbCBwYXVzZUFuaW1hdGlvbk9uTGF5
ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGludCBp
bmRleCwgZG91YmxlIHRpbWVPZmZzZXQpOwogCiAgICAgZW51bSBNb3ZlT3JDb3B5IHsgTW92ZSwg
Q29weSB9OwogICAgIHZvaWQgbW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShNb3ZlT3JD
b3B5LCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIENBTGF5ZXIgKiBmcm9tTGF5ZXIsIENB
TGF5ZXIgKiB0b0xheWVyKTsKQEAgLTM3Nyw5ICszNzgsOCBAQAogICAgIC8vIEFuaW1hdGlvbnMg
b24gdGhlIGxheWVyIGFyZSBpZGVudGlmaWVkIGJ5IHByb3BlcnR5ICsgaW5kZXguCiAgICAgdHlw
ZWRlZiBpbnQgQW5pbWF0ZWRQcm9wZXJ0eTsgICAvLyBzdGQgY29udGFpbmVycyBjaG9rZSBvbiB0
aGUgQW5pbWF0ZWRQcm9wZXJ0eUlEIGVudW0KICAgICB0eXBlZGVmIHBhaXI8QW5pbWF0ZWRQcm9w
ZXJ0eSwgaW50PiBBbmltYXRpb25QYWlyOwotCi0gICAgSGFzaFNldDxBbmltYXRlZFByb3BlcnR5
PiBtX3RyYW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmU7CiAgICAgCisgICAgLy8gRW50cnkgZm9y
IHBlbmRpbmcgYWN0aW9uIHRvIHBlcmZvcm0gb24gYW5pbWF0aW9ucyBvciB0cmFuc2l0aW9ucwog
ICAgIGVudW0gQWN0aW9uIHsgUmVtb3ZlLCBQYXVzZSB9OwogICAgIHN0cnVjdCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uIHsKICAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihBY3Rp
b24gYWN0aW9uID0gUmVtb3ZlLCBkb3VibGUgdGltZU9mZnNldCA9IDApCkBAIC0zOTAsNiArMzkw
LDEwIEBACiAgICAgICAgIEFjdGlvbiBhY3Rpb247CiAgICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0
OyAgICAgIC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UKICAgICB9OworICAgIAorICAgIHR5cGVkZWYg
SGFzaE1hcDxBbmltYXRlZFByb3BlcnR5LCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uPiBUcmFu
c2l0aW9uc1RvUHJvY2Vzc01hcDsKKyAgICBUcmFuc2l0aW9uc1RvUHJvY2Vzc01hcCBtX3RyYW5z
aXRpb25zVG9Qcm9jZXNzOworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQW5pbWF0aW9u
UHJvY2Vzc2luZ0FjdGlvbj4gQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDsKICAgICBBbmltYXRpb25z
VG9Qcm9jZXNzTWFwIG1fa2V5ZnJhbWVBbmltYXRpb25zVG9Qcm9jZXNzOwogCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZp
c2lvbiAyNDY0OTYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xh
eWVyQ0EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0OSw2ICs3NDksMTEgQEAKIAogYm9vbCBHcmFw
aGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW0sIGNvbnN0
IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CisgICAgaWYgKHRp
bWVPZmZzZXQgPiAwKQorICAgICAgICB0aW1lT2Zmc2V0IC09IDAuMTsKKyAgICBpZiAodGltZU9m
ZnNldCA8IDApCisgICAgICAgIHRpbWVPZmZzZXQgPSAwOworICAgICAgICAKICAgICBpZiAoZm9y
Y2VTb2Z0d2FyZUFuaW1hdGlvbigpIHx8ICFhbmltIHx8IGFuaW0tPmlzRW1wdHlPclplcm9EdXJh
dGlvbigpIHx8IHZhbHVlTGlzdC5zaXplKCkgPCAyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTc3MywxMCArNzc4LDIxIEBACiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmlt
YXRpb25zRm9yUHJvcGVydHkoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogewotICAgIGlm
IChtX3RyYW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmUuZmluZChwcm9wZXJ0eSkgIT0gbV90cmFu
c2l0aW9uUHJvcGVydGllc1RvUmVtb3ZlLmVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgbV90
cmFuc2l0aW9uc1RvUHJvY2Vzcy5hZGQocHJvcGVydHksIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rp
b24oUmVtb3ZlKSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5n
ZWQpOworfQogCi0gICAgbV90cmFuc2l0aW9uUHJvcGVydGllc1RvUmVtb3ZlLmFkZChwcm9wZXJ0
eSk7Cit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb25zRm9yUHJvcGVydHkoQW5p
bWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBUcmFu
c2l0aW9uc1RvUHJvY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtX3RyYW5zaXRpb25zVG9Qcm9jZXNz
LmZpbmQocHJvcGVydHkpOworICAgIGlmIChpdCAhPSBtX3RyYW5zaXRpb25zVG9Qcm9jZXNzLmVu
ZCgpKSB7CisgICAgICAgIEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZv
ID0gaXQtPnNlY29uZDsKKyAgICAgICAgLy8gSWYgYSB0cmFuc2l0aW9uIGlzIHNjaGVkdWxlZCB0
byBiZSByZW1vdmVkLCBkb24ndCBjaGFuZ2UgdGhlIHJlbW92ZSB0byBhIHBhdXNlLgorICAgICAg
ICBpZiAocHJvY2Vzc2luZ0luZm8uYWN0aW9uICE9IFJlbW92ZSkKKyAgICAgICAgICAgIHByb2Nl
c3NpbmdJbmZvLmFjdGlvbiA9IFBhdXNlOworICAgIH0gZWxzZQorICAgICAgICBtX3RyYW5zaXRp
b25zVG9Qcm9jZXNzLmFkZChwcm9wZXJ0eSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVz
ZSwgdGltZU9mZnNldCkpOworCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlv
bkNoYW5nZWQpOwogfQogCkBAIC03ODksNyArODA1LDcgQEAKICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpw
YXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uc0ZvcktleWZyYW1lcyhj
b25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIGlm
ICghYW5pbWF0aW9uSXNSdW5uaW5nKGtleWZyYW1lc05hbWUpKQogICAgICAgICByZXR1cm47CkBA
IC0xNTg3LDE4ICsxNjAzLDI4IEBACiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXll
ckFuaW1hdGlvbnMoKQogewotICAgIGlmIChtX3RyYW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmUu
c2l6ZSgpKSB7Ci0gICAgICAgIEhhc2hTZXQ8aW50Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV90
cmFuc2l0aW9uUHJvcGVydGllc1RvUmVtb3ZlLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hTZXQ8
QW5pbWF0ZWRQcm9wZXJ0eT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV90cmFuc2l0aW9uUHJvcGVy
dGllc1RvUmVtb3ZlLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgQW5p
bWF0ZWRQcm9wZXJ0eUlEIGN1cnJQcm9wZXJ0eSA9IHN0YXRpY19jYXN0PEFuaW1hdGVkUHJvcGVy
dHlJRD4oKml0KTsKLSAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgYW5pbWF0aW9ucyB3aXRoIHRo
aXMgcHJvcGVydHkgaW4gdGhlIGtleS4KLSAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsg
OyArK2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZW1vdmVBbmltYXRpb25Gcm9tTGF5
ZXIoY3VyclByb3BlcnR5LCAiIiwgaW5kZXgpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICBpZiAobV90cmFuc2l0aW9uc1RvUHJvY2Vzcy5zaXplKCkpIHsKKyAgICAgICAgVHJhbnNp
dGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fdHJhbnNpdGlvbnNUb1By
b2Nlc3MuZW5kKCk7CisgICAgICAgIGZvciAoVHJhbnNpdGlvbnNUb1Byb2Nlc3NNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV90cmFuc2l0aW9uc1RvUHJvY2Vzcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgICAgIEFuaW1hdGVkUHJvcGVydHlJRCBjdXJyUHJvcGVydHkgPSBz
dGF0aWNfY2FzdDxBbmltYXRlZFByb3BlcnR5SUQ+KGl0LT5maXJzdCk7CisgICAgICAgICAgICBj
b25zdCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNv
bmQ7CisKKyAgICAgICAgICAgIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZv
ciAoaW50IGluZGV4ID0gMDsgIWZpbmlzaGVkOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChwcm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBSZW1vdmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlbW92ZUFuaW1hdGlvbkZy
b21MYXllcihjdXJyUHJvcGVydHksICIiLCBpbmRleCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgUGF1c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXBhdXNlQW5pbWF0aW9uT25MYXllcihjdXJyUHJvcGVydHksICIiLCBpbmRleCwgcHJvY2Vz
c2luZ0luZm8udGltZU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNo
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgbV90cmFuc2l0aW9uUHJv
cGVydGllc1RvUmVtb3ZlLmNsZWFyKCk7CisgICAgICAgIG1fdHJhbnNpdGlvbnNUb1Byb2Nlc3Mu
Y2xlYXIoKTsKICAgICB9CiAKICAgICBpZiAobV9rZXlmcmFtZUFuaW1hdGlvbnNUb1Byb2Nlc3Mu
c2l6ZSgpKSB7CkBAIC0xNzM3LDcgKzE3NjMsNyBAQAogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhp
Y3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVP
ZmZzZXQpCitib29sIEdyYXBoaWNzTGF5ZXJDQTo6cGF1c2VBbmltYXRpb25PbkxheWVyKEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBpbnQg
aW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIFBsYXRmb3JtTGF5ZXIqIGxheWVyID0g
YW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CiAKQEAgLTE3NDUsNyArMTc3MSw3IEBACiAKICAgICBD
QUFuaW1hdGlvbiogY2FBbmltID0gW2xheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25OYW1l
XTsKICAgICBpZiAoIWNhQW5pbSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBBbmltYXRpb25zIG9uIHRoZSBsYXllciBhcmUgaW1tdXRhYmxlLCBzbyB3
ZSBoYXZlIHRvIGNsb25lIGFuZCBtb2RpZnkuCiAgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogcGF1
c2VkQW5pbSA9IG5pbDsKQEAgLTE3ODMsNiArMTgwOSw4IEBACiAgICAgICAgICAgICBbY3Vyckxh
eWVyIGFkZEFuaW1hdGlvbjpwYXVzZWRBbmltIGZvcktleTphbmltYXRpb25OYW1lXTsKICAgICAg
ICAgfQogICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2lmIEVOQUJMRSgzRF9D
QU5WQVMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAko
cmV2aXNpb24gMjQ2NDk2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsOCBAQAogICAgIHZpcnR1YWwgYm9v
bCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiAv
KmJveFNpemUqLywgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiAvKmtleWZyYW1lc05h
bWUqLywgZG91YmxlIC8qdGltZU9mZnNldCovKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVBbmltYXRpb25zRm9yUHJvcGVydHkoQW5pbWF0ZWRQcm9wZXJ0eUlEKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uc0ZvcktleWZyYW1lcyhjb25zdCBT
dHJpbmcmIC8qIGtleWZyYW1lc05hbWUgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFu
aW1hdGlvbihjb25zdCBTdHJpbmcmIC8qIGtleWZyYW1lc05hbWUgKi8sIGRvdWJsZSAvKnRpbWVP
ZmZzZXQqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uc0ZvclByb3BlcnR5
KEFuaW1hdGVkUHJvcGVydHlJRCwgZG91YmxlIC8qdGltZU9mZnNldCovKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGF1c2VBbmltYXRpb25zRm9yS2V5ZnJhbWVzKGNvbnN0IFN0cmluZyYgLyoga2V5
ZnJhbWVzTmFtZSAqLywgZG91YmxlIC8qdGltZU9mZnNldCovKSB7IH0KICAgICAKICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVBbmltYXRpb25zKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAkocmV2aXNpb24gMjQ2NDk2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQAogICAgIGJvb2wg
c3RhcnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBpbnQgcHJvcGVydHksIGNvbnN0IFJl
bmRlclN0eWxlKiBmcm9tU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiB0b1N0eWxlKTsKICAgICB2
b2lkIGFuaW1hdGlvbkZpbmlzaGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAgdm9pZCBhbmlt
YXRpb25QYXVzZWQoZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAg
dm9pZCB0cmFuc2l0aW9uUGF1c2VkKGRvdWJsZSB0aW1lT2Zmc2V0LCBpbnQgcHJvcGVydHkpOwog
ICAgIHZvaWQgdHJhbnNpdGlvbkZpbmlzaGVkKGludCBwcm9wZXJ0eSk7CiAKICAgICB2b2lkIHN1
c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lID0gMCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI0NjQ5NikKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNjYsNyAr
MTI2Niw3IEBACiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjphbmltYXRpb25QYXVzZWQoZG91
YmxlIHRpbWVPZmZzZXQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKIHsKLSAgICBtX2dy
YXBoaWNzTGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOwor
ICAgIG1fZ3JhcGhpY3NMYXllci0+cGF1c2VBbmltYXRpb25zRm9yS2V5ZnJhbWVzKGFuaW1hdGlv
bk5hbWUsIHRpbWVPZmZzZXQpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dHJhbnNp
dGlvbkZpbmlzaGVkKGludCBwcm9wZXJ0eSkKQEAgLTEyNzYsNiArMTI3NiwxMyBAQAogICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnJlbW92ZUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShhbmltYXRlZFBy
b3BlcnR5KTsKIH0KIAordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zaXRpb25QYXVzZWQo
ZG91YmxlIHRpbWVPZmZzZXQsIGludCBwcm9wZXJ0eSkKK3sKKyAgICBBbmltYXRlZFByb3BlcnR5
SUQgYW5pbWF0ZWRQcm9wZXJ0eSA9IGNzc1RvR3JhcGhpY3NMYXllclByb3BlcnR5KHByb3BlcnR5
KTsKKyAgICBpZiAoYW5pbWF0ZWRQcm9wZXJ0eSAhPSBBbmltYXRlZFByb3BlcnR5SW52YWxpZCkK
KyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5wYXVzZUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShhbmlt
YXRlZFByb3BlcnR5LCB0aW1lT2Zmc2V0KTsKK30KKwogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewogICAgIG1fZ3JhcGhpY3NMYXllci0+
c3VzcGVuZEFuaW1hdGlvbnModGltZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68634</attachid>
            <date>2010-09-23 18:09:42 -0700</date>
            <delta_ts>2010-09-23 21:17:58 -0700</delta_ts>
            <desc>Main patch: unify transitions and animations in GraphicsLayer, and pause transitions.</desc>
            <filename>bug-43792-20100923180941.patch</filename>
            <type>text/plain</type>
            <size>54779</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYTA2ZDAwM2I1NDE3OGQwNzU2MGM3YThkOGUyOGM5MDg4YzA2ODljLi5mOThkMzY2
YzM3NzJhZTAyOWViYzY3OGQ0MGUwZDAwYzgwMDk4MGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMDktMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQg
dHJhbnNpdGlvbnMgZG8gbm90IHN1c3BlbmQvcmVzdW1lIHByb3Blcmx5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3OTIKKyAgICAgICAgCisgICAg
ICAgIFRlc3RzIGZvciBzdXNwZW5kaW5nIGhhcmR3YXJlLWFjY2VsZXJhdGVkIHRyYW5zaXRpb25z
IGFuZCBhbmltYXRpb25zLgorCisgICAgICAgICogYW5pbWF0aW9ucy9zdXNwZW5kLXRyYW5zZm9y
bS1hbmltYXRpb24tZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlv
bnMvc3VzcGVuZC10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAg
ICAgICogYW5pbWF0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS1hbmltYXRpb24tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3N1c3BlbmQtdHJhbnNmb3JtLWFuaW1hdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmFuc2l0aW9ucy9yZXBlYXRlZC1maXJpbmctYmFj
a2dyb3VuZC1jb2xvci5odG1sOgorICAgICAgICAqIHRyYW5zaXRpb25zL3N1c3BlbmQtdHJhbnNm
b3JtLXRyYW5zaXRpb24tZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHRyYW5z
aXRpb25zL3N1c3BlbmQtdHJhbnNmb3JtLXRyYW5zaXRpb24tZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiB0cmFuc2l0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS10cmFuc2l0aW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0t
dHJhbnNpdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0wOS0yMyAgUmVuYXRhIEhvZG92YW4gIDxy
ZW5pQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtdHJhbnNmb3JtLWFu
aW1hdGlvbi1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVu
ZC10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyOWRi
MTI2MDQ4NWFjNWYxNzYyNWY5MDA3YjQ2NzZhNDYyNmU5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtdHJhbnNmb3JtLWFuaW1hdGlvbi1leHBlY3Rl
ZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACis3MWU4YzQ3NTk3YTA3MTAwZGRjOGVjZDAxNWZlMjFm
YgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMWRhOGM3NzdmZjQwMTg1ZmY0ZDc4MDUwZTk4NmVlNTM0NDE5NDJjCkdJ
VCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTIzMAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7
K3ZZVjJhPmkxQiVRbFlicFM4LWVvI0YyWTVPPUQrQ25mcilCMSgKekdCOHZ5d3VZUn43SXFaKlhP
XzN9ZilZbm1IczdYLTJ9KylrdDIxMSRuRWUkQCVJM0soenMrPyppbX5VbEpoUnZECnopVjQwfGM9
RzY/KTstc14zKSVsUyRXP3R2KGY0WU5hQER4RVN8ZSRweGJEWlpjfE9+Z3pCK0tPPyg7cUtfcUYr
RAp6X1pmSkxFfTQ5N1YwcHJPSlpPPCVXPUBTJCl9SWNCekQxbWxDYVImZy19dEdwSVdgeW50YlRy
QGlvWT5CPn5RdCgKekA9Zkp5WEk8SmhpQG9LcSF2cHRPSD89bXI3Y2I8QjZrX1ZJeHhZfkpjblFi
LSQyVUhgPjlfUSZ0VD8hcFUpJU9iCnpxKjlIOHNxVlJZLXlPa2NSV0NhPGRzc35RU3tQKEU9WCY+
KT4kMj5iZDE9UV4yPC1LcnV4JDY0Y2RMXlkmaGgpawp6SCh+R0dGTGkjS0A3V3p2Smo1LXoqNH1N
TEA0VC0pU000N3FLM3d3Yk5TbSNVZ3oxK2IzOExHalJ7ayhPQm9aJisKenRHKzB0QFRNTmAjfkpK
WGhKRXNDRHd0cSNEa1pVQElMZ0VTeD0tR1pVRzEjM1lTKUY9S1BuRmtkfDI1cG9QT2BoCnotU0A3
eW5BUktjJD97MD8lO05QMzVPOEhsb1V0TG1xMEw2aCZ9MzdRejRCQHs+Qi1lYnI3QnN3T09qa1JJ
IyEkQQp6dkUzZkg8Z1UjPjRXK148JlJhUHF7Yy0lS3dmPzA0KTVAUXhWPmE5ZmAjeHB1PnsrYCRK
K01DZGJtbVNleCRCb3QKekpUQ1QpdENAUEdZO3c1IXZeQUFnZHVGfG52VlJqay1TQW5IWTUkU3A0
WmxDPyMhbyNuVTkoNXo9O1A0T3VlQDdJCnpxWVRhTyYoRXAxd3Rie2BVVF5FUTs8Y1VLPTMlcF5y
fmwzSmAyQjl4cDJeUWJmQk1JTHtyRCZTPzIrVjBudWNtKwp6VUMkTGVyeXRlKElPJkc+WVZKbn54
eUwhP1BIb2U/bHNvYTQlR0hFflMkbj9mJEokMyU+fipXPmA1SEp5XjMwYD4KeiZoUGJ5dntGcHc/
JlFuPSlxbmY9QU1xI095UG5WMlZBOVdkYUFNfUorfkM2WjB0LWBAPGB1N0Y2NW9IWl9RU1RrCno/
OFM4IWVeP0BIUipTNi1HTSVybWhmJGBpeS1NemQ9OFZoSnJrJUE2WVMpPVJkRHFLUk5rTH08WmFX
N0JVMDEhSAp6Pk1nYztXQHlzT3ZLdW9tJWpVQH12fj5EQFdWdSlCPFhgSlEzVTJ0akE/V0FOSDk8
Ryl7R19mbVBYQ3BFVjkjSUkKejB+T3QhMz05ZWtvLVUzZDZedzZoOGhXdVhpbShLVj9yOUpnKHxe
T3RRfVgjPVBGVFZSd0t0OURLV3N7aHRDdjZECnp7cm87aFAwaWxfdi0zWUh2VHo3Z3NEMWVSXllm
ZG48dl9OQSF2bTJEPnVfYThDTlFVZzBteHV0V0U1SXA8cTJrawp6UjVUcFdSZEMxPypHNXYpKnVj
T1VGanZJXnVJN1E1ZldyM2ZzVVlvT0Vld3FnNGg8fFR7RGdxb3BASWU2OTIwSUkKel5ANEY3OFhP
Yzk5R0Y3WElZQ3hIKWErbm9JcV4xMDZ+PEw/UCFKR01VfGNtQjtXbXl0T2lXTThIWDwxLXpgLSRy
Cno7aUBPaFVaNFo9NyNXTHBNPDV4PyFOVEl2QEphPmxIYiRvSDRHY1NEKkJ9fG8hbztORlAmeF84
e21+OCRjbDUlTAp6ajIjVVlWN3hTcjFgOUFyakhWViloOEBqQnp5ZjVuWXlwKi0xNmJyOWM+VnF7
PVI0JTtpbEleUDFBQkBHNF5yX1MKeiFvOyo+UXQ1UTA7JDJXYyE4citEQGhDVmY1RTQrQnhAST8k
b31MQjxOZy15V05ASHBSIV4pSnFOVlFWfTMoSldLCno1fEh7MXRab0ljcUVVVVZob25iWSFKK0w0
cUNSVklQKnJmeWlZIU59b0ZvXy1qYTFsPj5LUUZZIy1Oa0N5YjwtfQp6MGJtV01YbyNwSzYjX1Vw
Q1V7K29NYmhLdSg3QEIjaH56eWxobFk/JT9+dGxWMTE2QD9BUT1zayhOcj47YVlvQ00KeihjKlFx
I3U9QElOODJUJU98e1kxPnU3XzF3MncyfD9IbGIwan04dFhqZVUlY215Q3s9ajFEMTxqO2Y2Z0c+
KHFGCnpqdClsOy1WeXBySGxjJEkzPkA9OFlYTD9sRmg9S2VNeUkoKHJAMk9Ge3pmTjVOOVR0fXJf
Mlk8RHVOJShXZTUzfQpWN2opSnMwQHYqX2MpSSR6dGFEMGUwc3YxQUcwZ3d+CgpsaXRlcmFsIDAK
SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQt
dHJhbnNmb3JtLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L3N1c3BlbmQtdHJhbnNmb3JtLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q4
YWY3MDFiMTAwNjBlOWI3MTIxY2M4ZWZlNDQwZDU1YjkzNzZmMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDgKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDc4NHgwCitsYXllciBhdCAoMCwwKSBzaXplIDEwMHgxMDAKKyAgUmVuZGVy
QmxvY2sgKHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgMTAweDEwMCBbYmdjb2xvcj0j
RkYwMDAwXQorbGF5ZXIgYXQgKDEwMCwwKSBzaXplIDMwMHgxMDAKKyAgUmVuZGVyQmxvY2sgKHBv
c2l0aW9uZWQpIHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAzMDB4MTAwIFtiZ2NvbG9yPSMwMDgwMDBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3N1c3BlbmQtdHJhbnNmb3JtLWFu
aW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS1h
bmltYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDdiNDJhOTNiYTFlZjdmODBhZjY5OTYyMWMxMTM0
ZjcyNmZmMDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zdXNw
ZW5kLXRyYW5zZm9ybS1hbmltYXRpb24uaHRtbApAQCAtMCwwICsxLDcxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgI2JveCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
bGVmdDogMDsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICAgICAg
LXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuMnM7CisgICAgICAgIC13ZWJraXQtYW5pbWF0
aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAgIH0KKyAgICAKKyAgICAubW92ZSB7Cisg
ICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1vdmU7CisgICAgfQorCisgICAgQC13ZWJr
aXQta2V5ZnJhbWVzIG1vdmUgeworICAgICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRy
YW5zbGF0ZVgoMTAwcHgpIHNjYWxlKDEpOyB9CisgICAgICAgIHRvICAgeyAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlWCg0MDBweCkgc2NhbGUoMSk7IH0KKyAgICB9CisgICAgCisgICAgI3Nh
ZmV6b25lIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwOwor
ICAgICAgICB0b3A6IDA7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICAgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAg
ZnVuY3Rpb24gc3VzcGVuZEFuZFdhaXRGb3JDb21wbGV0aW9uKCkKKyAgICB7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zdXNwZW5kQW5pbWF0aW9ucygpOworCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIH0sIDI1MCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykuYWRkRXZlbnRMaXN0ZW5l
cignd2Via2l0QW5pbWF0aW9uU3RhcnQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHN1c3Bl
bmRBbmRXYWl0Rm9yQ29tcGxldGlvbigpOworICAgICAgICB9LCBmYWxzZSkKKworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm94JykuY2xhc3NOYW1lID0gJ21vdmUnOworICAgIH0K
KworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7Cisg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzwhLS0gV2hlbiBzdXNwZW5kZWQsIHRoZSBy
ZWQgYm94IHNob3VsZCBiZSBoaWRkZW4gYnkgdGhlIGdyZWVuIGJveC4gWW91IHNob3VsZCBzZWUg
bm8gcmVkLiAtLT4KKzxkaXYgaWQ9ImJveCI+PC9kaXY+Cis8ZGl2IGlkPSJzYWZlem9uZSI+PC9k
aXY+CisKKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlcGVhdGVkLWZpcmluZy1iYWNrZ3JvdW5k
LWNvbG9yLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9yZXBlYXRlZC1maXJpbmctYmFj
a2dyb3VuZC1jb2xvci5odG1sCmluZGV4IDA5NTc1NzBkM2YzODRlMWU4NmMyZjY1Yjc0MzYxM2Nj
ZjVmZjBiYzAuLmU2OTA0Y2UyZWM1Zjc1NThkNzQ3MmJjNGNiYzViMjNiYzgyZGZjMDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3JlcGVhdGVkLWZpcmluZy1iYWNrZ3JvdW5k
LWNvbG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvcmVwZWF0ZWQtZmlyaW5n
LWJhY2tncm91bmQtY29sb3IuaHRtbApAQCAtMTIsNiArMTIsMTEgQEAKICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICBmdW5jdGlvbiBjaGVja1J1
bm5pbmcoKQogICAgIHsKKyAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAi
VGhpcyB0ZXN0IG11c3QgYmUgcnVuIGluIERSVC4iCisgICAgICAgIHJldHVybjsKKyAgICAgIH0K
KyAgICAgICAgCiAgICAgICB2YXIgY3VycmVudCA9IGxheW91dFRlc3RDb250cm9sbGVyLm51bWJl
ck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgICAgaWYgKGN1cnJlbnQgPT0gMCkKICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJOdW1iZXIgb2Yg
YWN0aXZlIHRyYW5zaXRpb25zIGlzICgwKSBhcyBleHBlY3RlZCI7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90cmFuc2l0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS10cmFuc2l0aW9uLWV4cGVjdGVk
LmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJh
bnNpdGlvbi1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjlkYjEyNjA0ODVhYzVmMTc2
MjVmOTAwN2I0Njc2YTQ2MjZlOWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJhbnNpdGlvbi1leHBlY3RlZC5jaGVja3N1bQpA
QCAtMCwwICsxIEBACis3MWU4YzQ3NTk3YTA3MTAwZGRjOGVjZDAxNWZlMjFmYgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RyYW5zaXRpb25zL3N1
c3BlbmQtdHJhbnNmb3JtLXRyYW5zaXRpb24tZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvdHJh
bnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJhbnNpdGlvbi1leHBlY3RlZC5wbmcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjFkYThjNzc3ZmY0MDE4NWZmNGQ3ODA1MGU5ODZlZTUzNDQxOTQyYwpHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMTEyMzAKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MUIlUWxZYnBTOC1lbyNGMlk1Tz1EK0NuZnIpQjEoCnpHQjh2eXd1WVJ+N0lxWipYT18zfWYpWW5t
SHM3WC0yfSspa3QyMTEkbkVlJEAlSTNLKHpzKz8qaW1+VWxKaFJ2RAp6KVY0MHxjPUc2Pyk7LXNe
MyklbFMkVz90dihmNFlOYUBEeEVTfGUkcHhiRFpaY3xPfmd6QitLTz8oO3FLX3FGK0QKel9aZkpM
RX00OTdWMHByT0paTzwlVz1AUyQpfUljQnpEMW1sQ2FSJmctfXRHcElXYHludGJUckBpb1k+Qj5+
UXQoCnpAPWZKeVhJPEpoaUBvS3EhdnB0T0g/PW1yN2NiPEI2a19WSXh4WX5KY25RYi0kMlVIYD45
X1EmdFQ/IXBVKSVPYgp6cSo5SDhzcVZSWS15T2tjUldDYTxkc3N+UVN7UChFPVgmPik+JDI+YmQx
PVFeMjwtS3J1eCQ2NGNkTF5ZJmhoKWsKekgofkdHRkxpI0tAN1d6dkpqNS16KjR9TUxANFQtKVNN
NDdxSzN3d2JOU20jVWd6MStiMzhMR2pSe2soT0JvWiYrCnp0RyswdEBUTU5gI35KSlhoSkVzQ0R3
dHEjRGtaVUBJTGdFU3g9LUdaVUcxIzNZUylGPUtQbkZrZHwyNXBvUE9gaAp6LVNAN3luQVJLYyQ/
ezA/JTtOUDM1TzhIbG9VdExtcTBMNmgmfTM3UXo0QkB7PkItZWJyN0Jzd09PamtSSSMhJEEKenZF
M2ZIPGdVIz40VytePCZSYVBxe2MtJUt3Zj8wNCk1QFF4Vj5hOWZgI3hwdT57K2AkSitNQ2RibW1T
ZXgkQm90CnpKVENUKXRDQFBHWTt3NSF2XkFBZ2R1RnxudlZSamstU0FuSFk1JFNwNFpsQz8jIW8j
blU5KDV6PTtQNE91ZUA3SQp6cVlUYU8mKEVwMXd0YntgVVReRVE7PGNVSz0zJXBecn5sM0pgMkI5
eHAyXlFiZkJNSUx7ckQmUz8yK1YwbnVjbSsKelVDJExlcnl0ZShJTyZHPllWSm5+eHlMIT9QSG9l
P2xzb2E0JUdIRX5TJG4/ZiRKJDMlPn4qVz5gNUhKeV4zMGA+CnomaFBieXZ7RnB3PyZRbj0pcW5m
PUFNcSNPeVBuVjJWQTlXZGFBTX1KK35DNlowdC1gQDxgdTdGNjVvSFpfUVNUawp6PzhTOCFlXj9A
SFIqUzYtR00lcm1oZiRgaXktTXpkPThWaEpyayVBNllTKT1SZERxS1JOa0x9PFphVzdCVTAxIUgK
ej5NZ2M7V0B5c092S3VvbSVqVUB9dn4+REBXVnUpQjxYYEpRM1UydGpBP1dBTkg5PEcpe0dfZm1Q
WENwRVY5I0lJCnowfk90ITM9OWVrby1VM2Q2Xnc2aDhoV3VYaW0oS1Y/cjlKZyh8Xk90UX1YIz1Q
RlRWUndLdDlES1dze2h0Q3Y2RAp6e3JvO2hQMGlsX3YtM1lIdlR6N2dzRDFlUl5ZZmRuPHZfTkEh
dm0yRD51X2E4Q05RVWcwbXh1dFdFNUlwPHEya2sKelI1VHBXUmRDMT8qRzV2KSp1Y09VRmp2SV51
STdRNWZXcjNmc1VZb09FZXdxZzRoPHxUe0RncW9wQEllNjkyMElJCnpeQDRGNzhYT2M5OUdGN1hJ
WUN4SClhK25vSXFeMTA2fjxMP1AhSkdNVXxjbUI7V215dE9pV004SFg8MS16YC0kcgp6O2lAT2hV
WjRaPTcjV0xwTTw1eD8hTlRJdkBKYT5sSGIkb0g0R2NTRCpCfXxvIW87TkZQJnhfOHttfjgkY2w1
JUwKemoyI1VZVjd4U3IxYDlBcmpIVlYpaDhAakJ6eWY1bll5cCotMTZicjljPlZxez1SNCU7aWxJ
XlAxQUJARzRecl9TCnohbzsqPlF0NVEwOyQyV2MhOHIrREBoQ1ZmNUU0K0J4QEk/JG99TEI8Tmct
eVdOQEhwUiFeKUpxTlZRVn0zKEpXSwp6NXxIezF0Wm9JY3FFVVVWaG9uYlkhSitMNHFDUlZJUCpy
ZnlpWSFOfW9Gb18tamExbD4+S1FGWSMtTmtDeWI8LX0KejBibVdNWG8jcEs2I19VcENVeytvTWJo
S3UoN0BCI2h+enlsaGxZPyU/fnRsVjExNkA/QVE9c2soTnI+O2FZb0NNCnooYypRcSN1PUBJTjgy
VCVPfHtZMT51N18xdzJ3Mnw/SGxiMGp9OHRYamVVJWNteUN7PWoxRDE8ajtmNmdHPihxRgp6anQp
bDstVnlwckhsYyRJMz5APThZWEw/bEZoPUtlTXlJKChyQDJPRnt6Zk41TjlUdH1yXzJZPER1TiUo
V2U1M30KVjdqKUpzMEB2Kl9jKUkkenRhRDBlMHN2MUFHMGd3fgoKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zv
cm0tdHJhbnNpdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9zdXNw
ZW5kLXRyYW5zZm9ybS10cmFuc2l0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDhhZjcw
MWIxMDA2MGU5YjcxMjFjYzhlZmU0NDBkNTViOTM3NmYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJhbnNpdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg4
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg4CisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSA3ODR4MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisgIFJlbmRlckJs
b2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9I0ZG
MDAwMF0KK2xheWVyIGF0ICgxMDAsMCkgc2l6ZSAzMDB4MTAwCisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMTAwLDApIHNpemUgMzAweDEwMCBbYmdjb2xvcj0jMDA4MDAwXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJh
bnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0t
dHJhbnNpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NjI0ODgxYjRjMmFkNGZhMjMwODcyMDkwZmRk
MzQwNDBkY2E3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2l0aW9ucy9z
dXNwZW5kLXRyYW5zZm9ybS10cmFuc2l0aW9uLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlh
PSJzY3JlZW4iPgorICAgICNib3ggeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgIGxlZnQ6IDA7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAg
ICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC41cyBsaW5lYXI7Cisg
ICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHNjYWxlKDEpOworICAgIH0K
KyAgICAKKyAgICAjYm94Lm1vdmUgeworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRlWCg0MDBweCkgc2NhbGUoMSk7CisgICAgfQorCisgICAgI3NhZmV6b25lIHsKKyAgICAgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAwOworICAgICAgICB0b3A6IDA7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgbGVm
dDogMTAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgPC9z
dHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAgZnVuY3Rpb24gc3VzcGVuZEFu
ZFdhaXRGb3JDb21wbGV0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zdXNwZW5kQW5p
bWF0aW9ucygpOworCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDI1MCk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYm94JykuY2xhc3NOYW1lID0gJ21vdmUnOworICAgICAgICB3aW5k
b3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSBi
b3ggdG8gYW5pbWF0ZSBpbnRvIHRoZSBzYWZlIHpvbmUgKHRvIHRlc3QgdGhhdCBpdCBkb2Vzbid0
IHNuYXAgYmFjayB0byB0aGUgc3RhcnQpLgorICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQo
c3VzcGVuZEFuZFdhaXRGb3JDb21wbGV0aW9uLCAyNTApOworICAgICAgICB9LCAwKTsgLy8gZ2l2
ZSB0aGUgYWNjZWxlcmF0ZWQgdHJhbnNpdGlvbiBhIGNoYW5jZSB0byBraWNrIG9mZi4KKyAgICB9
CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGRvVGVzdCwgZmFsc2UpOwor
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8IS0tIFdoZW4gc3VzcGVuZGVkLCB0aGUg
cmVkIGJveCBzaG91bGQgYmUgaGlkZGVuIGJ5IHRoZSBncmVlbiBib3guIFlvdSBzaG91bGQgc2Vl
IG5vIHJlZC4gLS0+Cis8ZGl2IGlkPSJib3giPjwvZGl2PgorPGRpdiBpZD0ic2FmZXpvbmUiPjwv
ZGl2PgorCis8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYyMjg4
YjgyN2M1ZjMwYjVhM2E2ZDAzOTYyZmE3MTE2M2QwNmMwNjIuLmEzOWRiNjgzNTlhMzBiOWU5ODA0
OTY1MTc4MTNiMDA1MmI4MGQ4Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTAtMDktMjMgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQgdHJhbnNpdGlvbnMgZG8gbm90IHN1
c3BlbmQvcmVzdW1lIHByb3Blcmx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDM3OTIKKyAgICAgICAgCisgICAgICAgIEZpeCBzdXNwZW5kaW5nIG9m
IGFjY2VsZXJhdGVkIHRyYW5zaXRpb25zLgorICAgICAgICAKKyAgICAgICAgR3JhcGhpY3NMYXll
ciBjaGFuZ2VzIHVuaWZ5IHRoZSBoYW5kbGluZyBvZiB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9u
cworICAgICAgICBpbiBHcmFwaGljc0xheWVyLiBCb3RoIGFyZSBub3cgaWRlbnRpZmllZCBieSBu
YW1lLCBzbyB0aGUgY29kZQorICAgICAgICBub3cgcmVmZXJzIHRvICJhbmltYXRpb25OYW1lIiBy
YXRoZXIgdGhhbiAia2V5ZnJhbWVzTmFtZSIuIFRyYW5zaXRpb25zCisgICAgICAgIHVzZSBhIGR1
bW15IG5hbWUgd2hpY2ggaXMgbm90IGEgdmFsaWQga2V5ZnJhbWUgaWRlbnRpZmllci4KKworICAg
ICAgICBUZXN0czogYW5pbWF0aW9ucy9zdXNwZW5kLXRyYW5zZm9ybS1hbmltYXRpb24uaHRtbAor
ICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMvc3VzcGVuZC10cmFuc2Zvcm0tdHJhbnNpdGlvbi5o
dG1sCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6IENhbGwgZG93biB0byB0
aGUgUmVuZGVyTGF5ZXJCYWNraW5nCisgICAgICAgIHRvIHRlbGwgaXQgdGhhdCBhbiBhY2NlbGVy
YXRlZCB0cmFuc2l0aW9uIHdhcyBwYXVzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjphbmltYXRpb25OYW1l
Rm9yVHJhbnNpdGlvbik6IENyZWF0ZSBhIG5hbWUKKyAgICAgICAgZm9yIHRoZSB0cmFuc2l0aW9u
IG9mIHRoZSBnaXZlbiBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OmFkZEFuaW1hdGlvbik6IEdlbmVyYWxpemUgImtleWZyYW1lIiB0byAiYW5pbWF0aW9uIiBpbiB0
aGUgcGFyYW1ldGVyIG5hbWVzLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cGF1
c2VBbmltYXRpb24pOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6cmVt
b3ZlQW5pbWF0aW9uKTogZGl0dG8KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9H
cmFwaGljc0xheWVyQ0EuaDogUGFyYW1ldGVyIHJlbmFtaW5nLCBhbmQgc29tZSBtZXRob2QgcmVu
YW1lcyBmb3IgY2xhcml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5p
bWF0aW9uSXNSdW5uaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6TGF5
ZXJQcm9wZXJ0eUFuaW1hdGlvbjo6TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbik6IHN0cnVjdCByZW5h
bWUgZm9yIGNsYXJpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllckNBLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW5pbWF0aW9uSWRlbnRpZmllcik6IHRo
ZSBhbmltYXRpb25OYW1lIGFscmVhZHkgaGFzIHRoZSBwcm9wZXJ0eSBiYWtlZCBpbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKTog
anVzdCBkZWFscyB3aXRoIG9uZSBhbmltYXRpb24gbm93LgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KTogd2UgaGF2ZSB0
byB0cmF3bCB0aHJvdWdoCisgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMgdG8gZ2V0IHRoZSBp
ZGVudGlmaWVycyBmb3IgdGhlIGFuaW1hdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvcGllZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKTogcmVuYW1lIHBh
cmFtZXRlcnMuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0
aW9uKTogcmUtb3JkZXJlZCBtZXRob2RzIGhlcmUuIG1lbWJlciB2YXIgcmVuYW1lcy4KKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKTogZGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucyk6
IG5vIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIG1fdHJhbnNpdGlvblByb3BlcnRpZXNUb1JlbW92ZSwK
KyAgICAgICAgYW5kIG5vIG1vcmUgZGl2ZXJnZW5jZSBiZXR3ZWVuIHRyYW5zaXRpb25zIGFuZCBh
bmltYXRpb25zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRDQUFuaW1h
dGlvbk9uTGF5ZXIpOiByZW5hbWVzIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpyZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcik6IGRpdHRvCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBhdXNlQ0FBbmltYXRpb25PbkxheWVyKTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y3JlYXRlQW5pbWF0aW9uRnJv
bUtleWZyYW1lcyk6IHJlbmFtZXMKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXMpOiByZW5hbWVzCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnN1c3BlbmRBbmltYXRpb25zKTogd2hpdGVzcGFj
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDogR3JvdXAgdGhl
IHRyYW5zaXRpb24gYW5kIGFuaW1hdGlvbiBtZXRob2RzIHRvZ2V0aGVyLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjphbmltYXRpb25QYXVzZWQpOiBSZS1vcmRlcmVkIG1ldGhvZHMgZm9yIGNs
YXJpdHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmFuaW1hdGlvbkZp
bmlzaGVkKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKTogVXNlIGFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKCkgdG8gZ2VuZXJh
dGUKKyAgICAgICAgdGhlIGFuaW1hdGlvbiBpZGVudGlmaWVyLgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp0cmFuc2l0aW9uUGF1c2VkKTogQ2FsbCBwYXVzZUFuaW1hdGlv
biwgdXNpbmcgYW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oKQorICAgICAgICB0byBnZW5lcmF0
ZSB0aGUgYW5pbWF0aW9uIGlkZW50aWZpZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnRyYW5zaXRpb25GaW5pc2hlZCk6IENhbGwgcmVtb3ZlQW5pbWF0aW9uLCB1c2lu
ZyBhbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbigpCisgICAgICAgIHRvIGdlbmVyYXRlIHRoZSBh
bmltYXRpb24gaWRlbnRpZmllci4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCk6IE1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlTeW5jUmVxdWlyZWQpOiBNb3ZlZC4KKwogMjAxMC0wOS0y
MyAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRB
bmltYXRpb24uY3BwCmluZGV4IGRhMGE4MTBhOWRkM2IyMWJhNDAzNDlmNTBjNGQ1YmVlNjVmY2Q3
YTcuLjM0NjA3ZjZmMGIwOGM3N2ZlMmI2MGEzYjc4MDQ1ZWZjNmM2MGUzODIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0xMjAsNiArMTIwLDI1
IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zm
c2V0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6cGF1
c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgaWYgKCFtX29iamVjdCkKKyAg
ICAgICAgcmV0dXJuOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlm
IChtX29iamVjdC0+aGFzTGF5ZXIoKSkgeworICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0
b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fb2JqZWN0KS0+bGF5ZXIoKTsKKyAgICAgICAgaWYgKGxh
eWVyLT5pc0NvbXBvc2l0ZWQoKSkKKyAgICAgICAgICAgIGxheWVyLT5iYWNraW5nKCktPnRyYW5z
aXRpb25QYXVzZWQodGltZU9mZnNldCwgbV9hbmltYXRpbmdQcm9wZXJ0eSk7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0odGltZU9mZnNldCk7CisjZW5kaWYKKyAgICAvLyBSZXN0b3Jl
IHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKKyAgICBpZiAoIXBhdXNlZCgpKQorICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworfQorCiB2b2lkIElt
cGxpY2l0QW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRB
bmltYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaApp
bmRleCBiZTVjMTk3NjdiZTc5M2RkMmVjOTIxYjE5ZTM1ZTY1NzhkMzQ1MWVkLi5jNDBjMDBhNjQ2
M2E4MjAzYjU5NGE4MDNhMTQyYTdlZGM4YzkwMDRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBvbkFuaW1hdGlvbkVuZChkb3VibGUgZWxhcHNlZFRpbWUpOwogICAgIHZpcnR1
YWwgYm9vbCBzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVhbCB2
b2lkIHBhdXNlQW5pbWF0aW9uKGRvdWJsZSAvKnRpbWVPZmZzZXQqLykgeyB9CisgICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGRvdWJsZSAvKnRpbWVPZmZzZXQqLyk7CiAgICAgdmlydHVh
bCB2b2lkIGVuZEFuaW1hdGlvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoQ29tcG9z
aXRlQW5pbWF0aW9uKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRT
dHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmlt
YXRlZFN0eWxlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IGIwZjUyOWI0N2EzNDdmMzA0NmViNmRmY2ZhYmFiZDNhYWJhYjkwM2EuLmE4NzBmNWMw
MDJiYzNiYzYwNWQ3NzRkNzZiOTI0ODhlYWEyYzA2OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtMjQ2LDYgKzI0NiwxMiBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXI6OnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSQogICAgICAgICBtX2NsaWVudC0+cGFpbnRDb250ZW50cyh0aGlzLCBjb250
ZXh0LCBtX3BhaW50aW5nUGhhc2UsIGNsaXApOwogfQogCitTdHJpbmcgR3JhcGhpY3NMYXllcjo6
YW5pbWF0aW9uTmFtZUZvclRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQor
eworICAgIC8vIHwgaXMgbm90IGEgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXIgaW4gQ1NTLCBz
byB0aGlzIGNhbiBuZXZlciBjb25mbGljdCB3aXRoIGEga2V5ZnJhbWUgaWRlbnRpZmllci4KKyAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIi18dHJhbnNpdGlvbiVkLSIsIHByb3BlcnR5KTsKK30K
Kwogdm9pZCBHcmFwaGljc0xheWVyOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUpCiB7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDA0ODk5ZjI0NmZl
YzE2YmVlNjQ3NmUwZWMwOTE1OTgyY2U5NjU1ZGMuLjAyMTA4OGFlNmNiMGI5ZjFmYzBlY2U0NmY2
YTgwZmFkNzgyMmZlZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oCkBAIC0yODQsMTMgKzI4NCwxNiBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBjb250ZW50c1Jl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzUmVjdDsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcikgeyBtX2NvbnRlbnRzUmVjdCA9IHI7IH0K
ICAgICAKKyAgICAvLyBUcmFuc2l0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBhIHNwZWNpYWwgYW5p
bWF0aW9uIG5hbWUgdGhhdCBjYW5ub3QgY2xhc2ggd2l0aCBhIGtleWZyYW1lIGlkZW50aWZpZXIu
CisgICAgc3RhdGljIFN0cmluZyBhbmltYXRpb25OYW1lRm9yVHJhbnNpdGlvbihBbmltYXRlZFBy
b3BlcnR5SUQpOworICAgIAogICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBhbmltYXRpb24gaXMg
aGFuZGxlZCBieSB0aGUgY29tcG9zaXRpbmcgc3lzdGVtLiBJZiB0aGlzIHJldHVybnMKICAgICAv
LyBmYWxzZSwgdGhlIGFuaW1hdGlvbiB3aWxsIGJlIHJ1biBieSBBbmltYXRpb25Db250cm9sbGVy
LgotICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
LCBjb25zdCBJbnRTaXplJiAvKmJveFNpemUqLywgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3Ry
aW5nJiAvKmtleWZyYW1lc05hbWUqLywgZG91YmxlIC8qdGltZU9mZnNldCovKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb25zRm9yUHJvcGVydHkoQW5p
bWF0ZWRQcm9wZXJ0eUlEKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uc0Zv
cktleWZyYW1lcyhjb25zdCBTdHJpbmcmIC8qIGtleWZyYW1lc05hbWUgKi8pIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIC8qIGtleWZyYW1lc05hbWUg
Ki8sIGRvdWJsZSAvKnRpbWVPZmZzZXQqLykgeyB9Ci0gICAgCisgICAgLy8gVGhlc2UgbWV0aG9k
cyBoYW5kbGUgYm90aCB0cmFuc2l0aW9ucyBhbmQga2V5ZnJhbWUgYW5pbWF0aW9ucy4KKyAgICB2
aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3Qg
SW50U2l6ZSYgLypib3hTaXplKi8sIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgLyph
bmltYXRpb25OYW1lKi8sIGRvdWJsZSAvKnRpbWVPZmZzZXQqLykgIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgLyphbmltYXRp
b25OYW1lKi8sIGRvdWJsZSAvKnRpbWVPZmZzZXQqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIC8qYW5pbWF0aW9uTmFtZSovKSAgeyB9CisKICAg
ICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpOwogICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKCk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IDZmZjNmZjBmNWRmYjM2MzJiOTUx
NjM4YTZhMmE5NDIzNTdlYjZjNjYuLmZkNTZhN2MyODQ3OGJhNjNhZGQzYzEwOGYzMDc3NzU3MWQx
ZTdkYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
TGF5ZXJDQS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5
ZXJDQS5oCkBAIC05NiwxMSArOTYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1h
dGlvbnMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qLCBjb25z
dCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQW5pbWF0aW9uc0ZvclByb3BlcnR5KEFuaW1hdGVkUHJvcGVydHlJRCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbnNGb3JLZXlmcmFtZXMoY29uc3QgU3RyaW5n
JiBrZXlmcmFtZXNOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3Qg
U3RyaW5nJiBrZXlmcmFtZXNOYW1lLCBkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgCisgICAgdmly
dHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IElu
dFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlv
bihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7
CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0ltYWdlKEltYWdlKik7CiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKik7CiAgICAgdmlydHVh
bCB2b2lkIHNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciopOwpAQCAtMTM3LDggKzEz
Niw4IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJNYXAqIHByaW1hcnlMYXllckNsb25lcygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJhbExheWVyLmdldCgpID8gbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9u
ZXMuZ2V0KCkgOiBtX2xheWVyQ2xvbmVzLmdldCgpOyB9CiAgICAgTGF5ZXJNYXAqIGFuaW1hdGVk
TGF5ZXJDbG9uZXMoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdDsKIAotICAgIGJv
b2wgY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYs
IGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRp
bWVPZmZzZXQpOwotICAgIGJvb2wgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFt
ZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJp
bmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hT
aXplKTsKKyAgICBib29sIGNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmLCBjb25zdCBBbmltYXRpb24qLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlv
bnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCwgY29uc3Qg
SW50U2l6ZSYgYm94U2l6ZSk7CiAKICAgICAvLyBSZXR1cm4gYXV0b3JlbGVhc2VkIGFuaW1hdGlv
biAodXNlIFJldGFpblB0cj8pCiAgICAgQ0FCYXNpY0FuaW1hdGlvbiogY3JlYXRlQmFzaWNBbmlt
YXRpb24oY29uc3QgQW5pbWF0aW9uKiwgQW5pbWF0ZWRQcm9wZXJ0eUlELCBib29sIGFkZGl0aXZl
KTsKQEAgLTE1Myw5ICsxNTIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5p
bWF0aW9uRW5kcG9pbnRzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9u
KiwgQ0FCYXNpY0FuaW1hdGlvbiosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRp
b246Ok9wZXJhdGlvblR5cGUsIGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUm
IGJveFNpemUpOwogICAgIGJvb2wgc2V0VHJhbnNmb3JtQW5pbWF0aW9uS2V5ZnJhbWVzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgQW5pbWF0aW9uKiwgQ0FLZXlmcmFtZUFuaW1hdGlv
biosIGludCBmdW5jdGlvbkluZGV4LCBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUs
IGJvb2wgaXNNYXRyaXhBbmltYXRpb24sIGNvbnN0IEludFNpemUmIGJveFNpemUpOwogICAgIAot
ICAgIGJvb2wgYW5pbWF0aW9uSXNSdW5uaW5nKGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSkg
Y29uc3QKKyAgICBib29sIGFuaW1hdGlvbklzUnVubmluZyhjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9ydW5uaW5nS2V5ZnJhbWVBbmlt
YXRpb25zLmZpbmQoa2V5ZnJhbWVzTmFtZSkgIT0gbV9ydW5uaW5nS2V5ZnJhbWVBbmltYXRpb25z
LmVuZCgpOworICAgICAgICByZXR1cm4gbV9ydW5uaW5nQW5pbWF0aW9ucy5maW5kKGFuaW1hdGlv
bk5hbWUpICE9IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7CiAgICAgfQogCiAgICAgdm9pZCBj
b21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMoKTsKQEAgLTI3MSwxMyArMjcwLDEzIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTdHJ1Y3R1cmFsTGF5ZXIoU3RydWN0dXJhbExheWVy
UHVycG9zZSk7CiAgICAgU3RydWN0dXJhbExheWVyUHVycG9zZSBzdHJ1Y3R1cmFsTGF5ZXJQdXJw
b3NlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbk9uTGF5ZXIoQ0FQcm9wZXJ0eUFu
aW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNOYW1l
LCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICBib29sIHJlbW92ZUFuaW1hdGlv
bkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFt
ZSwgaW50IGluZGV4KTsKLSAgICB2b2lkIHBhdXNlQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgaW50IGluZGV4LCBkb3VibGUg
dGltZU9mZnNldCk7CisgICAgdm9pZCBzZXRDQUFuaW1hdGlvbk9uTGF5ZXIoQ0FQcm9wZXJ0eUFu
aW1hdGlvbiosIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBpbnQgaW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICBib29sIHJlbW92
ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgpOworICAgIHZvaWQgcGF1c2VDQUFuaW1h
dGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpOwogCiAgICAgZW51bSBN
b3ZlT3JDb3B5IHsgTW92ZSwgQ29weSB9OworICAgIHN0YXRpYyB2b2lkIG1vdmVPckNvcHlMYXll
ckFuaW1hdGlvbihNb3ZlT3JDb3B5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIs
IENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXllciAqdG9MYXllcik7CiAgICAgdm9pZCBtb3ZlT3JD
b3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHksIEFuaW1hdGVkUHJvcGVydHlJRCBw
cm9wZXJ0eSwgQ0FMYXllciAqIGZyb21MYXllciwgQ0FMYXllciAqIHRvTGF5ZXIpOwotICAgIHN0
YXRpYyB2b2lkIG1vdmVPckNvcHlBbGxBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSBv
cGVyYXRpb24sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBrZXlm
cmFtZXNOYW1lLCBDQUxheWVyICogZnJvbUxheWVyLCBDQUxheWVyICogdG9MYXllcik7CiAgICAg
CiAgICAgZW51bSBMYXllckNoYW5nZSB7CiAgICAgICAgIE5vQ2hhbmdlID0gMCwKQEAgLTMzNSwy
OSArMzM0LDI5IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fdW5jb3Jy
ZWN0ZWRDb250ZW50c0ltYWdlOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX3BlbmRpbmdD
b250ZW50c0ltYWdlOwogICAgIAotICAgIHN0cnVjdCBMYXllckFuaW1hdGlvbiB7Ci0gICAgICAg
IExheWVyQW5pbWF0aW9uKENBUHJvcGVydHlBbmltYXRpb24qIGNhQW5pbSwgY29uc3QgU3RyaW5n
JiBrZXlmcmFtZXNOYW1lLCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGludCBpbmRleCwg
ZG91YmxlIHRpbWVPZmZzZXQpCisgICAgLy8gVGhpcyByZXByZXNlbnRzIHRoZSBhbmltYXRpb24g
b2YgYSBzaW5nbGUgcHJvcGVydHkuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSB0cmFuc2Zvcm0gYW5p
bWF0aW9ucyBmb3IKKyAgICAvLyBhIHNpbmdsZSB0cmFuc2l0aW9uIG9yIGtleWZyYW1lIGFuaW1h
dGlvbiwgc28gaW5kZXggaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGVzZS4KKyAgICBzdHJ1Y3Qg
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiB7CisgICAgICAgIExheWVyUHJvcGVydHlBbmltYXRpb24o
Q0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgaW50IGluZGV4LCBkb3VibGUgdGltZU9mZnNl
dCkKICAgICAgICAgOiBtX2FuaW1hdGlvbihjYUFuaW0pCi0gICAgICAgICwgbV9rZXlmcmFtZXNO
YW1lKGtleWZyYW1lc05hbWUpCisgICAgICAgICwgbV9uYW1lKGFuaW1hdGlvbk5hbWUpCiAgICAg
ICAgICwgbV9wcm9wZXJ0eShwcm9wZXJ0eSkKICAgICAgICAgLCBtX2luZGV4KGluZGV4KQogICAg
ICAgICAsIG1fdGltZU9mZnNldCh0aW1lT2Zmc2V0KQogICAgICAgICB7IH0KIAogICAgICAgICBS
ZXRhaW5QdHI8Q0FQcm9wZXJ0eUFuaW1hdGlvbio+IG1fYW5pbWF0aW9uOwotICAgICAgICBTdHJp
bmcgbV9rZXlmcmFtZXNOYW1lOworICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgICAgICBBbmlt
YXRlZFByb3BlcnR5SUQgbV9wcm9wZXJ0eTsKICAgICAgICAgaW50IG1faW5kZXg7CiAgICAgICAg
IGRvdWJsZSBtX3RpbWVPZmZzZXQ7CiAgICAgfTsKICAgICAKLSAgICBWZWN0b3I8TGF5ZXJBbmlt
YXRpb24+IG1fdW5jb21pdHRlZEFuaW1hdGlvbnM7Ci0gICAgCi0gICAgLy8gQW5pbWF0aW9ucyBv
biB0aGUgbGF5ZXIgYXJlIGlkZW50aWZpZWQgYnkgcHJvcGVydHkgKyBpbmRleC4KLSAgICB0eXBl
ZGVmIGludCBBbmltYXRlZFByb3BlcnR5OyAgIC8vIHN0ZCBjb250YWluZXJzIGNob2tlIG9uIHRo
ZSBBbmltYXRlZFByb3BlcnR5SUQgZW51bQotICAgIHR5cGVkZWYgcGFpcjxBbmltYXRlZFByb3Bl
cnR5LCBpbnQ+IEFuaW1hdGlvblBhaXI7CisgICAgLy8gVW5jb21taXR0ZWQgdHJhbnNpdGlvbnMg
YW5kIGFuaW1hdGlvbnMuCisgICAgVmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+IG1fdW5j
b21pdHRlZEFuaW1hdGlvbnM7CiAKLSAgICBIYXNoU2V0PEFuaW1hdGVkUHJvcGVydHk+IG1fdHJh
bnNpdGlvblByb3BlcnRpZXNUb1JlbW92ZTsKKyAgICB0eXBlZGVmIGludCBBbmltYXRlZFByb3Bl
cnR5OyAvLyBzdGQgY29udGFpbmVycyBjaG9rZSBvbiB0aGUgQW5pbWF0ZWRQcm9wZXJ0eUlEIGVu
dW0KKyAgICB0eXBlZGVmIHBhaXI8QW5pbWF0ZWRQcm9wZXJ0eSwgaW50PiBQcm9wZXJ0eUFuaW1h
dGlvblBhaXI7IC8vIHBhaXIgb2YgcHJvcGVydHksIGluZGV4CiAgICAgCiAgICAgZW51bSBBY3Rp
b24geyBSZW1vdmUsIFBhdXNlIH07CiAgICAgc3RydWN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rp
b24gewpAQCAtMzY3LDE1ICszNjYsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9
CiAgICAgICAgIEFjdGlvbiBhY3Rpb247Ci0gICAgICAgIGRvdWJsZSB0aW1lT2Zmc2V0OyAgICAg
IC8vIG9ubHkgdXNlZCBmb3IgcGF1c2UKKyAgICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7IC8vIG9u
bHkgdXNlZCBmb3IgcGF1c2UKICAgICB9OwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFu
aW1hdGlvblByb2Nlc3NpbmdBY3Rpb24+IEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA7Ci0gICAgQW5p
bWF0aW9uc1RvUHJvY2Vzc01hcCBtX2tleWZyYW1lQW5pbWF0aW9uc1RvUHJvY2VzczsKKyAgICBB
bmltYXRpb25zVG9Qcm9jZXNzTWFwIG1fYW5pbWF0aW9uc1RvUHJvY2VzczsKKworICAgIC8vIE1h
cCBvZiBhbmltYXRpb24gbmFtZXMgdG8gdGhlaXIgYXNzb2NpYXRlZCBsaXN0cyBvZiBwcm9wZXJ0
eSBhbmltYXRpb25zLCBzbyB3ZSBjYW4gcmVtb3ZlL3BhdXNlIHRoZW0uCisgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPFByb3BlcnR5QW5pbWF0aW9uUGFpcj4gPiBBbmltYXRpb25z
TWFwOworICAgIEFuaW1hdGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0aW9uczsKIAotICAgIC8vIE1h
cCBvZiBrZXlmcmFtZSBuYW1lcyB0byB0aGVpciBhc3NvY2lhdGVkIGxpc3RzIG9mIGFuaW1hdGlv
bnMgZm9yIHJ1bm5pbmcgYW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92ZS9wYXVzZSB0aGVtLgot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxBbmltYXRpb25QYWlyPiA+IEtleWZy
YW1lQW5pbWF0aW9uc01hcDsKLSAgICBLZXlmcmFtZUFuaW1hdGlvbnNNYXAgbV9ydW5uaW5nS2V5
ZnJhbWVBbmltYXRpb25zOwotICAgIAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0
czsKICAgICAKICAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1t
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4
IDM5NWE2OTE4ZDFiZmIxMGFkOGFlOTYzMTUwMjRlZTg4MDQ0ZmY1NTkuLmQ4ZWY2ZTgwMmUyYzJk
NmUzZjRhMmNkYzQ2YjcyMWI5MGI3ZWQ5YjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KQEAgLTI0NywxNyArMjQ3LDExIEBAIHN0YXRp
YyBTdHJpbmcgcHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkK
ICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyBTdHJpbmcgYW5pbWF0aW9uSWRlbnRpZmllcihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwg
aW50IGluZGV4KQorc3RhdGljIFN0cmluZyBhbmltYXRpb25JZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKIAotICAgIGJ1aWxkZXIuYXBwZW5kKHByb3BlcnR5SWRUb1N0cmluZyhwcm9wZXJ0eSkpOwot
ICAgIGJ1aWxkZXIuYXBwZW5kKCJfIik7Ci0KLSAgICBpZiAoIWtleWZyYW1lc05hbWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKGtleWZyYW1lc05hbWUpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZCgiXyIpOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZChhbmltYXRpb25O
YW1lKTsKICAgICBidWlsZGVyLmFwcGVuZCgiXyIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6bnVtYmVyKGluZGV4KSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTU1
MCwzOSArNTQ0LDQwIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRDaGlsZHJlblRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVy
Q0E6Om1vdmVPckNvcHlBbGxBbmltYXRpb25zRm9yUHJvcGVydHkoTW92ZU9yQ29weSBvcGVyYXRp
b24sIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBrZXlmcmFtZXNO
YW1lLCBDQUxheWVyICpmcm9tTGF5ZXIsIENBTGF5ZXIgKnRvTGF5ZXIpCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKE1vdmVPckNvcHkgb3BlcmF0aW9uLCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbklkZW50aWZpZXIsIENBTGF5ZXIgKmZyb21MYXllciwgQ0FM
YXllciAqdG9MYXllcikKIHsKLSAgICBmb3IgKGludCBpbmRleCA9IDA7IDsgKytpbmRleCkgewot
ICAgICAgICBTdHJpbmcgYW5pbU5hbWUgPSBhbmltYXRpb25JZGVudGlmaWVyKHByb3BlcnR5LCBr
ZXlmcmFtZXNOYW1lLCBpbmRleCk7CisgICAgTlNTdHJpbmcqIGFuaW1hdGlvbklEID0gYW5pbWF0
aW9uSWRlbnRpZmllcjsKKyAgICBDQUFuaW1hdGlvbiogYW5pbSA9IFtmcm9tTGF5ZXIgYW5pbWF0
aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICBpZiAoIWFuaW0pCisgICAgICAgIHJldHVybjsK
IAotICAgICAgICBDQUFuaW1hdGlvbiogYW5pbSA9IFtmcm9tTGF5ZXIgYW5pbWF0aW9uRm9yS2V5
OmFuaW1OYW1lXTsKLSAgICAgICAgaWYgKCFhbmltKQorICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7
CisgICAgICAgIGNhc2UgTW92ZToKKyAgICAgICAgICAgIFthbmltIHJldGFpbl07CisgICAgICAg
ICAgICBbZnJvbUxheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07CisgICAg
ICAgICAgICBbdG9MYXllciBhZGRBbmltYXRpb246YW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwor
ICAgICAgICAgICAgW2FuaW0gcmVsZWFzZV07CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgICAgICAgICAgY2FzZSBNb3ZlOgotICAgICAgICAg
ICAgICAgIFthbmltIHJldGFpbl07Ci0gICAgICAgICAgICAgICAgW2Zyb21MYXllciByZW1vdmVB
bmltYXRpb25Gb3JLZXk6YW5pbU5hbWVdOwotICAgICAgICAgICAgICAgIFt0b0xheWVyIGFkZEFu
aW1hdGlvbjphbmltIGZvcktleTphbmltTmFtZV07Ci0gICAgICAgICAgICAgICAgW2FuaW0gcmVs
ZWFzZV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgQ29weToK
LSAgICAgICAgICAgICAgICBbdG9MYXllciBhZGRBbmltYXRpb246YW5pbSBmb3JLZXk6YW5pbU5h
bWVdOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGNhc2UgQ29w
eToKKyAgICAgICAgICAgIFt0b0xheWVyIGFkZEFuaW1hdGlvbjphbmltIGZvcktleTphbmltYXRp
b25JRF07CisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNBOjptb3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9u
LCBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIENBTGF5ZXIgKmZyb21MYXllciwgQ0FMYXll
ciAqdG9MYXllcikKIHsKLSAgICAvLyBNb3ZlIHRyYW5zaXRpb25zIGZvciB0aGlzIHByb3BlcnR5
LgotICAgIG1vdmVPckNvcHlBbGxBbmltYXRpb25zRm9yUHJvcGVydHkob3BlcmF0aW9uLCBwcm9w
ZXJ0eSwgIiIsIGZyb21MYXllciwgdG9MYXllcik7Ci0gICAgCiAgICAgLy8gTG9vayBmb3IgcnVu
bmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHByb3BlcnR5LgotICAgIEtleWZyYW1lQW5p
bWF0aW9uc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9ydW5uaW5nS2V5ZnJhbWVBbmltYXRp
b25zLmVuZCgpOwotICAgIGZvciAoS2V5ZnJhbWVBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fcnVubmluZ0tleWZyYW1lQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIG1vdmVPckNvcHlBbGxBbmltYXRpb25zRm9yUHJvcGVydHkob3BlcmF0aW9u
LCBwcm9wZXJ0eSwgaXQtPmZpcnN0LCBmcm9tTGF5ZXIsIHRvTGF5ZXIpOworICAgIEFuaW1hdGlv
bnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCk7Cisg
ICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcnVubmluZ0FuaW1h
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxQ
cm9wZXJ0eUFuaW1hdGlvblBhaXI+JiBwcm9wZXJ0eUFuaW1hdGlvbnMgPSBpdC0+c2Vjb25kOwor
ICAgICAgICBzaXplX3QgbnVtQW5pbWF0aW9ucyA9IHByb3BlcnR5QW5pbWF0aW9ucy5zaXplKCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQW5pbWF0aW9uczsgKytpKSB7Cisg
ICAgICAgICAgICBjb25zdCBQcm9wZXJ0eUFuaW1hdGlvblBhaXImIGN1cnJQYWlyID0gcHJvcGVy
dHlBbmltYXRpb25zW2ldOworICAgICAgICAgICAgaWYgKGN1cnJQYWlyLmZpcnN0ID09IHByb3Bl
cnR5KQorICAgICAgICAgICAgICAgIG1vdmVPckNvcHlMYXllckFuaW1hdGlvbihvcGVyYXRpb24s
IGFuaW1hdGlvbklkZW50aWZpZXIoaXQtPmZpcnN0LCBjdXJyUGFpci5zZWNvbmQpLCBmcm9tTGF5
ZXIsIHRvTGF5ZXIpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKQEAgLTcwNCw4ICs2OTksMTAgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiByZWN0
KQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChDb250ZW50c1JlY3RDaGFuZ2VkKTsKIH0K
IAotYm9vbCBHcmFwaGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24q
IGFuaW0sIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiti
b29sIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKKyAg
ICBBU1NFUlQoIWFuaW1hdGlvbk5hbWUuaXNFbXB0eSgpKTsKKwogICAgIGlmIChmb3JjZVNvZnR3
YXJlQW5pbWF0aW9uKCkgfHwgIWFuaW0gfHwgYW5pbS0+aXNFbXB0eU9yWmVyb0R1cmF0aW9uKCkg
fHwgdmFsdWVMaXN0LnNpemUoKSA8IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzIz
LDkgKzcyMCw5IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjphZGRBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgSW50CiAKICAgICBib29sIGNyZWF0ZWRB
bmltYXRpb25zID0gZmFsc2U7CiAgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCi0gICAgICAgIGNyZWF0ZWRBbmltYXRpb25zID0g
Y3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uc0Zyb21LZXlmcmFtZXModmFsdWVMaXN0LCBhbmltLCBr
ZXlmcmFtZXNOYW1lLCB0aW1lT2Zmc2V0LCBib3hTaXplKTsKKyAgICAgICAgY3JlYXRlZEFuaW1h
dGlvbnMgPSBjcmVhdGVUcmFuc2Zvcm1BbmltYXRpb25zRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3Qs
IGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQsIGJveFNpemUpOwogICAgIGVsc2UKLSAg
ICAgICAgY3JlYXRlZEFuaW1hdGlvbnMgPSBjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKHZh
bHVlTGlzdCwgYW5pbSwga2V5ZnJhbWVzTmFtZSwgdGltZU9mZnNldCk7CisgICAgICAgIGNyZWF0
ZWRBbmltYXRpb25zID0gY3JlYXRlQW5pbWF0aW9uRnJvbUtleWZyYW1lcyh2YWx1ZUxpc3QsIGFu
aW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOwogCiAgICAgaWYgKGNyZWF0ZWRBbmltYXRp
b25zKQogICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoQW5pbWF0aW9uQ2hhbmdlZCk7
CkBAIC03MzMsNDEgKzczMCwzMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6YWRkQW5pbWF0aW9u
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEludAogICAgIHJldHVy
biBjcmVhdGVkQW5pbWF0aW9uczsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFu
aW1hdGlvbnNGb3JQcm9wZXJ0eShBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCi17Ci0gICAg
aWYgKG1fdHJhbnNpdGlvblByb3BlcnRpZXNUb1JlbW92ZS5maW5kKHByb3BlcnR5KSAhPSBtX3Ry
YW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmUuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fdHJhbnNpdGlvblByb3BlcnRpZXNUb1JlbW92ZS5hZGQocHJvcGVydHkpOwotICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbnNGb3JLZXlmcmFtZXMoY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lKQordm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgaWYgKCFhbmlt
YXRpb25Jc1J1bm5pbmcoYW5pbWF0aW9uTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
a2V5ZnJhbWVBbmltYXRpb25zVG9Qcm9jZXNzLmFkZChhbmltYXRpb25OYW1lLCBBbmltYXRpb25Q
cm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOwotICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChB
bmltYXRpb25DaGFuZ2VkKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQW5pbWF0
aW9uKGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCi17Ci0g
ICAgaWYgKCFhbmltYXRpb25Jc1J1bm5pbmcoa2V5ZnJhbWVzTmFtZSkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFuaW1hdGlvbnNUb1Byb2Nlc3NNYXA6Oml0ZXJhdG9yIGl0ID0gbV9rZXlmcmFt
ZUFuaW1hdGlvbnNUb1Byb2Nlc3MuZmluZChrZXlmcmFtZXNOYW1lKTsKLSAgICBpZiAoaXQgIT0g
bV9rZXlmcmFtZUFuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsKKyAgICBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwOjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5maW5kKGFuaW1h
dGlvbk5hbWUpOworICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCkpIHsK
ICAgICAgICAgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbiYgcHJvY2Vzc2luZ0luZm8gPSBpdC0+
c2Vjb25kOwogICAgICAgICAvLyBJZiBhbiBhbmltYXRpb24gaXMgc2NoZWR1bGVkIHRvIGJlIHJl
bW92ZWQsIGRvbid0IGNoYW5nZSB0aGUgcmVtb3ZlIHRvIGEgcGF1c2UuCiAgICAgICAgIGlmIChw
cm9jZXNzaW5nSW5mby5hY3Rpb24gIT0gUmVtb3ZlKQogICAgICAgICAgICAgcHJvY2Vzc2luZ0lu
Zm8uYWN0aW9uID0gUGF1c2U7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fa2V5ZnJhbWVBbmltYXRp
b25zVG9Qcm9jZXNzLmFkZChrZXlmcmFtZXNOYW1lLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9u
KFBhdXNlLCB0aW1lT2Zmc2V0KSk7CisgICAgICAgIG1fYW5pbWF0aW9uc1RvUHJvY2Vzcy5hZGQo
YW5pbWF0aW9uTmFtZSwgQW5pbWF0aW9uUHJvY2Vzc2luZ0FjdGlvbihQYXVzZSwgdGltZU9mZnNl
dCkpOwogCiAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEFuaW1hdGlvbkNoYW5nZWQpOwog
fQogCit2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSkKK3sKKyAgICBpZiAoIWFuaW1hdGlvbklzUnVubmluZyhhbmltYXRpb25O
YW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmFkZChh
bmltYXRpb25OYW1lLCBBbmltYXRpb25Qcm9jZXNzaW5nQWN0aW9uKFJlbW92ZSkpOworICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2VkKTsKK30KKwogdm9pZCBHcmFw
aGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgaWYg
KGltYWdlKSB7CkBAIC0xNDk2LDY4ICsxNDg0LDQ5IEBAIENBTGF5ZXIgKkdyYXBoaWNzTGF5ZXJD
QTo6cmVwbGljYXRlZExheWVyUm9vdChSZXBsaWNhU3RhdGUmIHJlcGxpY2FTdGF0ZSkKIAogdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUxheWVyQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKG1f
dHJhbnNpdGlvblByb3BlcnRpZXNUb1JlbW92ZS5zaXplKCkpIHsKLSAgICAgICAgSGFzaFNldDxp
bnQ+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RyYW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmUu
ZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxBbmltYXRlZFByb3BlcnR5Pjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX3RyYW5zaXRpb25Qcm9wZXJ0aWVzVG9SZW1vdmUuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBBbmltYXRlZFByb3BlcnR5SUQgY3VyclByb3BlcnR5
ID0gc3RhdGljX2Nhc3Q8QW5pbWF0ZWRQcm9wZXJ0eUlEPigqaXQpOwotICAgICAgICAgICAgLy8g
UmVtb3ZlIGFsbCBhbmltYXRpb25zIHdpdGggdGhpcyBwcm9wZXJ0eSBpbiB0aGUga2V5LgotICAg
ICAgICAgICAgZm9yIChpbnQgaW5kZXggPSAwOyA7ICsraW5kZXgpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIXJlbW92ZUFuaW1hdGlvbkZyb21MYXllcihjdXJyUHJvcGVydHksICIiLCBpbmRleCkp
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgbV90cmFuc2l0aW9uUHJvcGVydGllc1RvUmVtb3ZlLmNsZWFyKCk7Ci0gICAgfQot
Ci0gICAgaWYgKG1fa2V5ZnJhbWVBbmltYXRpb25zVG9Qcm9jZXNzLnNpemUoKSkgewotICAgICAg
ICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2tleWZyYW1l
QW5pbWF0aW9uc1RvUHJvY2Vzcy5lbmQoKTsKLSAgICAgICAgZm9yIChBbmltYXRpb25zVG9Qcm9j
ZXNzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zVG9Qcm9jZXNz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBj
dXJyS2V5ZnJhbWVOYW1lID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgS2V5ZnJhbWVBbmltYXRp
b25zTWFwOjppdGVyYXRvciBhbmltYXRpb25JdCA9IG1fcnVubmluZ0tleWZyYW1lQW5pbWF0aW9u
cy5maW5kKGN1cnJLZXlmcmFtZU5hbWUpOwotICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0ID09
IG1fcnVubmluZ0tleWZyYW1lQW5pbWF0aW9ucy5lbmQoKSkKKyAgICBpZiAobV9hbmltYXRpb25z
VG9Qcm9jZXNzLnNpemUoKSkgeworICAgICAgICBBbmltYXRpb25zVG9Qcm9jZXNzTWFwOjpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnNUb1Byb2Nlc3MuZW5kKCk7CisgICAgICAgIGZv
ciAoQW5pbWF0aW9uc1RvUHJvY2Vzc01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlv
bnNUb1Byb2Nlc3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIGN1cnJBbmltYXRpb25OYW1lID0gaXQtPmZpcnN0OworICAgICAgICAgICAgQW5p
bWF0aW9uc01hcDo6aXRlcmF0b3IgYW5pbWF0aW9uSXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZp
bmQoY3VyckFuaW1hdGlvbk5hbWUpOworICAgICAgICAgICAgaWYgKGFuaW1hdGlvbkl0ID09IG1f
cnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGNvbnN0IEFuaW1hdGlvblByb2Nlc3NpbmdBY3Rpb24mIHByb2Nlc3NpbmdJbmZv
ID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxBbmltYXRpb25QYWlyPiYg
YW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5zZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8UHJvcGVydHlBbmltYXRpb25QYWlyPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5zZWNv
bmQ7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbnMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25QYWlyJiBjdXJyUGFpciA9
IGFuaW1hdGlvbnNbaV07CisgICAgICAgICAgICAgICAgY29uc3QgUHJvcGVydHlBbmltYXRpb25Q
YWlyJiBjdXJyUGFpciA9IGFuaW1hdGlvbnNbaV07CiAgICAgICAgICAgICAgICAgc3dpdGNoIChw
cm9jZXNzaW5nSW5mby5hY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBSZW1vdmU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVBbmltYXRpb25Gcm9tTGF5ZXIoc3RhdGlj
X2Nhc3Q8QW5pbWF0ZWRQcm9wZXJ0eUlEPihjdXJyUGFpci5maXJzdCksIGN1cnJLZXlmcmFtZU5h
bWUsIGN1cnJQYWlyLnNlY29uZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFu
aW1hdGlvbkZyb21MYXllcihzdGF0aWNfY2FzdDxBbmltYXRlZFByb3BlcnR5SUQ+KGN1cnJQYWly
LmZpcnN0KSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJQYWlyLnNlY29uZCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQYXVzZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQW5pbWF0aW9uT25MYXllcihzdGF0aWNfY2FzdDxB
bmltYXRlZFByb3BlcnR5SUQ+KGN1cnJQYWlyLmZpcnN0KSwgY3VycktleWZyYW1lTmFtZSwgY3Vy
clBhaXIuc2Vjb25kLCBwcm9jZXNzaW5nSW5mby50aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKHN0YXRpY19jYXN0PEFuaW1hdGVkUHJv
cGVydHlJRD4oY3VyclBhaXIuZmlyc3QpLCBjdXJyQW5pbWF0aW9uTmFtZSwgY3VyclBhaXIuc2Vj
b25kLCBwcm9jZXNzaW5nSW5mby50aW1lT2Zmc2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKHByb2Nlc3NpbmdJbmZvLmFjdGlvbiA9PSBSZW1vdmUpCi0gICAgICAgICAgICAgICAgbV9y
dW5uaW5nS2V5ZnJhbWVBbmltYXRpb25zLnJlbW92ZShjdXJyS2V5ZnJhbWVOYW1lKTsKKyAgICAg
ICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLnJlbW92ZShjdXJyQW5pbWF0aW9uTmFtZSk7
CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnNUb1Byb2Nlc3Mu
Y2xlYXIoKTsKKyAgICAgICAgbV9hbmltYXRpb25zVG9Qcm9jZXNzLmNsZWFyKCk7CiAgICAgfQog
ICAgIAogICAgIHNpemVfdCBudW1BbmltYXRpb25zOwogICAgIGlmICgobnVtQW5pbWF0aW9ucyA9
IG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuc2l6ZSgpKSkgewogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bUFuaW1hdGlvbnM7ICsraSkgewotICAgICAgICAgICAgY29uc3QgTGF5ZXJB
bmltYXRpb24mIHBlbmRpbmdBbmltYXRpb24gPSBtX3VuY29taXR0ZWRBbmltYXRpb25zW2ldOwot
ICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcihwZW5kaW5nQW5pbWF0aW9uLm1fYW5pbWF0
aW9uLmdldCgpLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRpb24u
bV9rZXlmcmFtZXNOYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgsIHBlbmRpbmdBbmltYXRp
b24ubV90aW1lT2Zmc2V0KTsKKyAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRp
b24mIHBlbmRpbmdBbmltYXRpb24gPSBtX3VuY29taXR0ZWRBbmltYXRpb25zW2ldOworICAgICAg
ICAgICAgc2V0Q0FBbmltYXRpb25PbkxheWVyKHBlbmRpbmdBbmltYXRpb24ubV9hbmltYXRpb24u
Z2V0KCksIHBlbmRpbmdBbmltYXRpb24ubV9wcm9wZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25h
bWUsIHBlbmRpbmdBbmltYXRpb24ubV9pbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZz
ZXQpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXBlbmRpbmdBbmltYXRpb24ubV9r
ZXlmcmFtZXNOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMg
YSBrZXlmcmFtZSBhbmltLCB3ZSBoYXZlIHRvIHJlbWVtYmVyIHRoZSBhc3NvY2lhdGlvbiBvZiBr
ZXlmcmFtZXMgbmFtZSB0byBwcm9wZXJ0eS9pbmRleCBwYWlycywKLSAgICAgICAgICAgICAgICAv
LyBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBhbmltYXRpb25zIGxhdGVyIGlmIG5lZWRlZC4KLSAgICAg
ICAgICAgICAgICAvLyBGb3IgdHJhbnNpdGlvbnMsIHdlIGNhbiBqdXN0IGdlbmVyYXRlIGFuaW1h
dGlvbiBuYW1lcyB3aXRoIHByb3BlcnR5IGFuZCBpbmRleC4KLSAgICAgICAgICAgICAgICBLZXlm
cmFtZUFuaW1hdGlvbnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydW5uaW5nS2V5ZnJhbWVBbmltYXRp
b25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5tX2tleWZyYW1lc05hbWUpOwotICAgICAgICAgICAg
ICAgIGlmIChpdCA9PSBtX3J1bm5pbmdLZXlmcmFtZUFuaW1hdGlvbnMuZW5kKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPEFuaW1hdGlvblBhaXI+IGZpcnN0UGFpcjsKLSAgICAgICAg
ICAgICAgICAgICAgZmlyc3RQYWlyLmFwcGVuZChBbmltYXRpb25QYWlyKHBlbmRpbmdBbmltYXRp
b24ubV9wcm9wZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4KSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fcnVubmluZ0tleWZyYW1lQW5pbWF0aW9ucy5hZGQocGVuZGluZ0FuaW1hdGlvbi5t
X2tleWZyYW1lc05hbWUsIGZpcnN0UGFpcik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgVmVjdG9yPEFuaW1hdGlvblBhaXI+JiBhbmltUGFpcnMgPSBpdC0+
c2Vjb25kOwotICAgICAgICAgICAgICAgICAgICBhbmltUGFpcnMuYXBwZW5kKEFuaW1hdGlvblBh
aXIocGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgp
KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRv
ciBpdCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7
CisgICAgICAgICAgICBpZiAoaXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgeworICAg
ICAgICAgICAgICAgIFZlY3RvcjxQcm9wZXJ0eUFuaW1hdGlvblBhaXI+IGZpcnN0UGFpcjsKKyAg
ICAgICAgICAgICAgICBmaXJzdFBhaXIuYXBwZW5kKFByb3BlcnR5QW5pbWF0aW9uUGFpcihwZW5k
aW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9pbmRleCkpOworICAg
ICAgICAgICAgICAgIG1fcnVubmluZ0FuaW1hdGlvbnMuYWRkKHBlbmRpbmdBbmltYXRpb24ubV9u
YW1lLCBmaXJzdFBhaXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBW
ZWN0b3I8UHJvcGVydHlBbmltYXRpb25QYWlyPiYgYW5pbVBhaXJzID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgICAgICAgICBhbmltUGFpcnMuYXBwZW5kKFByb3BlcnR5QW5pbWF0aW9uUGFpcihwZW5k
aW5nQW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9pbmRleCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMTU2NSwxNiArMTUzNCwxNiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5ZXJBbmltYXRpb25zKCkKICAgICB9CiB9CiAK
LXZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmlt
YXRpb24qIGNhQW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcm
IGtleWZyYW1lc05hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit2b2lkIEdyYXBo
aWNzTGF5ZXJDQTo6c2V0Q0FBbmltYXRpb25PbkxheWVyKENBUHJvcGVydHlBbmltYXRpb24qIGNh
QW5pbSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgUGxhdGZvcm1MYXll
ciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsKIAogICAgIFtjYUFuaW0gc2V0VGlt
ZU9mZnNldDp0aW1lT2Zmc2V0XTsKICAgICAKLSAgICBTdHJpbmcgYW5pbWF0aW9uTmFtZSA9IGFu
aW1hdGlvbklkZW50aWZpZXIocHJvcGVydHksIGtleWZyYW1lc05hbWUsIGluZGV4KTsKKyAgICBT
dHJpbmcgYW5pbWF0aW9uSUQgPSBhbmltYXRpb25JZGVudGlmaWVyKGFuaW1hdGlvbk5hbWUsIGlu
ZGV4KTsKICAgICAKLSAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbk5h
bWVdOwotICAgIFtsYXllciBhZGRBbmltYXRpb246Y2FBbmltIGZvcktleTphbmltYXRpb25OYW1l
XTsKKyAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKKyAgICBb
bGF5ZXIgYWRkQW5pbWF0aW9uOmNhQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOwogCiAgICAgaWYg
KExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkp
IHsKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyQ2xvbmVNYXAt
PmVuZCgpOwpAQCAtMTU4Myw4ICsxNTUyLDggQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFu
aW1hdGlvbk9uTGF5ZXIoQ0FQcm9wZXJ0eUFuaW1hdGlvbiogY2FBbmltLCBBbmltYXRlZFAKICAg
ICAgICAgICAgIGlmIChtX3JlcGxpY2FMYXllciAmJiBpc1JlcGxpY2F0ZWRSb290Q2xvbmUoaXQt
PmZpcnN0KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIENBTGF5ZXIg
KmN1cnJMYXllciA9IGl0LT5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgICAgICBbY3VyckxheWVyIHJl
bW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25OYW1lXTsKLSAgICAgICAgICAgIFtjdXJyTGF5
ZXIgYWRkQW5pbWF0aW9uOmNhQW5pbSBmb3JLZXk6YW5pbWF0aW9uTmFtZV07CisgICAgICAgICAg
ICBbY3VyckxheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07CisgICAgICAg
ICAgICBbY3VyckxheWVyIGFkZEFuaW1hdGlvbjpjYUFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE2MDQsMTYgKzE1NzMsMTYgQEAgc3RhdGljIHZvaWQg
YnVnNzMxMTM2N1dvcmthcm91bmQoQ0FMYXllciogdHJhbnNmb3JtTGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWEKICAgICBbdHJhbnNmb3JtTGF5ZXIgc2V0VHJhbnNmb3JtOmNhVHJhbnNmb3Jt
XTsKIH0KIAotYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUFuaW1hdGlvbkZyb21MYXllcihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFN0cmluZyYga2V5ZnJhbWVzTmFtZSwg
aW50IGluZGV4KQorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNBQW5pbWF0aW9uRnJvbUxh
eWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBpbnQgaW5kZXgpCiB7CiAgICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExh
eWVyKHByb3BlcnR5KTsKIAotICAgIFN0cmluZyBhbmltYXRpb25OYW1lID0gYW5pbWF0aW9uSWRl
bnRpZmllcihwcm9wZXJ0eSwga2V5ZnJhbWVzTmFtZSwgaW5kZXgpOworICAgIFN0cmluZyBhbmlt
YXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgaW5kZXgpOwogCi0g
ICAgaWYgKCFbbGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbk5hbWVdKQorICAgIGlmICgh
W2xheWVyIGFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBbbGF5ZXIgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbk5hbWVd
OworICAgIFtsYXllciByZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwogICAgIGJ1
ZzczMTEzNjdXb3JrYXJvdW5kKG1fc3RydWN0dXJhbExheWVyLmdldCgpLCBtX3RyYW5zZm9ybSk7
CiAKICAgICBpZiAoTGF5ZXJNYXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVz
KHByb3BlcnR5KSkgewpAQCAtMTYyNCw3ICsxNTkzLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnJlbW92ZUFuaW1hdGlvbkZyb21MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNv
bnMKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgQ0FMYXllciAqY3Vy
ckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAgICAgICAgICAgIFtjdXJyTGF5ZXIgcmVtb3Zl
QW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbk5hbWVdOworICAgICAgICAgICAgW2N1cnJMYXllciBy
ZW1vdmVBbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiB0cnVlOwpAQCAtMTY0NiwxMyArMTYxNSwxMyBAQCBzdGF0aWMgdm9pZCBjb3B5QW5p
bWF0aW9uUHJvcGVydGllcyhDQVByb3BlcnR5QW5pbWF0aW9uKiBmcm9tLCBDQVByb3BlcnR5QW5p
bWF0aQogI2VuZGlmCiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbk9u
TGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGtleWZyYW1l
c05hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQp
CiB7CiAgICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsK
IAotICAgIFN0cmluZyBhbmltYXRpb25OYW1lID0gYW5pbWF0aW9uSWRlbnRpZmllcihwcm9wZXJ0
eSwga2V5ZnJhbWVzTmFtZSwgaW5kZXgpOworICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1h
dGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgaW5kZXgpOwogCi0gICAgQ0FBbmltYXRpb24q
IGNhQW5pbSA9IFtsYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uTmFtZV07CisgICAgQ0FB
bmltYXRpb24qIGNhQW5pbSA9IFtsYXllciBhbmltYXRpb25Gb3JLZXk6YW5pbWF0aW9uSURdOwog
ICAgIGlmICghY2FBbmltKQogICAgICAgICByZXR1cm47CiAKQEAgLTE2NzksNyArMTY0OCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTCiAgICAgW3BhdXNlZEFuaW0gc2V0U3BlZWQ6MF07CiAg
ICAgW3BhdXNlZEFuaW0gc2V0VGltZU9mZnNldDp0aW1lT2Zmc2V0XTsKICAgICAKLSAgICBbbGF5
ZXIgYWRkQW5pbWF0aW9uOnBhdXNlZEFuaW0gZm9yS2V5OmFuaW1hdGlvbk5hbWVdOyAgLy8gVGhp
cyB3aWxsIHJlcGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgorICAgIFtsYXllciBhZGRBbmlt
YXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5pbWF0aW9uSURdOyAgLy8gVGhpcyB3aWxsIHJlcGxh
Y2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgogCiAgICAgLy8gUGF1c2UgdGhlIGFuaW1hdGlvbnMg
b24gdGhlIGNsb25lcyB0b28uCiAgICAgaWYgKExheWVyTWFwKiBsYXllckNsb25lTWFwID0gYW5p
bWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKQEAgLTE2ODksNyArMTY1OCw3IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpwYXVzZUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlE
IHByb3BlcnR5LCBjb25zdCBTCiAgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNS
ZXBsaWNhdGVkUm9vdENsb25lKGl0LT5maXJzdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBDQUxheWVyICpjdXJyTGF5ZXIgPSBpdC0+c2Vjb25kLmdldCgpOwotICAg
ICAgICAgICAgW2N1cnJMYXllciBhZGRBbmltYXRpb246cGF1c2VkQW5pbSBmb3JLZXk6YW5pbWF0
aW9uTmFtZV07CisgICAgICAgICAgICBbY3VyckxheWVyIGFkZEFuaW1hdGlvbjpwYXVzZWRBbmlt
IGZvcktleTphbmltYXRpb25JRF07CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNzI2LDcgKzE2
OTUsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlQ29udGVudHNOZWVkc0Rpc3BsYXko
KQogICAgICAgICBbbV9jb250ZW50c0xheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CiB9CiAK
LWJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVBbmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0
IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBjb25zdCBTdHJpbmcmIGtleWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQorYm9vbCBH
cmFwaGljc0xheWVyQ0E6OmNyZWF0ZUFuaW1hdGlvbkZyb21LZXlmcmFtZXMoY29uc3QgS2V5ZnJh
bWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGNvbnN0
IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgQVNTRVJU
KHZhbHVlTGlzdC5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
OwogCkBAIC0xNzUyLDE0ICsxNzIxLDE0IEBAIGJvb2wgR3JhcGhpY3NMYXllckNBOjpjcmVhdGVB
bmltYXRpb25Gcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1CiAgICAg
aWYgKCF2YWx1ZXNPSykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV91bmNvbWl0dGVk
QW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJBbmltYXRpb24oY2FBbmltYXRpb24sIGtleWZyYW1lc05h
bWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRpb25JbmRleCwgdGltZU9mZnNldCkpOwor
ICAgIG1fdW5jb21pdHRlZEFuaW1hdGlvbnMuYXBwZW5kKExheWVyUHJvcGVydHlBbmltYXRpb24o
Y2FBbmltYXRpb24sIGFuaW1hdGlvbk5hbWUsIHZhbHVlTGlzdC5wcm9wZXJ0eSgpLCBhbmltYXRp
b25JbmRleCwgdGltZU9mZnNldCkpOwogICAgIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0
ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGtl
eWZyYW1lc05hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBJbnRTaXplJiBib3hTaXplKQor
Ym9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNGcm9tS2V5ZnJh
bWVzKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNvbnN0IEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0
LCBjb25zdCBJbnRTaXplJiBib3hTaXplKQogewogICAgIEFTU0VSVCh2YWx1ZUxpc3QucHJvcGVy
dHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKIApAQCAtMTgxMCw3ICsx
Nzc5LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbnNG
cm9tS2V5ZnJhbWVzKGNvbnN0IEtleWZyYW1lVmFsdWUKICAgICAgICAgaWYgKCF2YWxpZE1hdHJp
Y2VzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgCi0gICAgICAgIG1fdW5jb21pdHRlZEFuaW1h
dGlvbnMuYXBwZW5kKExheWVyQW5pbWF0aW9uKGNhQW5pbWF0aW9uLCBrZXlmcmFtZXNOYW1lLCB2
YWx1ZUxpc3QucHJvcGVydHkoKSwgYW5pbWF0aW9uSW5kZXgsIHRpbWVPZmZzZXQpKTsKKyAgICAg
ICAgbV91bmNvbWl0dGVkQW5pbWF0aW9ucy5hcHBlbmQoTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihj
YUFuaW1hdGlvbiwgYW5pbWF0aW9uTmFtZSwgdmFsdWVMaXN0LnByb3BlcnR5KCksIGFuaW1hdGlv
bkluZGV4LCB0aW1lT2Zmc2V0KSk7CiAgICAgfQogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKQEAgLTIwNDUsNyArMjAxNCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzdXNwZW5k
QW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICAgICAgTGF5ZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGxheWVyQ2xvbmVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKExheWVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IGxheWVyQ2xvbmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICAgICAgQ0FMYXllciAqY3VyckxheWVyID0gaXQtPnNlY29uZC5nZXQoKTsKLSAg
ICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0U3BlZWQ6MCBdOworICAgICAgICAgICAgW2N1cnJMYXll
ciBzZXRTcGVlZDowXTsKICAgICAgICAgICAgIFtjdXJyTGF5ZXIgc2V0VGltZU9mZnNldDp0XTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDE1YTViMmZiOGY3MjIxYWNlZGM5ZDM2OWI5MGIxZTkzYjY5MTZjY2YuLmJjNWQyZDYx
ZTU3YzQ5NWJlM2Y5MmQzY2YwMWU5MDU4NGQ4MDc0YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTE2MCw2ICsxMTYwLDE2IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0
aW9uKiBhbmltCiAgICAgcmV0dXJuIHJ1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbjsKIH0KIAor
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmFuaW1hdGlvblBhdXNlZChkb3VibGUgdGltZU9mZnNl
dCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKQoreworICAgIG1fZ3JhcGhpY3NMYXllci0+
cGF1c2VBbmltYXRpb24oYW5pbWF0aW9uTmFtZSwgdGltZU9mZnNldCk7Cit9CisKK3ZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjphbmltYXRpb25GaW5pc2hlZChjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUpCit7CisgICAgbV9ncmFwaGljc0xheWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9u
TmFtZSk7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91
YmxlIHRpbWVPZmZzZXQsIGludCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUqIGZyb21TdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHRvU3R5bGUpCiB7CiAgICAgYm9vbCBkaWRBbmltYXRlID0g
ZmFsc2U7CkBAIC0xMTcyLDcgKzExODIsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3Rh
cnRUcmFuc2l0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBpbnQgcHJvcGVydHksIGNvbnN0CiAgICAg
ICAgICAgICBvcGFjaXR5VmVjdG9yLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCBj
b21wb3NpdGluZ09wYWNpdHkoZnJvbVN0eWxlLT5vcGFjaXR5KCkpKSk7CiAgICAgICAgICAgICBv
cGFjaXR5VmVjdG9yLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgxLCBjb21wb3NpdGlu
Z09wYWNpdHkodG9TdHlsZS0+b3BhY2l0eSgpKSkpOwogICAgICAgICAgICAgLy8gVGhlIGJveFNp
emUgcGFyYW0gaXMgb25seSB1c2VkIGZvciB0cmFuc2Zvcm0gYW5pbWF0aW9ucyAod2hpY2ggY2Fu
IG9ubHkgcnVuIG9uIFJlbmRlckJveGVzKSwgc28gd2UgcGFzcyBhbiBlbXB0eSBzaXplIGhlcmUu
Ci0gICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZl
Y3RvciwgSW50U2l6ZSgpLCBvcGFjaXR5QW5pbSwgU3RyaW5nKCksIHRpbWVPZmZzZXQpKSB7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaGljc0xheWVyLT5hZGRBbmltYXRpb24ob3BhY2l0eVZlY3Rv
ciwgSW50U2l6ZSgpLCBvcGFjaXR5QW5pbSwgR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZv
clRyYW5zaXRpb24oQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpLCB0aW1lT2Zmc2V0KSkgewogICAg
ICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGF0IHRoZSBjb3JyZWN0IG9wYWNpdHkgaXMgdmlz
aWJsZSB3aGVuIHRoZSBhbmltYXRpb24gZW5kcywgYWxzbyBzZXQgdGhlIGZpbmFsIG9wYWNpdHku
CiAgICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJPcGFjaXR5KHRvU3R5bGUpOwogICAgICAgICAg
ICAgICAgIGRpZEFuaW1hdGUgPSB0cnVlOwpAQCAtMTE4Niw3ICsxMTk2LDcgQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgaW50IHBy
b3BlcnR5LCBjb25zdAogICAgICAgICAgICAgS2V5ZnJhbWVWYWx1ZUxpc3QgdHJhbnNmb3JtVmVj
dG9yKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgdHJhbnNm
b3JtVmVjdG9yLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJmZyb21TdHls
ZS0+dHJhbnNmb3JtKCkpKTsKICAgICAgICAgICAgIHRyYW5zZm9ybVZlY3Rvci5pbnNlcnQobmV3
IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDEsICZ0b1N0eWxlLT50cmFuc2Zvcm0oKSkpOwotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3Rv
ciwgdG9SZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIHRyYW5z
Zm9ybUFuaW0sIFN0cmluZygpLCB0aW1lT2Zmc2V0KSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9SZW5kZXJCb3gocmVu
ZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIHRyYW5zZm9ybUFuaW0sIEdyYXBoaWNz
TGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JUcmFuc2l0aW9uKEFuaW1hdGVkUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm0pLCB0aW1lT2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIC8vIFRvIGVuc3VyZSB0
aGF0IHRoZSBjb3JyZWN0IHRyYW5zZm9ybSBpcyB2aXNpYmxlIHdoZW4gdGhlIGFuaW1hdGlvbiBl
bmRzLCBhbHNvIHNldCB0aGUgZmluYWwgb3BhY2l0eS4KICAgICAgICAgICAgICAgICB1cGRhdGVM
YXllclRyYW5zZm9ybSh0b1N0eWxlKTsKICAgICAgICAgICAgICAgICBkaWRBbmltYXRlID0gdHJ1
ZTsKQEAgLTEyMDAsMzQgKzEyMTAsMzIgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0
VHJhbnNpdGlvbihkb3VibGUgdGltZU9mZnNldCwgaW50IHByb3BlcnR5LCBjb25zdAogICAgIHJl
dHVybiBkaWRBbmltYXRlOwogfQogCi12b2lkIFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5QW5p
bWF0aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCi17Ci0gICAg
cmVuZGVyZXIoKS0+YW5pbWF0aW9uKCktPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQocmVuZGVyZXIo
KSwgdGltZSk7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlTeW5jUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dHJhbnNp
dGlvblBhdXNlZChkb3VibGUgdGltZU9mZnNldCwgaW50IHByb3BlcnR5KQogewotICAgIGlmICgh
cmVuZGVyZXIoKS0+ZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQotICAgICAgICBjb21wb3NpdG9y
KCktPnNjaGVkdWxlU3luYygpOworICAgIEFuaW1hdGVkUHJvcGVydHlJRCBhbmltYXRlZFByb3Bl
cnR5ID0gY3NzVG9HcmFwaGljc0xheWVyUHJvcGVydHkocHJvcGVydHkpOworICAgIGlmIChhbmlt
YXRlZFByb3BlcnR5ICE9IEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkKQorICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnBhdXNlQW5pbWF0aW9uKEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvbk5hbWVGb3JU
cmFuc2l0aW9uKGFuaW1hdGVkUHJvcGVydHkpLCB0aW1lT2Zmc2V0KTsKIH0KIAotdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OmFuaW1hdGlvbkZpbmlzaGVkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9u
TmFtZSkKK3ZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp0cmFuc2l0aW9uRmluaXNoZWQoaW50IHBy
b3BlcnR5KQogewotICAgIG1fZ3JhcGhpY3NMYXllci0+cmVtb3ZlQW5pbWF0aW9uc0ZvcktleWZy
YW1lcyhhbmltYXRpb25OYW1lKTsKKyAgICBBbmltYXRlZFByb3BlcnR5SUQgYW5pbWF0ZWRQcm9w
ZXJ0eSA9IGNzc1RvR3JhcGhpY3NMYXllclByb3BlcnR5KHByb3BlcnR5KTsKKyAgICBpZiAoYW5p
bWF0ZWRQcm9wZXJ0eSAhPSBBbmltYXRlZFByb3BlcnR5SW52YWxpZCkKKyAgICAgICAgbV9ncmFw
aGljc0xheWVyLT5yZW1vdmVBbmltYXRpb24oR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uTmFtZUZv
clRyYW5zaXRpb24oYW5pbWF0ZWRQcm9wZXJ0eSkpOwogfQogCi12b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6YW5pbWF0aW9uUGF1c2VkKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUpCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCiB7Ci0gICAgbV9ncmFwaGlj
c0xheWVyLT5wYXVzZUFuaW1hdGlvbihhbmltYXRpb25OYW1lLCB0aW1lT2Zmc2V0KTsKKyAgICBy
ZW5kZXJlcigpLT5hbmltYXRpb24oKS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChyZW5kZXJlcigp
LCB0aW1lKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnRyYW5zaXRpb25GaW5pc2hl
ZChpbnQgcHJvcGVydHkpCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5U3luY1JlcXVp
cmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQogewotICAgIEFuaW1hdGVkUHJvcGVydHlJRCBhbmlt
YXRlZFByb3BlcnR5ID0gY3NzVG9HcmFwaGljc0xheWVyUHJvcGVydHkocHJvcGVydHkpOwotICAg
IGlmIChhbmltYXRlZFByb3BlcnR5ICE9IEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkKQotICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnJlbW92ZUFuaW1hdGlvbnNGb3JQcm9wZXJ0eShhbmltYXRlZFBy
b3BlcnR5KTsKKyAgICBpZiAoIXJlbmRlcmVyKCktPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkK
KyAgICAgICAgY29tcG9zaXRvcigpLT5zY2hlZHVsZVN5bmMoKTsKIH0KIAorLy8gVGhpcyBpcyB1
c2VkIGZvciB0aGUgJ2ZyZWV6ZScgYXBpLCBmb3IgdGVzdGluZyBvbmx5Lgogdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKQogewogICAgIG1fZ3Jh
cGhpY3NMYXllci0+c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5oCmluZGV4IDgwODAwMGI1OWNhNDMxMGI4NzEyOTliZDdiNzc5MWI4N2M0
N2EyNWUuLmZiM2FiNjcxMTBkMzQ3ZDU2NGNlYTlhNTk3NWI3YzVlYjU5MzBhMTEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0xMDUsMTIgKzEwNSwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCk7CiAKICAgICAvLyBJbnRlcmZh
Y2UgdG8gc3RhcnQsIGZpbmlzaCwgc3VzcGVuZCBhbmQgcmVzdW1lIGFuaW1hdGlvbnMgYW5kIHRy
YW5zaXRpb25zCi0gICAgYm9vbCBzdGFydEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29u
c3QgQW5pbWF0aW9uKiBhbmltLCBjb25zdCBLZXlmcmFtZUxpc3QmIGtleWZyYW1lcyk7CiAgICAg
Ym9vbCBzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGludCBwcm9wZXJ0eSwgY29u
c3QgUmVuZGVyU3R5bGUqIGZyb21TdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHRvU3R5bGUpOwot
ICAgIHZvaWQgYW5pbWF0aW9uRmluaXNoZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lk
IGFuaW1hdGlvblBhdXNlZChkb3VibGUgdGltZU9mZnNldCwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
KyAgICB2b2lkIHRyYW5zaXRpb25QYXVzZWQoZG91YmxlIHRpbWVPZmZzZXQsIGludCBwcm9wZXJ0
eSk7CiAgICAgdm9pZCB0cmFuc2l0aW9uRmluaXNoZWQoaW50IHByb3BlcnR5KTsKIAorICAgIGJv
b2wgc3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5p
bSwgY29uc3QgS2V5ZnJhbWVMaXN0JiBrZXlmcmFtZXMpOworICAgIHZvaWQgYW5pbWF0aW9uUGF1
c2VkKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgYW5p
bWF0aW9uRmluaXNoZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKwogICAgIHZvaWQgc3VzcGVuZEFu
aW1hdGlvbnMoZG91YmxlIHRpbWUgPSAwKTsKICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68795</attachid>
            <date>2010-09-24 17:58:21 -0700</date>
            <delta_ts>2010-09-24 19:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43792-20100924175819.patch</filename>
            <type>text/plain</type>
            <size>18705</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNGMxMjE1ZmY1ZjAxNzYyMTIyY2IyOWQ5ZWJkMzZiYzAwNWE5MzVmLi4yY2NmMjNk
MDRjZTFkZTYxMjVlM2NkZmFhYTE3NWMyYTA3MzU1Y2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDktMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZWxlcmF0ZWQg
dHJhbnNpdGlvbnMgZG8gbm90IHN1c3BlbmQvcmVzdW1lIHByb3Blcmx5LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3OTIKKyAgICAgICAgCisgICAg
ICAgIFRlc3RjYXNlIHdpdGggYW4gYW5pbWF0aW9uIHRoYXQgaGFzIHR3byBhY2NlbGVyYXRlZCBw
cm9wZXJ0aWVzIGNoYW5naW5nLgorCisgICAgICAgICogYW5pbWF0aW9ucy9vcGFjaXR5LXRyYW5z
Zm9ybS1hbmltYXRpb24tZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIGFuaW1h
dGlvbnMvb3BhY2l0eS10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLnBuZzogQWRkZWQuCisg
ICAgICAgICogYW5pbWF0aW9ucy9vcGFjaXR5LXRyYW5zZm9ybS1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL29wYWNpdHktdHJhbnNmb3JtLWFuaW1h
dGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMC0wOS0yNCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGNocm9taXVtIGV4cGVjdGF0aW9ucyB1
cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL29wYWNpdHktdHJhbnNm
b3JtLWFuaW1hdGlvbi1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
b3BhY2l0eS10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFkYTI0MDk0NWMzNTRmZjNmZTlhMmU4ZTM3MmJiOWUyNDc4NmJjYTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL29wYWNpdHktdHJhbnNmb3JtLWFuaW1hdGlvbi1l
eHBlY3RlZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACitmMjJjNDJlMmRiMTI5Y2E3YTE2NTg4MzE2
ODFmYzdjOApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvb3BhY2l0eS10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVjdGVkLnBuZyBi
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMvb3BhY2l0eS10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4cGVj
dGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43OGMzMWI1OWM1YzNmMmRiZmJmMDZkNDg0OTQ5MGFmOTRlMzM4
YmQxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAxMTM5Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVV7K3ZZVjJhPmkxQiVRbFlicFM4LWVvI0YyWTVPPUQrQ25mcilCMSgKekdCOHZ5d3VZUn43
SXFaKlhPXzN9ZilZbm1IczdYLTJ9KylrdDIxMSRuRWUkQCVJM0soenMrPyppbX5VbEpoUnZECnop
VjQwfGM9RzY/KTstc14zKSVsUyRXP3R2KGY0WU5hQER4RVN8ZSRweGJEWlpjfE9+Z3pCK0tPPyg7
cUtfcUYrRAp6X1pmSkxFfTQ5N1YwcHJPSlpPPCVXPUBTJCl9SWNCekQxbWxDYVImZy19dEdwSVdg
eW50YlRyQGlvWT5CPn5RdCgKekA9Zkp5WEk8SmhpQG9LcSF2cHRPSD89bXI3Y2I8QjZrX1ZJeHhZ
fkpjblFiLSQyVUhgPjlfUSZ0VD8hcFUpJU9iCnpxKjlIOHNxVlJZLXlPa2NSV0NhPGRzc35RU3tQ
KEU9WCY+KT4kMj5iZDE9UV4yPC1LcnV4JDY0Y2RMXlkmaGgpawp6SCh+R0dGTGkjS0A3V3p2Smo1
LXoqNH1NTEA0VC0pU000N3FLM3d3Yk5TbSNVZ3oxK2IzOExHalJ7ayhPQm9aJisKenRHKzB0QFRN
TmAjfkpKWGhKRXNDRHd0cSNEa1pVQElMZ0VTeD0tR1pVRzEjM1lTKUY9S1BuRmtkfDI1cG9QT2Bo
CnotU0A3eW5BUktjJD97MD8lO05QMzVPOEhsb1V0TG1xMEw2aCZ9MzdRejRCQHs+Qi1lYnI3QnN3
T09qa1JJIyEkQQp6dkUzZkg8Z1UjPjRXK148JlJhUHF7Yy0lS3dmPzA0KTVAUXhWPmE5ZmAjeHB1
PnsrYCRKK01DZGJtbVNleCRCb3QKekpUQ1QpdENAUEdZO3c1IXZeQUFnZHVGfG52VlJqay1TQW5I
WTUkU3A0WmxDPyMhbyNuVTkoNXo9O1A0T3VlQDdJCnpxWVRhTyYoRXAxd3Rie2BVVF5FUTs8Y1VL
PTMlcF5yfmwzSmAyQjl4cDJeUWJmQk1JTHtyRCZTPzIrVjBudWNtKwp6VUMkTGVyeXRlKElPJkc+
WVZKbn54eUwhP1BIb2U/bHNvYTQlR0hFflMkbj9mJEokMyU+fipXPmA1SEp5XjMwYD4KeiZoUGJ5
dntGcHc/JlFuPSlxbmY9QU1xI095UG5WMlZBOVdkYUFNfUorfkM2WjB0LWBAPGB1N0Y2NW9IWl9R
U1RrCno/OFM4IWVeP0BIUipTNi1HTSVybWhmJGBpeS1NemQ9OFZoSnJrJUE2WVMpPVJkRHFLUk5r
TH08WmFXN0JVMDEhSAp6Pk1nYztXQHlzT3ZLdW9tJWpVQH12fj5EQFdWdSlCPFhgSlEzVTJ0akE/
V0FOSDk8Ryl7R19mbVBYQ3BFVjkjSUkKejB+T3QhMz05ZWtvLVUzZDZedzZoOWBzfW01T0UxaVJ1
OVkyNGE/OXBXTmtVRnFxb0J7QHxuR3hNZlpXRCQzSzdsCnpgOWFhKSFQKjFZemR3SGFlY3ZEWCN7
MlUyO3MySDJ1TlA4cVhrY2pjZCQ0KS1DWUpeVk1rVz54MGtCQjRMJkZgcgp6SThIREpFWHUqazs/
YUBXSEw3R1pUc1E8cTZUQGdHMGZvUzUkdUxAQzR4VmJfIU47MX5jZiN3VFJUd3lDR0Zia3cKekZE
Y3lPZ3M5cE1DQDQ2dnNpLTM8R0dTc0dSbmptVEY1dUVeRyU8amhlNH5rQkclPihpYGxFP3FHJTxg
T2hTND95CnokN3RPK1N+dFE2Z2htcz9Ya3IqbTQ1TUFrKGJuTjs+dXxKbklOQ1pLWjVASlYmUEkj
RihjKkJsSTI8aHc9fm88Ygp6VE9YLWxWQm1CRHRweW5FbCNPPUVNbXVHcm93Q3RaJFk/OE12PXVW
aTNaWSpzV2F6ZyVLQ25DZDw2cipWJD96fDUKUFgpJU1SdERubXtyLVVXfFBed0RCCgpsaXRlcmFs
IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL29wYWNp
dHktdHJhbnNmb3JtLWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL29wYWNpdHktdHJhbnNmb3JtLWFuaW1hdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGNkZjFjNmEwNWIzNGYwYWRkMDdlNzBkMTE5NTE2ZWJlYTlhZjQzZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvb3BhY2l0eS10cmFuc2Zvcm0tYW5pbWF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4OAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKK2xheWVyIGF0ICgyMDAsMCkgc2l6ZSAx
MDB4MTAwCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMjAwLDApIHNpemUg
MTAweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSAxMDB4MTAwCisg
IFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2Jn
Y29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvb3BhY2l0
eS10cmFuc2Zvcm0tYW5pbWF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL29wYWNp
dHktdHJhbnNmb3JtLWFuaW1hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzMmIwODgxOGFlZjYxOGQ3
NWE4ZGQ1ZGNiMTFmNGU1MjQzMjljZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL29wYWNpdHktdHJhbnNmb3JtLWFuaW1hdGlvbi5odG1sCkBAIC0wLDAgKzEsNjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAjYm94IHsKKyAgICAgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgICAgICBsZWZ0OiAwOworICAgICAgICB0b3A6IDA7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG1vdmU7CisgICAgICAgIC13
ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAxczsKKyAgICAgICAgLXdlYmtpdC1hbmltYXRpb24t
dGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJh
dGlvbi1jb3VudDogMTsKKyAgICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgbW92ZSB7Cisg
ICAgICAgIGZyb20geworICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgo
MCkgc2NhbGUoMSk7CisgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CisgICAgICAgIH0KKyAgICAg
ICAgdG8geworICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNDAwcHgp
IHNjYWxlKDEpOworICAgICAgICAgICAgb3BhY2l0eTogMC45OworICAgICAgICB9CisgICAgfQor
ICAgIAorICAgICNpbmRpY2F0b3IgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgIGxlZnQ6IDA7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBsZWZ0OiAyMDBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgIH0KKyAgICAKKyAgICAjcmVzdWx0IHsKKyAgICAgICAgZGlz
cGxheTogbm9uZTsgLyogb25seSB0aGUgcGl4ZWwgb3V0cHV0IGlzIHZhbHVhYmxlICovCisgICAg
fQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgICBjb25zdCBl
eHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVu
dC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbIm1vdmUi
LCAwLjUsICJib3giLCAid2Via2l0VHJhbnNmb3JtLjQiLCAyMDAsIDJdLAorICAgIF07CisKKyAg
ICB2YXIgZGlzYWJsZVBhdXNlQW5pbWF0aW9uQVBJID0gZmFsc2U7CisgICAgdmFyIGRvUGl4ZWxU
ZXN0ID0gdHJ1ZTsKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzLCBudWxsLCBu
dWxsLCBkaXNhYmxlUGF1c2VBbmltYXRpb25BUEksIGRvUGl4ZWxUZXN0KTsKKyAgICAKKyAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPCEtLSBJbiB0aGUgcGl4ZWwgcmVzdWx0cywgdGhl
IGdyZWVuIHNxdWFyZSBzaG91bGQgb3ZlcmxheSB0aGUgcmVkIHNxdWFyZSAtLT4KKzxkaXYgaWQ9
ImluZGljYXRvciI+PC9kaXY+Cis8ZGl2IGlkPSJib3giPjwvZGl2PgorPGRpdiBpZD0icmVzdWx0
Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzMxYmRkMGEyNWYxMTkxNWFiMTVlZTZiZmE2
NGZjZWMzODMzZWE3Li5mMGVhYmJlYTQ0OTE3YTYyNDViMTE5NGI5MjE1NGE4ZTdiM2EzZDRhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUzIEBACisyMDEwLTA5LTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFjY2VsZXJhdGVkIHRyYW5zaXRpb25zIGRvIG5vdCBzdXNwZW5kL3Jlc3VtZSBwcm9wZXJseS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzkyCisg
ICAgICAgIAorICAgICAgICAoMSkgRml4IHJlZ3Jlc3Npb24gZnJvbSByNjgyMzMsIHdoZXJlIGlm
IGFuIGFuaW1hdGlvbiBhZmZlY3RlZCB0d28KKyAgICAgICAgcHJvcGVydGllcywgb25seSBvbmUg
d291bGQgYW5pbWF0ZS4gVGhlIHRlc3RjYXNlIHRlc3RzIHRoaXMuCisgICAgICAgIAorICAgICAg
ICAoMikgRml4IGEgZmxhc2ggYXQgdGhlIGVuZCBvZiBhbiBhbmltYXRpb24gb3IgdHJhbnNpdGlv
biB0aGF0IGhhcyBiZWVuCisgICAgICAgIHBhdXNlZCBhbmQgcmVzdW1lZC4gVGhlIGZsYXNoIG9j
Y3VycmVkIGJlY2F1c2Ugd2UgdXNlZCBDQUFuaW1hdGlvbidzCisgICAgICAgIHRpbWVPZmZzZXQg
d2hlbiByZXN1bWluZyB0byBwdXNoIHRoZSBzdGFydCBvZiB0aGUgYW5pbWF0aW9uIGludG8KKyAg
ICAgICAgdGhlIHBhc3QuIEhvd2V2ZXIsIHRpbWVPZmZzZXQgZG9lcyBub3QgcGxheSBuaWNlbHkg
d2l0aCBmaWxsIG1vZGVzLAorICAgICAgICBjYXVzaW5nIGEgc2luZ2xlIGZyYW1lIG9mIGFuaW1h
dGlvbiB3aXRoIHRoZSBlbGVtZW50IGluIGl0cyB1bmFuaW1hdGVkIHN0YXRlLgorICAgICAgICAK
KyAgICAgICAgRml4ZWQgdGhpcyBieSBvZmZzZXR0aW5nIHRoZSBiZWdpblRpbWUgaW50byB0aGUg
cGFzdCwgcmF0aGVyIHRoYW4gc2V0dGluZworICAgICAgICB0aW1lT2Zmc2V0LiBOb3JtYWxseSB3
ZSBzdWJtaXQgYW5pbWF0aW9ucyB3aXRoIGJlZ2luVGltZSA9PSAwLCBhbmQgcmVseQorICAgICAg
ICBvbiBDQSBhc3NpZ25pbmcgYSBiZWdpblRpbWUgd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGNvbW1p
dHRlZC4gVGhpcyBiZWdpblRpbWUKKyAgICAgICAgaXMgdGhlbiBwYXNzZWQgdG8gQW5pbWF0aW9u
Q29udHJvbGxlciB0byBzeW5jIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBhbmltYXRpb25zLgorICAg
ICAgICBIb3dldmVyLCBzaW5jZSB0aGUgY29kZSBub3cgYXNzaWducyBiZWdpblRpbWVzIGluIHRo
ZSBwYXN0IChvbiByZXN1bWUpLAorICAgICAgICB3ZSBub3cgaGF2ZSB0byBkZW5vdGUgd2hldGhl
ciB3ZSd2ZSBkb25lIHRoaXMsIGFuZCBzZW5kIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIHRpbWVz
dGFtcCBiYWNrIHRvIEFuaW1hdGlvbkNvbnRyb2xsZXIuCisgICAgICAgIAorICAgICAgICAoMykg
RmluYWxseSwgdGhlIHBhdGNoIHJlbW92ZXMgUHJvcGVydHlBbmltYXRpb25QYWlyIGFuZCBqdXN0
IHVzZXMgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbgorICAgICAgICBpbnN0ZWFkLiBUaGlzIGlzIGp1
c3QgY2xlYW51cC4KKworICAgICAgICBUZXN0OiBhbmltYXRpb25zL29wYWNpdHktdHJhbnNmb3Jt
LWFuaW1hdGlvbi5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllckNBLmg6IFJlbW92ZSBQcm9wZXJ0eUFuaW1hdGlvblBhaXIsCisgICAgICAgIGFuZCBj
aGFuZ2UgQW5pbWF0aW9uc01hcCB0byBzdG9yZSBhIHZlY3RvciBvZiBMYXllclByb3BlcnR5QW5p
bWF0aW9uLgorICAgICAgICBOZXcgbWV0aG9kLCBhbmltYXRpb25EaWRTdGFydCgpLCBpcyBjYWxs
ZWQgZnJvbSB0aGUgLWFuaW1hdGlvbkRpZFN0YXJ0OiBjYWxsYmFjay4KKyAgICAgICAgCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAg
KC1bV2ViQW5pbWF0aW9uRGVsZWdhdGUgYW5pbWF0aW9uRGlkU3RhcnQ6XSk6IEp1c3QgY2FsbCBt
X2dyYXBoaWNzTGF5ZXItPmFuaW1hdGlvbkRpZFN0YXJ0KCkKKyAgICAgICAgbm93LgorICAgICAg
ICAoV2ViQ29yZTo6YW5pbWF0aW9uSWRlbnRpZmllcik6IFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cHJvcGVydHksIHRvIGZpeCAoMSkKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
bW92ZU9yQ29weUFuaW1hdGlvbnNGb3JQcm9wZXJ0eSk6IENvcHkgdGhlIFdlYktpdEFuaW1hdGlv
bkJlZ2luVGltZVNldAorICAgICAgICB2YWx1ZSwgaWYgcHJlc2VudC4KKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6YW5pbWF0aW9uRGlkU3RhcnQpOiBDYWxsIG5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoKSBvbiB0aGUgY2xpZW50LAorICAgICAgICBhZnRlciB0ZXN0aW5nIGlmIHdl
IHNldCBhIG5vbi16ZXJvIGJlZ2luVGltZSBvbiB0aGlzIHBhcnRpY3VsYXIgYW5pbWF0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckFuaW1hdGlvbnMp
OiBDaGFuZ2UgdG8gdXNlIExheWVyUHJvcGVydHlBbmltYXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnNldENBQW5pbWF0aW9uT25MYXllcik6IFNldCB2YWx1ZSBmb3Ig
V2ViS2l0QW5pbWF0aW9uQmVnaW5UaW1lU2V0S2V5CisgICAgICAgIGlmIHdlIGhhdmUgYSBub24t
emVybyB0aW1lT2Zmc2V0LiBNYWtlIGFuaW1hdGlvbklEIGFuIE5TU3RyaW5nLCB0byBhdm9pZCBz
ZXZlcmFsIGNvbnZlcnNpb25zLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpy
ZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcik6ICBNYWtlIGFuaW1hdGlvbklEIGFuIE5TU3RyaW5n
LCB0bworICAgICAgICBhdm9pZCBzZXZlcmFsIGNvbnZlcnNpb25zLgorICAgICAgICAoV2ViQ29y
ZTo6Y29weUFuaW1hdGlvblByb3BlcnRpZXMpOiBDb3B5IFdlYktpdEFuaW1hdGlvbkJlZ2luVGlt
ZVNldEtleSBpZiBwcmVzZW50LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpw
YXVzZUNBQW5pbWF0aW9uT25MYXllcik6IE1ha2UgYW5pbWF0aW9uSUQgYW4gTlNTdHJpbmcsIHRv
IGF2b2lkCisgICAgICAgIHNldmVyYWwgY29udmVyc2lvbnMuCisKIDIwMTAtMDktMjQgIEFuZHJl
eSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllckNBLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0xheWVyQ0EuaAppbmRleCA5MWQ1ZGUwNGJlNmFlYjk0Yzk0MTM2OTgyNDNkNDJlNWJkYTcyZGUz
Li4xN2E2N2FjMzdiMTA3MThhZjFkMGE3NGE2OTM4YWM1OGQ5MGU1ZjA1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EuaApAQCAtMTE4LDYgKzEx
OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7
CiAKKyAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgYnkgYW5pbWF0aW9uRGlkU3RhcnQ6IGNh
bGxiYWNrCisgICAgdm9pZCBhbmltYXRpb25EaWRTdGFydChDQUFuaW1hdGlvbiopOworICAgIAog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpOwog
CkBAIC0zNTQsOSArMzU3LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBVbmNvbW1pdHRlZCB0
cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucy4KICAgICBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4gbV91bmNvbWl0dGVkQW5pbWF0aW9uczsKLQotICAgIHR5cGVkZWYgaW50IEFuaW1hdGVk
UHJvcGVydHk7IC8vIHN0ZCBjb250YWluZXJzIGNob2tlIG9uIHRoZSBBbmltYXRlZFByb3BlcnR5
SUQgZW51bQotICAgIHR5cGVkZWYgcGFpcjxBbmltYXRlZFByb3BlcnR5LCBpbnQ+IFByb3BlcnR5
QW5pbWF0aW9uUGFpcjsgLy8gcGFpciBvZiBwcm9wZXJ0eSwgaW5kZXgKICAgICAKICAgICBlbnVt
IEFjdGlvbiB7IFJlbW92ZSwgUGF1c2UgfTsKICAgICBzdHJ1Y3QgQW5pbWF0aW9uUHJvY2Vzc2lu
Z0FjdGlvbiB7CkBAIC0zNzIsNyArMzcyLDcgQEAgcHJpdmF0ZToKICAgICBBbmltYXRpb25zVG9Q
cm9jZXNzTWFwIG1fYW5pbWF0aW9uc1RvUHJvY2VzczsKIAogICAgIC8vIE1hcCBvZiBhbmltYXRp
b24gbmFtZXMgdG8gdGhlaXIgYXNzb2NpYXRlZCBsaXN0cyBvZiBwcm9wZXJ0eSBhbmltYXRpb25z
LCBzbyB3ZSBjYW4gcmVtb3ZlL3BhdXNlIHRoZW0uCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPFByb3BlcnR5QW5pbWF0aW9uUGFpcj4gPiBBbmltYXRpb25zTWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5QW5pbWF0aW9uPiA+IEFu
aW1hdGlvbnNNYXA7CiAgICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOwogCiAg
ICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCmluZGV4IDMzZjE0ZTY4ZTcwMTQyNmJk
MTBmYjBkM2EyZGVlNzkwYzJjMjQ0MDkuLmQ0Y2Q4NTE0ZGY5ZmM5ZjM3NzYxNTNhNDE5YjMxNGU4
ZTEwNjVkNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzTGF5ZXJDQS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0xheWVyQ0EubW0KQEAgLTU1LDYgKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRBbmltYXRp
b25CZWdpblRpbWVTZXRLZXkgPSBAIldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldCI7CisKIC8v
IFRoZSB0aHJlc2hvbGQgd2lkdGggb3IgaGVpZ2h0IGFib3ZlIHdoaWNoIGEgdGlsZWQgbGF5ZXIg
d2lsbCBiZSB1c2VkLiBUaGlzIHNob3VsZCBiZQogLy8gbGFyZ2UgZW5vdWdoIHRvIGF2b2lkIHRp
bGVkIGxheWVycyBmb3IgbW9zdCBHcmFwaGljc0xheWVycywgYnV0IGxlc3MgdGhhbiB0aGUgT3Bl
bkdMCiAvLyB0ZXh0dXJlIHNpemUgbGltaXQgb24gYWxsIHN1cHBvcnRlZCBoYXJkd2FyZS4KQEAg
LTEwMSwxMSArMTAzLDggQEAgc3RhdGljIGRvdWJsZSBtZWRpYVRpbWVUb0N1cnJlbnRUaW1lKENG
VGltZUludGVydmFsIHQpCiAKIC0gKHZvaWQpYW5pbWF0aW9uRGlkU3RhcnQ6KENBQW5pbWF0aW9u
ICopYW5pbWF0aW9uCiB7Ci0gICAgaWYgKCFtX2dyYXBoaWNzTGF5ZXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXZWJDb3JlOjptZWRpYVRpbWVUb0N1cnJlbnRU
aW1lKFthbmltYXRpb24gYmVnaW5UaW1lXSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5jbGllbnQo
KS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChtX2dyYXBoaWNzTGF5ZXIsIHN0YXJ0VGltZSk7Cisg
ICAgaWYgKG1fZ3JhcGhpY3NMYXllcikKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5hbmltYXRp
b25EaWRTdGFydChhbmltYXRpb24pOwogfQogCiAtIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0Eq
KWdyYXBoaWNzTGF5ZXIKQEAgLTI0NywxNCArMjQ2LDkgQEAgc3RhdGljIFN0cmluZyBwcm9wZXJ0
eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgIHJldHVybiAiIjsK
IH0KIAotc3RhdGljIFN0cmluZyBhbmltYXRpb25JZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYW5p
bWF0aW9uTmFtZSwgaW50IGluZGV4KQorc3RhdGljIFN0cmluZyBhbmltYXRpb25JZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5
LCBpbnQgaW5kZXgpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgYnVpbGRl
ci5hcHBlbmQoYW5pbWF0aW9uTmFtZSk7Ci0gICAgYnVpbGRlci5hcHBlbmQoIl8iKTsKLSAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihpbmRleCkpOwotICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGFuaW1hdGlvbk5hbWUgKyBTdHJpbmc6OmZvcm1hdCgi
XyVkXyVkIiwgcHJvcGVydHksIGluZGV4KTsKIH0KIAogc3RhdGljIENBTWVkaWFUaW1pbmdGdW5j
dGlvbiogZ2V0Q0FNZWRpYVRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbikKQEAgLTU3MCwxMiArNTY0LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpt
b3ZlT3JDb3B5QW5pbWF0aW9uc0ZvclByb3BlcnR5KE1vdmVPckNvcHkgb3BlcmF0aW9uLCBBbmlt
CiAgICAgLy8gTG9vayBmb3IgcnVubmluZyBhbmltYXRpb25zIGFmZmVjdGluZyB0aGlzIHByb3Bl
cnR5LgogICAgIEFuaW1hdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcnVubmluZ0Fu
aW1hdGlvbnMuZW5kKCk7CiAgICAgZm9yIChBbmltYXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGNvbnN0IFZlY3RvcjxQcm9wZXJ0eUFuaW1hdGlvblBhaXI+JiBwcm9wZXJ0eUFuaW1hdGlv
bnMgPSBpdC0+c2Vjb25kOworICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1h
dGlvbj4mIHByb3BlcnR5QW5pbWF0aW9ucyA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIHNpemVfdCBu
dW1BbmltYXRpb25zID0gcHJvcGVydHlBbmltYXRpb25zLnNpemUoKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0
IFByb3BlcnR5QW5pbWF0aW9uUGFpciYgY3VyclBhaXIgPSBwcm9wZXJ0eUFuaW1hdGlvbnNbaV07
Ci0gICAgICAgICAgICBpZiAoY3VyclBhaXIuZmlyc3QgPT0gcHJvcGVydHkpCi0gICAgICAgICAg
ICAgICAgbW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKG9wZXJhdGlvbiwgYW5pbWF0aW9uSWRlbnRp
ZmllcihpdC0+Zmlyc3QsIGN1cnJQYWlyLnNlY29uZCksIGZyb21MYXllciwgdG9MYXllcik7Cisg
ICAgICAgICAgICBjb25zdCBMYXllclByb3BlcnR5QW5pbWF0aW9uJiBjdXJyQW5pbWF0aW9uID0g
cHJvcGVydHlBbmltYXRpb25zW2ldOworICAgICAgICAgICAgaWYgKGN1cnJBbmltYXRpb24ubV9w
cm9wZXJ0eSA9PSBwcm9wZXJ0eSkKKyAgICAgICAgICAgICAgICBtb3ZlT3JDb3B5TGF5ZXJBbmlt
YXRpb24ob3BlcmF0aW9uLCBhbmltYXRpb25JZGVudGlmaWVyKGN1cnJBbmltYXRpb24ubV9uYW1l
LCBjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb24ubV9pbmRleCksIGZyb21M
YXllciwgdG9MYXllcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NTYsNiArNzUwLDIyIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChBbmltYXRpb25DaGFuZ2Vk
KTsKIH0KIAordm9pZCBHcmFwaGljc0xheWVyQ0E6OmFuaW1hdGlvbkRpZFN0YXJ0KENBQW5pbWF0
aW9uKiBjYUFuaW1hdGlvbikKK3sKKyAgICBib29sIGhhZE5vblplcm9CZWdpblRpbWUgPSBbW2Nh
QW5pbWF0aW9uIHZhbHVlRm9yS2V5OldlYktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV0gYm9v
bFZhbHVlXTsKKworICAgIGRvdWJsZSBzdGFydFRpbWU7CisgICAgaWYgKGhhZE5vblplcm9CZWdp
blRpbWUpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3aGF0IHRpbWUgQ0EgdXNlZCB0byBj
b21taXQgdGhlIGFuaW1hdGlvbiwgc28ganVzdCB1c2UgdGhlIGN1cnJlbnQgdGltZQorICAgICAg
ICAvLyAoZXZlbiB0aG91Z2ggdGhpcyB3aWxsIGJlIHNsaWdodGx5IG9mZikuCisgICAgICAgIHN0
YXJ0VGltZSA9IFdlYkNvcmU6Om1lZGlhVGltZVRvQ3VycmVudFRpbWUoQ0FDdXJyZW50TWVkaWFU
aW1lKCkpOworICAgIH0gZWxzZQorICAgICAgICBzdGFydFRpbWUgPSBXZWJDb3JlOjptZWRpYVRp
bWVUb0N1cnJlbnRUaW1lKFtjYUFuaW1hdGlvbiBiZWdpblRpbWVdKTsKKworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3Rh
cnRUaW1lKTsKK30KKwogdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSogaW1hZ2UpCiB7CiAgICAgaWYgKGltYWdlKSB7CkBAIC0xNDkzLDE1ICsxNTAzLDE1IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVMYXllckFuaW1hdGlvbnMoKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjb25zdCBBbmltYXRpb25Qcm9jZXNzaW5n
QWN0aW9uJiBwcm9jZXNzaW5nSW5mbyA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBW
ZWN0b3I8UHJvcGVydHlBbmltYXRpb25QYWlyPiYgYW5pbWF0aW9ucyA9IGFuaW1hdGlvbkl0LT5z
ZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbj4m
IGFuaW1hdGlvbnMgPSBhbmltYXRpb25JdC0+c2Vjb25kOwogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgUHJvcGVydHlBbmltYXRpb25QYWlyJiBjdXJyUGFpciA9IGFuaW1hdGlvbnNbaV07Cisg
ICAgICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYgY3VyckFuaW1hdGlv
biA9IGFuaW1hdGlvbnNbaV07CiAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9jZXNzaW5nSW5m
by5hY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBSZW1vdmU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZyb21MYXllcihzdGF0aWNfY2FzdDxBbmlt
YXRlZFByb3BlcnR5SUQ+KGN1cnJQYWlyLmZpcnN0KSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJQ
YWlyLnNlY29uZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDQUFuaW1hdGlvbkZy
b21MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBjdXJy
QW5pbWF0aW9uLm1faW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgUGF1c2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXVz
ZUNBQW5pbWF0aW9uT25MYXllcihzdGF0aWNfY2FzdDxBbmltYXRlZFByb3BlcnR5SUQ+KGN1cnJQ
YWlyLmZpcnN0KSwgY3VyckFuaW1hdGlvbk5hbWUsIGN1cnJQYWlyLnNlY29uZCwgcHJvY2Vzc2lu
Z0luZm8udGltZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUNBQW5pbWF0
aW9uT25MYXllcihjdXJyQW5pbWF0aW9uLm1fcHJvcGVydHksIGN1cnJBbmltYXRpb25OYW1lLCBj
dXJyQW5pbWF0aW9uLm1faW5kZXgsIHByb2Nlc3NpbmdJbmZvLnRpbWVPZmZzZXQpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMTUyMSwxMiArMTUzMSwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlTGF5
ZXJBbmltYXRpb25zKCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6
aXRlcmF0b3IgaXQgPSBtX3J1bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5t
X25hbWUpOwogICAgICAgICAgICAgaWYgKGl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkp
IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8UHJvcGVydHlBbmltYXRpb25QYWlyPiBmaXJzdFBh
aXI7Ci0gICAgICAgICAgICAgICAgZmlyc3RQYWlyLmFwcGVuZChQcm9wZXJ0eUFuaW1hdGlvblBh
aXIocGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgp
KTsKLSAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRpb25zLmFkZChwZW5kaW5nQW5pbWF0
aW9uLm1fbmFtZSwgZmlyc3RQYWlyKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8TGF5ZXJQcm9w
ZXJ0eUFuaW1hdGlvbj4gYW5pbWF0aW9uczsKKyAgICAgICAgICAgICAgICBhbmltYXRpb25zLmFw
cGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKKyAgICAgICAgICAgICAgICBtX3J1bm5pbmdBbmltYXRp
b25zLmFkZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgYW5pbWF0aW9ucyk7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIFZlY3RvcjxQcm9wZXJ0eUFuaW1hdGlvblBhaXI+
JiBhbmltUGFpcnMgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgICAgIGFuaW1QYWlycy5hcHBl
bmQoUHJvcGVydHlBbmltYXRpb25QYWlyKHBlbmRpbmdBbmltYXRpb24ubV9wcm9wZXJ0eSwgcGVu
ZGluZ0FuaW1hdGlvbi5tX2luZGV4KSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPExheWVyUHJv
cGVydHlBbmltYXRpb24+JiBhbmltYXRpb25zID0gaXQtPnNlY29uZDsKKyAgICAgICAgICAgICAg
ICBhbmltYXRpb25zLmFwcGVuZChwZW5kaW5nQW5pbWF0aW9uKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICAKQEAgLTE1MzgsMTAgKzE1NDgsMTMgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ0E6OnNldENBQW5pbWF0aW9uT25MYXllcihDQVByb3BlcnR5QW5pbWF0aW9uKiBjYUFuaW0s
IEFuaW1hdGUKIHsKICAgICBQbGF0Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJv
cGVydHkpOwogCi0gICAgW2NhQW5pbSBzZXRUaW1lT2Zmc2V0OnRpbWVPZmZzZXRdOwotICAgIAot
ICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFt
ZSwgaW5kZXgpOwotICAgIAorICAgIGlmICh0aW1lT2Zmc2V0KSB7CisgICAgICAgIFtjYUFuaW0g
c2V0QmVnaW5UaW1lOkNBQ3VycmVudE1lZGlhVGltZSgpIC0gdGltZU9mZnNldF07CisgICAgICAg
IFtjYUFuaW0gc2V0VmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5Oldl
YktpdEFuaW1hdGlvbkJlZ2luVGltZVNldEtleV07CisgICAgfQorCisgICAgTlNTdHJpbmcgKmFu
aW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwg
aW5kZXgpOworCiAgICAgW2xheWVyIHJlbW92ZUFuaW1hdGlvbkZvcktleTphbmltYXRpb25JRF07
CiAgICAgW2xheWVyIGFkZEFuaW1hdGlvbjpjYUFuaW0gZm9yS2V5OmFuaW1hdGlvbklEXTsKIApA
QCAtMTU3Nyw3ICsxNTkwLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlbW92ZUNBQW5pbWF0
aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY28KIHsKICAgICBQbGF0
Zm9ybUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwogCi0gICAgU3RyaW5n
IGFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBpbmRleCk7
CisgICAgTlNTdHJpbmcgKmFuaW1hdGlvbklEID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRp
b25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgpOwogCiAgICAgaWYgKCFbbGF5ZXIgYW5pbWF0aW9uRm9y
S2V5OmFuaW1hdGlvbklEXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTYxMywxMyArMTYy
NiwxNiBAQCBzdGF0aWMgdm9pZCBjb3B5QW5pbWF0aW9uUHJvcGVydGllcyhDQVByb3BlcnR5QW5p
bWF0aW9uKiBmcm9tLCBDQVByb3BlcnR5QW5pbWF0aQogI2lmIEhBVkVfTU9ERVJOX1FVQVJUWkNP
UkUKICAgICBbdG8gc2V0VmFsdWVGdW5jdGlvbjpbZnJvbSB2YWx1ZUZ1bmN0aW9uXV07CiAjZW5k
aWYKKworICAgIGlmIChpZCBvYmplY3QgPSBbZnJvbSB2YWx1ZUZvcktleTpXZWJLaXRBbmltYXRp
b25CZWdpblRpbWVTZXRLZXldKQorICAgICAgICBbdG8gc2V0VmFsdWU6b2JqZWN0IGZvcktleTpX
ZWJLaXRBbmltYXRpb25CZWdpblRpbWVTZXRLZXldOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgZG91YmxlIHRpbWVPZmZzZXQp
CiB7CiAgICAgUGxhdGZvcm1MYXllciogbGF5ZXIgPSBhbmltYXRlZExheWVyKHByb3BlcnR5KTsK
IAotICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50aWZpZXIoYW5pbWF0aW9u
TmFtZSwgaW5kZXgpOworICAgIE5TU3RyaW5nICphbmltYXRpb25JRCA9IGFuaW1hdGlvbklkZW50
aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4KTsKIAogICAgIENBQW5pbWF0aW9u
ICpjYUFuaW0gPSBbbGF5ZXIgYW5pbWF0aW9uRm9yS2V5OmFuaW1hdGlvbklEXTsKICAgICBpZiAo
IWNhQW5pbSkK
</data>
<flag name="review"
          id="58369"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>