<?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>129551</bug_id>
          
          <creation_ts>2014-03-01 12:25:22 -0800</creation_ts>
          <short_desc>Split UserActivity, simplify PageThrottler</short_desc>
          <delta_ts>2014-03-02 12:38:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>985956</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-03-01 12:25:22 -0800</bug_when>
    <thetext>The class UserActivity currently implements two things – a hysteresis mechanism, and an abstraction of NSActivity controlled by that mechanism. PageThrottler implements its own hysteresis mechanism, which directly controls DOM timer throttling and also controls a couple of UserActivities, giving a total of 3 separate hysteresis mechanisms, layered two deep.

Split UserActivity into three, with HysteresisActivity implementing an abstract hysteresis mechanism, UserActivity::Impl controlling the NSActivity, and then UserActivity combining these two back together. The interface to UserActivity is unchanged.

Remove PageThrottler&apos;s bespoke hysteresis, replacing it with a use of HysteresisActivity. Replace the two UserActivities with a single UserActivity::Impl, so there are no longer layered hysteresis mechanisms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986020</commentid>
    <comment_count>1</comment_count>
      <attachid>225575</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-03-01 17:04:03 -0800</bug_when>
    <thetext>Created attachment 225575
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986029</commentid>
    <comment_count>2</comment_count>
      <attachid>225575</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-03-01 18:13:00 -0800</bug_when>
    <thetext>Comment on attachment 225575
Fix

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

&gt; Source/WebCore/platform/HysteresisActivity.h:42
&gt; +    UserActivity(const char* description);

Should mark this explicit.

&gt; Source/WebCore/platform/HysteresisActivity.h:56
&gt; +private:
&gt; +#if HAVE(NS_ACTIVITY)
&gt; +    void hysteresisTimerFired();
&gt; +    bool isValid();
&gt; +
&gt; +    bool m_active;
&gt; +    RetainPtr&lt;NSString&gt; m_description;
&gt; +    RunLoop::Timer&lt;UserActivity&gt; m_timer;
&gt; +    RetainPtr&lt;id&gt; m_activity;
&gt; +#endif

I think the private has to go inside the #if or we won’t compile with it off. Maybe that’s one reason for the red I see below in EWS.

&gt; Source/WebCore/platform/HysteresisActivity.h:36
&gt; +    HysteresisActivity(Delegate* delegate, double hysteresisSeconds = DefaultHysteresisSeconds)

Can delegate be a reference instead of a pointer? I think that would be much better.

Also, I think this constructor should be marked explicit.

&gt; Source/WebCore/platform/HysteresisActivity.h:74
&gt; +    constexpr static const double DefaultHysteresisSeconds = 5.0;

I don’t think we have working constexpr on the Windows compiler. We maybe were working around it with a macro? I’d ask Anders about this.

&gt; Source/WebCore/platform/UserActivity.h:45
&gt; +        Impl(const char* description);

explicit

&gt; Source/WebCore/platform/UserActivity.h:57
&gt; +    UserActivity(const char* description);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986061</commentid>
    <comment_count>3</comment_count>
      <attachid>225590</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-03-01 23:38:43 -0800</bug_when>
    <thetext>Created attachment 225590
EWS fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986137</commentid>
    <comment_count>4</comment_count>
      <attachid>225603</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-03-02 11:29:33 -0800</bug_when>
    <thetext>Created attachment 225603
GTK fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986150</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-03-02 12:38:59 -0800</bug_when>
    <thetext>Transmitting file data ............
Committed revision 164948.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225575</attachid>
            <date>2014-03-01 17:04:03 -0800</date>
            <delta_ts>2014-03-01 18:13:00 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>129551.1.patch</filename>
            <type>text/plain</type>
            <size>26451</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDkyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDE0LTAzLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBVc2Vy
QWN0aXZpdHksIHNpbXBsaWZ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjbGFzcyBVc2VyQWN0aXZpdHkgY3VycmVudGx5
IGltcGxlbWVudHMgdHdvIHRoaW5ncyDigJMgYSBoeXN0ZXJlc2lzIG1lY2hhbmlzbSwgYW5kCisg
ICAgICAgIGFuIGFic3RyYWN0aW9uIG9mIE5TQWN0aXZpdHkgY29udHJvbGxlZCBieSB0aGF0IG1l
Y2hhbmlzbS4gUGFnZVRocm90dGxlciBpbXBsZW1lbnRzCisgICAgICAgIGl0cyBvd24gaHlzdGVy
ZXNpcyBtZWNoYW5pc20sIHdoaWNoIGRpcmVjdGx5IGNvbnRyb2xzIERPTSB0aW1lciB0aHJvdHRs
aW5nIGFuZCBhbHNvCisgICAgICAgIGNvbnRyb2xzIGEgY291cGxlIG9mIFVzZXJBY3Rpdml0aWVz
LCBnaXZpbmcgYSB0b3RhbCBvZiAzIHNlcGFyYXRlIGh5c3RlcmVzaXMgbWVjaGFuaXNtcywKKyAg
ICAgICAgbGF5ZXJlZCB0d28gZGVlcC4KKworICAgICAgICBTcGxpdCBVc2VyQWN0aXZpdHkgaW50
byB0aHJlZSwgd2l0aCBIeXN0ZXJlc2lzQWN0aXZpdHkgaW1wbGVtZW50aW5nIGFuIGFic3RyYWN0
IGh5c3RlcmVzaXMKKyAgICAgICAgbWVjaGFuaXNtLCBVc2VyQWN0aXZpdHk6OkltcGwgY29udHJv
bGxpbmcgdGhlIE5TQWN0aXZpdHksIGFuZCB0aGVuIFVzZXJBY3Rpdml0eSBjb21iaW5pbmcKKyAg
ICAgICAgdGhlc2UgdHdvIGJhY2sgdG9nZXRoZXIuIFRoZSBpbnRlcmZhY2UgdG8gVXNlckFjdGl2
aXR5IGlzIHVuY2hhbmdlZC4KKworICAgICAgICBSZW1vdmUgUGFnZVRocm90dGxlcidzIGJlc3Bv
a2UgaHlzdGVyZXNpcywgcmVwbGFjaW5nIGl0IHdpdGggYSB1c2Ugb2YgSHlzdGVyZXNpc0FjdGl2
aXR5LgorICAgICAgICBSZXBsYWNlIHRoZSB0d28gVXNlckFjdGl2aXRpZXMgd2l0aCBhIHNpbmds
ZSBVc2VyQWN0aXZpdHk6OkltcGwsIHNvIHRoZXJlIGFyZSBubyBsb25nZXIKKyAgICAgICAgbGF5
ZXJlZCBoeXN0ZXJlc2lzIG1lY2hhbmlzbXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgICAgIC0gZXhwb3J0cyBjaGFuZ2VkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gYWRkZWQgSHlzdGVyZXNpc0FjdGl2
aXR5LmguCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAgICAgLSBpZiB0aGUg
cGFnZSBzdGFydHMgdmlzaWJsZSwgYmVnaW4gYWN0aXZpdHkuIElmIGl0IHN0YXJ0cyBoaWRkZW4g
dGhyb3R0bGUgRE9NIHRpbWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6Omhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAgICAgLSB3
aGVuIHRoZSBET00gdGltZXIgdGhyb3R0bGluZyBzZXR0aW5nIGNoYW5nZXMsIG1ha2Ugc3VyZSB3
ZSB1cGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRBY3Rp
dml0eUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFj
dGl2aXR5Q291bnQpOgorICAgICAgICAgICAgLSB3aGVuIG1fYWN0aXZpdHlDb3VudCBjaGFuZ2Vz
IHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJv
dHRsZXI6OnVwZGF0ZUh5c3RlcmVzaXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6c2V0Vmlld1N0YXRlKToKKyAgICAgICAgICAgIC0gd2hlbiBJc1Zpc3VhbGx5SWRsZSBjaGFu
Z2VzIHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OnN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c3Rv
cHBlZCk6CisgICAgICAgICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNBY3Rpdml0eSwg
dGhlc2UgY29udHJvbCBtX2FjdGl2aXR5IGFuZCBET00gdGltZXIgdGhyb3R0bGluZy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRs
ZXI6OmRpZFJlY2VpdmVVc2VySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6cGx1Z2luRGlkRXZhbHVhdGUpOgorICAgICAgICAgICAgLSBjYWxsIGltcHVsc2UgdG8gdGVt
cG9yYXJpbHkgZW5hYmxlIHRoZSBhY3Rpdml0eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFj
dGl2aXR5LmguCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHk6Okh5c3RlcmVz
aXNBY3Rpdml0eSk6CisgICAgICAgICAgICAtIGNvbnN0cnVjdG9yIHRha2VzIGEgZGVsZWdhdGUg
b3B0aW9uYWxseSBhIHRpbWVvdXQuCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZp
dHk6OnN0YXJ0KToKKyAgICAgICAgICAgIC0gc3RhcnQgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIElm
IHN0b3BwZWQsIGNhbGwgc3RhcnRlZCBtZXRob2Qgb24gZGVsZWdhdGUuIElmIGluIHRpbWVvdXQg
cGVyaW9kLCBjYW5jZWwgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6SHlzdGVyZXNpc0Fj
dGl2aXR5OjpzdG9wKToKKyAgICAgICAgICAgIC0gc3RvcCBhY3Rpdml0eSBhZnRlciBoeXN0ZXJl
c2lzLiBJZiBzdGFydGVkLCBpbml0aWF0ZSB0aW1lb3V0IHBlcmlvZC4KKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6aW1wdWxzZSk6CisgICAgICAgICAgICAtIGVuc3VyZSBh
Y3Rpdml0eSBmb3IgYXQgbGVhc3QgdGhlIHRpbWVvdXQgcGVyaW9kLgorICAgICAgICAoV2ViQ29y
ZTo6SHlzdGVyZXNpc0FjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICAg
ICAtIGRlbGF5ZWQgc3RvcCAtIHdoZW4gdGhlIHRpbWVyIGZpcmVzIGNhbGwgc3RvcHBlZCBvbiB0
aGUgZGVsZWdhdGUuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQWN0aXZpdHk6OkltcGw6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckFjdGl2aXR5OjpJbXBsOjplbmRBY3Rpdml0eSk6CisgICAgICAgICAgICAtIG5vcCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5
KToKKyAgICAgICAgICAgIC0gVXNlckFjdGl2aXR5IG1haW50YWlucyBleGlzdGluZyBpbnRlcmZh
Y2Ugd2l0aCBoeXN0ZXJlc2lzLgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2aXR5OjpzdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6c3RvcHBlZCk6CisgICAgICAg
ICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNUaW1lcjsgZm9yd2FyZCB0byBJbXBsLgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Vc2VyQWN0aXZpdHlNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6Oklt
cGw6OkltcGwpOgorICAgICAgICAgICAgLSBVc2VyQWN0aXZpdHk6OkltcGwsIGFic3RyYWN0aW9u
IGZvciBOU0FjdGl2aXR5IHdpdGhvdXQgYWRkZWQgaHlzdGVyZXNpcy4KKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgICAgICAtIGFs
bG9jYXRlIE5TQWN0aXZpdHkuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OkltcGw6
OmVuZEFjdGl2aXR5KToKKyAgICAgICAgICAgIC0gcmVsZWFzZSBOU0FjdGl2aXR5LgorCiAyMDE0
LTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE5v
ZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIGxlYWtzIG1lbW9yeSBzdHJ1Y3R1cmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjQ5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjQwLDggKzI0MCw3IEBAIF9fWk43V2Vi
Q29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3I4
c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05T
XzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3JEMUV2Ci1fX1pON1dlYkNvcmUxMlVzZXJBY3Rpdml0eTRzdG9wRXYKLV9fWk43V2ViQ29y
ZTEyVXNlckFjdGl2aXR5NXN0YXJ0RXYKK19fWk43V2ViQ29yZTEyVXNlckFjdGl2aXR5N3N0YXJ0
ZWRFdgogX19aTjdXZWJDb3JlMTJVc2VyQWN0aXZpdHlDMUVQS2MKIF9fWk43V2ViQ29yZTEyVVRG
OEVuY29kaW5nRXYKIF9fWk43V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3Vu
dEV2CkBAIC0zMTgsNyArMzE3LDcgQEAgX19aTjdXZWJDb3JlMTNLZXlib2FyZEV2ZW50QzFFUktO
U18yMVBsYQogX19aTjdXZWJDb3JlMTNOb2RlVHJhdmVyc2FsMTNkZWVwTGFzdENoaWxkRVBOU180
Tm9kZUUKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDE5bmV4dEFuY2VzdG9yU2libGluZ0VQ
S05TXzROb2RlRQogX19aTjdXZWJDb3JlMTNOb2RlVHJhdmVyc2FsMTluZXh0QW5jZXN0b3JTaWJs
aW5nRVBLTlNfNE5vZGVFUzNfCi1fX1pON1dlYkNvcmUxM1BhZ2VUaHJvdHRsZXIyMnJlcG9ydElu
dGVyZXN0aW5nRXZlbnRFdgorX19aTjdXZWJDb3JlMTNQYWdlVGhyb3R0bGVyN3N0YXJ0ZWRFdgog
X19aTjdXZWJDb3JlMTNQYWdlVGhyb3R0bGVyRDFFdgogX19aTjdXZWJDb3JlMTNRdWFsaWZpZWRO
YW1lRDFFdgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDdOU0Vycm9yCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNjQ5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5MzcsNiArMjkzNyw3IEBACiAJCTg2MUMy
RUE0MTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxQzJFQTMxM0ZCNEZERDAwMDYy
QUJCIC8qIERvY3VtZW50TG9hZFRpbWluZy5jcHAgKi87IH07CiAJCTg2MUMyRUE2MTNGQjRGRkYw
MDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291
cmNlTG9hZFRpbWluZy5jcHAgKi87IH07CiAJCTg2MkYxMjlFMThDMTU3NkYwMDVDNTRBRiAvKiBD
b3VudGVkVXNlckFjdGl2aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjJGMTI5RDE4QzE1NzJDMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
MkYxMkEwMThDMUREMDIwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MkYxMjlGMThDMURDRTQwMDVD
NTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjUxMkVERTE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZy5jcHAgKi87IH07CiAJCTg2NTEyRURGMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjUxMkVEQzE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZy5oICovOyB9OwogCQk4Njc4RDBCQjE4NzhFODkxMDAzQUJERTYgLyogVmlld1N0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc4
RDBCQTE4NzhFODEwMDAzQUJERTYgLyogVmlld1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk4NDAsNiArOTg0MSw3IEBACiAJCTg2MUMy
RUEzMTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkVGltaW5nLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291
cmNlTG9hZFRpbWluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvdXJjZUxvYWRUaW1pbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjJG
MTI5RDE4QzE1NzJDMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb3VudGVkVXNlckFjdGl2aXR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTg2MkYxMjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lz
QWN0aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSHlzdGVyZXNpc0Fj
dGl2aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NTEyRURCMTU0QTJBRUUw
MEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjUxMkVEQzE1NEEyQUVGMDBBOTA0MjYgLyogUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2NTEyRUREMTU0QTJBRUYwMEE5MDQyNiAvKiBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5n
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzMwLDYgKzIwNzMyLDcgQEAKIAkJ
CQlENkZEQUVGMjE0OUMwNjE5MDAzN0IxRTEgLyogSGlzdG9ncmFtU3VwcG9ydC5jcHAgKi8sCiAJ
CQkJRDYzMEUyQUIxNDlCRjM0NDAwNUIyRjkzIC8qIEhpc3RvZ3JhbVN1cHBvcnQuaCAqLywKIAkJ
CQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAorCQkJCTg2MkYx
MjlGMThDMURDRTQwMDVDNTRBRiAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkxQUUw
MEQ1NzE4MkRBQzhEMDAwODdERDcgLyogS2V5ZWRDb2RpbmcuaCAqLywKIAkJCQk1MjFENDZGNzEx
QUVDOUIxMDA1MTQ2MTMgLyogS2lsbFJpbmcuaCAqLywKIAkJCQk0MzA2RTRFNTE0OTU1NTQzMDA3
RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCAqLywKQEAgLTIzNzcxLDYgKzIzNzc0LDcgQEAKIAkJ
CQk0NDE1MjkyRTBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQjAwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxQcmVFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3MzEyMjg4M0U5MDBCODFGRjggLyogSFRN
TFByZWxvYWRTY2FubmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NjJGMTJBMDE4QzFERDAyMDA1
QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNDNCRjU5
OTExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThDRkY3QTMwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RDIyM0ZFMTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQ
cmVsb2FkZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
VGhyb3R0bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJv
dHRsZXIuY3BwCShyZXZpc2lvbiAxNjQ5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VU
aHJvdHRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwzNCArMzUsMjUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZG91YmxlIGtUaHJvdHRsZUh5c3RlcmVzaXNT
ZWNvbmRzID0gMi4wOwotCiBQYWdlVGhyb3R0bGVyOjpQYWdlVGhyb3R0bGVyKFBhZ2UmIHBhZ2Us
IFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBt
X3ZpZXdTdGF0ZSh2aWV3U3RhdGUpCi0gICAgLCBtX3Rocm90dGxlU3RhdGUoUGFnZU5vdFRocm90
dGxlZFN0YXRlKQotICAgICwgbV90aHJvdHRsZUh5c3RlcmVzaXNUaW1lcih0aGlzLCAmUGFnZVRo
cm90dGxlcjo6dGhyb3R0bGVIeXN0ZXJlc2lzVGltZXJGaXJlZCkKICAgICAsIG1fd2Vha1B0ckZh
Y3RvcnkodGhpcykKKyAgICAsIG1faHlzdGVyZXNpcyh0aGlzKQorICAgICwgbV9hY3Rpdml0eSgi
UGFnZSBpcyBhY3RpdmUuIikKICAgICAsIG1fYWN0aXZpdHlDb3VudCgwKQotICAgICwgbV92aXN1
YWxseU5vbklkbGUoIlBhZ2UgaXMgbm90IHZpc3VhbGx5IGlkbGUuIikKLSAgICAsIG1fcGFnZUFj
dGl2aXR5KCJQYWdlIGlzIGFjdGl2ZS4iKQotewotICAgIG1fcGFnZUFjdGl2aXR5LmluY3JlbWVu
dCgpOwotCi0gICAgc2V0SXNWaXN1YWxseUlkbGUodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zp
c3VhbGx5SWRsZSk7Ci19Ci0KLVBhZ2VUaHJvdHRsZXI6On5QYWdlVGhyb3R0bGVyKCkKIHsKLSAg
ICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxzZSk7Ci0KLSAgICBpZiAobV90
aHJvdHRsZVN0YXRlICE9IFBhZ2VUaHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgbV9wYWdlQWN0aXZp
dHkuZGVjcmVtZW50KCk7CisgICAgaWYgKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3Vh
bGx5SWRsZSkKKyAgICAgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQodHJ1ZSk7
CisgICAgZWxzZQorICAgICAgICBtX2h5c3RlcmVzaXMuc3RhcnQoKTsKIH0KIAogdm9pZCBQYWdl
VGhyb3R0bGVyOjpoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChtX3Rocm90dGxlU3RhdGUgIT0g
UGFnZU5vdFRocm90dGxlZFN0YXRlKTsKKyAgICAvLyBJZiB0aW1lciB0aHJvdHRsaW5nIGlzIGVu
YWJsZWQsIHRoaXMgd2lsbCB0ZW1wb3JhcmlseSBkaXNhYmxlIGl0LgorICAgIC8vIEFmdGVyIGEg
dGltZW91dCBpdCB3aWxsIGJlIHJlZW5hYmxlZCwgcmVyZWFkaW5nIHRoZSBzZXR0aW5nLgorICAg
IG1faHlzdGVyZXNpcy5pbXB1bHNlKCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZp
dHlBc3NlcnRpb25Ub2tlbj4gUGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRva2VuKCkKQEAg
LTc1LDI3ICs2NiwyNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9r
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+
KCp0aGlzKTsKIH0KIAotdm9pZCBQYWdlVGhyb3R0bGVyOjp0aHJvdHRsZVBhZ2UoKQordm9pZCBQ
YWdlVGhyb3R0bGVyOjppbmNyZW1lbnRBY3Rpdml0eUNvdW50KCkKIHsKLSAgICBtX3Rocm90dGxl
U3RhdGUgPSBQYWdlVGhyb3R0bGVkU3RhdGU7Ci0KLSAgICBtX3BhZ2VBY3Rpdml0eS5kZWNyZW1l
bnQoKTsKLQotICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKHRydWUpOworICAg
ICsrbV9hY3Rpdml0eUNvdW50OworICAgIHVwZGF0ZUh5c3RlcmVzaXMoKTsKIH0KIAotdm9pZCBQ
YWdlVGhyb3R0bGVyOjp1bnRocm90dGxlUGFnZSgpCit2b2lkIFBhZ2VUaHJvdHRsZXI6OmRlY3Jl
bWVudEFjdGl2aXR5Q291bnQoKQogewotICAgIFBhZ2VUaHJvdHRsZVN0YXRlIG9sZFN0YXRlID0g
bV90aHJvdHRsZVN0YXRlOwotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VOb3RUaHJvdHRsZWRT
dGF0ZTsKLQotICAgIGlmIChvbGRTdGF0ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCi0gICAg
ICAgIHJldHVybjsKKyAgICAtLW1fYWN0aXZpdHlDb3VudDsKKyAgICB1cGRhdGVIeXN0ZXJlc2lz
KCk7Cit9CiAKLSAgICBpZiAob2xkU3RhdGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQotICAgICAg
ICBtX3BhZ2VBY3Rpdml0eS5pbmNyZW1lbnQoKTsKLSAgICAKLSAgICBtX3BhZ2Uuc2V0VGltZXJU
aHJvdHRsaW5nRW5hYmxlZChmYWxzZSk7Cit2b2lkIFBhZ2VUaHJvdHRsZXI6OnVwZGF0ZUh5c3Rl
cmVzaXMoKQoreworICAgIGlmIChtX2FjdGl2aXR5Q291bnQgfHwgIShtX3ZpZXdTdGF0ZSAmIFZp
ZXdTdGF0ZTo6SXNWaXN1YWxseUlkbGUpKQorICAgICAgICBtX2h5c3RlcmVzaXMuc3RhcnQoKTsK
KyAgICBlbHNlCisgICAgICAgIG1faHlzdGVyZXNpcy5zdG9wKCk7CiB9CiAKIHZvaWQgUGFnZVRo
cm90dGxlcjo6c2V0Vmlld1N0YXRlKFZpZXdTdGF0ZTo6RmxhZ3Mgdmlld1N0YXRlKQpAQCAtMTAz
LDg4ICs5MSwyMCBAQCB2b2lkIFBhZ2VUaHJvdHRsZXI6OnNldFZpZXdTdGF0ZShWaWV3U3RhCiAg
ICAgVmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkID0gbV92aWV3U3RhdGUgXiB2aWV3U3RhdGU7CiAg
ICAgbV92aWV3U3RhdGUgPSB2aWV3U3RhdGU7CiAKLSAgICBpZiAoY2hhbmdlZCAmIFZpZXdTdGF0
ZTo6SXNWaXNpYmxlKQotICAgICAgICBzZXRJc1Zpc2libGUodmlld1N0YXRlICYgVmlld1N0YXRl
OjpJc1Zpc2libGUpOwogICAgIGlmIChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRs
ZSkKLSAgICAgICAgc2V0SXNWaXN1YWxseUlkbGUodmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zp
c3VhbGx5SWRsZSk7CisgICAgICAgIHVwZGF0ZUh5c3RlcmVzaXMoKTsKIH0KIAotdm9pZCBQYWdl
VGhyb3R0bGVyOjpzZXRJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCit2b2lkIFBhZ2VUaHJvdHRs
ZXI6OnN0YXJ0ZWQoKQogewotICAgIGlmIChpc1Zpc2libGUpCi0gICAgICAgIG1fcGFnZS5zZXRU
aW1lclRocm90dGxpbmdFbmFibGVkKGZhbHNlKTsKLSAgICBlbHNlIGlmIChtX3Rocm90dGxlU3Rh
dGUgIT0gUGFnZU5vdFRocm90dGxlZFN0YXRlKQotICAgICAgICBtX3BhZ2Uuc2V0VGltZXJUaHJv
dHRsaW5nRW5hYmxlZCh0cnVlKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjpzZXRJc1Zpc3Vh
bGx5SWRsZShib29sIGlzVmlzdWFsbHlJZGxlKQotewotICAgIGlmIChpc1Zpc3VhbGx5SWRsZSkg
ewotICAgICAgICBtX3Rocm90dGxlU3RhdGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsK
LSAgICAgICAgc3RhcnRUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOwotICAgICAgICBtX3Zpc3Vh
bGx5Tm9uSWRsZS5zdG9wKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdW50aHJvdHRsZVBhZ2Uo
KTsKLSAgICAgICAgc3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Ci0gICAgICAgIG1fdmlz
dWFsbHlOb25JZGxlLnN0YXJ0KCk7Ci0gICAgfQotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnN0
b3BUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpCi17Ci0gICAgbV90aHJvdHRsZUh5c3RlcmVzaXNU
aW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6cmVwb3J0SW50ZXJlc3RpbmdF
dmVudCgpCi17Ci0gICAgaWYgKG1fdGhyb3R0bGVTdGF0ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3Rh
dGUpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VUaHJv
dHRsZWRTdGF0ZSkKLSAgICAgICAgdW50aHJvdHRsZVBhZ2UoKTsKLSAgICBtX3Rocm90dGxlU3Rh
dGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKLSAgICBzdGFydFRocm90dGxlSHlzdGVy
ZXNpc1RpbWVyKCk7Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6c3RhcnRUaHJvdHRsZUh5c3Rl
cmVzaXNUaW1lcigpCi17Ci0gICAgaWYgKG1fdGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV90aHJvdHRsZUh5c3RlcmVzaXNUaW1lci5zdG9wKCk7Ci0gICAgaWYg
KCFtX2FjdGl2aXR5Q291bnQpCi0gICAgICAgIG1fdGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIuc3Rh
cnRPbmVTaG90KGtUaHJvdHRsZUh5c3RlcmVzaXNTZWNvbmRzKTsKLX0KLQotdm9pZCBQYWdlVGhy
b3R0bGVyOjp0aHJvdHRsZUh5c3RlcmVzaXNUaW1lckZpcmVkKFRpbWVyPFBhZ2VUaHJvdHRsZXI+
JikKLXsKLSAgICBBU1NFUlQoIW1fYWN0aXZpdHlDb3VudCk7Ci0gICAgdGhyb3R0bGVQYWdlKCk7
Ci19Ci0KLXZvaWQgUGFnZVRocm90dGxlcjo6aW5jcmVtZW50QWN0aXZpdHlDb3VudCgpCi17Ci0g
ICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgZXZlbnRzIHRoYXQgYmxvY2sgdGhyb3R0bGluZyB3
ZSBjYW4gcmV0dXJuIGVhcmx5Ci0gICAgaWYgKG1fYWN0aXZpdHlDb3VudCsrKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RUaHJvdHRsZWRTdGF0
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdGhyb3R0bGVTdGF0ZSA9PSBQYWdlVGhy
b3R0bGVkU3RhdGUpCi0gICAgICAgIHVudGhyb3R0bGVQYWdlKCk7Ci0KLSAgICBtX3Rocm90dGxl
U3RhdGUgPSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZTsKLSAgICBzdG9wVGhyb3R0bGVIeXN0
ZXJlc2lzVGltZXIoKTsKKyAgICBtX3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgbV9hY3Rpdml0eS5iZWdpbkFjdGl2aXR5KCk7CiB9CiAKLXZvaWQgUGFnZVRocm90
dGxlcjo6ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCit2b2lkIFBhZ2VUaHJvdHRsZXI6OnN0b3Bw
ZWQoKQogewotICAgIGlmICgtLW1fYWN0aXZpdHlDb3VudCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKG1fdGhyb3R0bGVTdGF0ZSA9PSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVChtX3Rocm90dGxlU3RhdGUgPT0gUGFnZVdhaXRpbmdUb1Ro
cm90dGxlU3RhdGUpOwotICAgIHN0YXJ0VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKKyAgICBt
X3BhZ2Uuc2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBtX2FjdGl2aXR5LmVu
ZEFjdGl2aXR5KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90
dGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5o
CShyZXZpc2lvbiAxNjQ5MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiVGltZXIuaCIK
IAotI2luY2x1ZGUgIkNvdW50ZWRVc2VyQWN0aXZpdHkuaCIKKyNpbmNsdWRlICJVc2VyQWN0aXZp
dHkuaCIKICNpbmNsdWRlICJWaWV3U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQzLDQ5ICs0MywzNCBAQCBjbGFzcyBQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbjsKIGNsYXNzIFBhZ2VUaHJvdHRsZXIgewogcHVibGljOgogICAg
IFBhZ2VUaHJvdHRsZXIoUGFnZSYsIFZpZXdTdGF0ZTo6RmxhZ3MpOwotICAgIH5QYWdlVGhyb3R0
bGVyKCk7CiAKICAgICB2b2lkIHNldFZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzKTsKIAotICAg
IHZvaWQgZGlkUmVjZWl2ZVVzZXJJbnB1dCgpIHsgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOyB9
Ci0gICAgdm9pZCBwbHVnaW5EaWRFdmFsdWF0ZSgpIHsgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgp
OyB9CisgICAgdm9pZCBkaWRSZWNlaXZlVXNlcklucHV0KCkgeyBtX2h5c3RlcmVzaXMuaW1wdWxz
ZSgpOyB9CisgICAgdm9pZCBwbHVnaW5EaWRFdmFsdWF0ZSgpIHsgbV9oeXN0ZXJlc2lzLmltcHVs
c2UoKTsgfQogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4g
bWVkaWFBY3Rpdml0eVRva2VuKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuPiBwYWdlTG9hZEFjdGl2aXR5VG9rZW4oKTsKIAogICAgIHZvaWQgaGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ1N0YXRlQ2hhbmdlZCgpOwogCiBwcml2YXRlOgotICAgIGVu
dW0gUGFnZVRocm90dGxlU3RhdGUgewotICAgICAgICBQYWdlTm90VGhyb3R0bGVkU3RhdGUsCi0g
ICAgICAgIFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlLAotICAgICAgICBQYWdlVGhyb3R0bGVk
U3RhdGUKLSAgICB9OwotCiAgICAgZnJpZW5kIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRv
a2VuOwogICAgIFdlYWtQdHI8UGFnZVRocm90dGxlcj4gd2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vh
a1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAgICAgdm9pZCBpbmNyZW1lbnRBY3Rpdml0
eUNvdW50KCk7CiAgICAgdm9pZCBkZWNyZW1lbnRBY3Rpdml0eUNvdW50KCk7CiAKLSAgICB2b2lk
IHJlcG9ydEludGVyZXN0aW5nRXZlbnQoKTsKLQotICAgIHZvaWQgc3RhcnRUaHJvdHRsZUh5c3Rl
cmVzaXNUaW1lcigpOwotICAgIHZvaWQgc3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Ci0g
ICAgdm9pZCB0aHJvdHRsZUh5c3RlcmVzaXNUaW1lckZpcmVkKFRpbWVyPFBhZ2VUaHJvdHRsZXI+
Jik7Ci0KLSAgICB2b2lkIHRocm90dGxlUGFnZSgpOwotICAgIHZvaWQgdW50aHJvdHRsZVBhZ2Uo
KTsKKyAgICB2b2lkIHVwZGF0ZUh5c3RlcmVzaXMoKTsKIAotICAgIHZvaWQgc2V0SXNWaXN1YWxs
eUlkbGUoYm9vbCk7Ci0gICAgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CisgICAgZnJpZW5kIGNs
YXNzIEh5c3RlcmVzaXNBY3Rpdml0eTxQYWdlVGhyb3R0bGVyPjsKKyAgICB2b2lkIHN0YXJ0ZWQo
KTsKKyAgICB2b2lkIHN0b3BwZWQoKTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKICAgICBWaWV3U3Rh
dGU6OkZsYWdzIG1fdmlld1N0YXRlOwotICAgIFBhZ2VUaHJvdHRsZVN0YXRlIG1fdGhyb3R0bGVT
dGF0ZTsKLSAgICBUaW1lcjxQYWdlVGhyb3R0bGVyPiBtX3Rocm90dGxlSHlzdGVyZXNpc1RpbWVy
OwogICAgIFdlYWtQdHJGYWN0b3J5PFBhZ2VUaHJvdHRsZXI+IG1fd2Vha1B0ckZhY3Rvcnk7Cisg
ICAgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VUaHJvdHRsZXI+IG1faHlzdGVyZXNpczsKKyAgICBV
c2VyQWN0aXZpdHk6OkltcGwgbV9hY3Rpdml0eTsKICAgICBzaXplX3QgbV9hY3Rpdml0eUNvdW50
OwotICAgIFVzZXJBY3Rpdml0eSBtX3Zpc3VhbGx5Tm9uSWRsZTsKLSAgICBDb3VudGVkVXNlckFj
dGl2aXR5IG1fcGFnZUFjdGl2aXR5OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgJKHJldmlzaW9uIDE2NDkxMykJKGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5Lmg6MTY0OTEzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVXNlckFjdGl2aXR5X2gKKyNkZWZpbmUg
VXNlckFjdGl2aXR5X2gKKworI2lmIEhBVkUoTlNfQUNUSVZJVFkpCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CitPQkpDX0NMQVNTIE5TU3RyaW5n
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhlIFVzZXJBY3Rpdml0eSB0
eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gdGhhdAorLy8g
YSB1c2VyIGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlvbiBpcyB0YWtpbmcgcGxhY2UsIGFuZCBh
cyBzdWNoIHRoYXQKKy8vIHJlc291cmNlcyBzaG91bGQgYmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9j
ZXNzIGFjY29yZGluZ2x5LgorY2xhc3MgVXNlckFjdGl2aXR5IHsKK3B1YmxpYzoKKyAgICBVc2Vy
QWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCisgICAgdm9pZCBzdGFydCgpOwor
ICAgIHZvaWQgc3RvcCgpOworCitwcml2YXRlOgorI2lmIEhBVkUoTlNfQUNUSVZJVFkpCisgICAg
dm9pZCBoeXN0ZXJlc2lzVGltZXJGaXJlZCgpOworICAgIGJvb2wgaXNWYWxpZCgpOworCisgICAg
Ym9vbCBtX2FjdGl2ZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZGVzY3JpcHRpb247Cisg
ICAgUnVuTG9vcDo6VGltZXI8VXNlckFjdGl2aXR5PiBtX3RpbWVyOworICAgIFJldGFpblB0cjxp
ZD4gbV9hY3Rpdml0eTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCit1
c2luZyBXZWJDb3JlOjpVc2VyQWN0aXZpdHk7CisKKyNlbmRpZiAvLyBVc2VyQWN0aXZpdHlfaApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgJKHdv
cmtpbmcgY29weSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw0MSArMjMsNjggQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFVzZXJBY3Rpdml0eV9oCi0jZGVmaW5l
IFVzZXJBY3Rpdml0eV9oCisjaWZuZGVmIEh5c3RlcmVzaXNBY3Rpdml0eV9oCisjZGVmaW5lIEh5
c3RlcmVzaXNBY3Rpdml0eV9oCiAKLSNpZiBIQVZFKE5TX0FDVElWSVRZKQotI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotT0JKQ19DTEFTUyBOU1N0
cmluZzsKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFRoZSBVc2VyQWN0aXZp
dHkgdHlwZSBpcyB1c2VkIHRvIGluZGljYXRlIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRoYXQK
LS8vIGEgdXNlciBpbml0aWF0ZWQgb3IgdmlzaWJsZSBhY3Rpb24gaXMgdGFraW5nIHBsYWNlLCBh
bmQgYXMgc3VjaCB0aGF0Ci0vLyByZXNvdXJjZXMgc2hvdWxkIGJlIGFsbG9jYXRlZCB0byB0aGUg
cHJvY2VzcyBhY2NvcmRpbmdseS4KLWNsYXNzIFVzZXJBY3Rpdml0eSB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWxlZ2F0ZT4KK2NsYXNzIEh5c3RlcmVzaXNBY3Rpdml0eSB7CiBwdWJsaWM6Ci0gICAg
VXNlckFjdGl2aXR5KGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKLQotICAgIHZvaWQgc3RhcnQo
KTsKLSAgICB2b2lkIHN0b3AoKTsKKyAgICBIeXN0ZXJlc2lzQWN0aXZpdHkoRGVsZWdhdGUqIGRl
bGVnYXRlLCBkb3VibGUgaHlzdGVyZXNpc1NlY29uZHMgPSBEZWZhdWx0SHlzdGVyZXNpc1NlY29u
ZHMpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX2h5c3RlcmVz
aXNTZWNvbmRzKGh5c3RlcmVzaXNTZWNvbmRzKQorICAgICAgICAsIG1fYWN0aXZlKGZhbHNlKQor
ICAgICAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmSHlzdGVyZXNpc0FjdGl2
aXR5PERlbGVnYXRlPjo6aHlzdGVyZXNpc1RpbWVyRmlyZWQpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgc3RhcnQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYWN0aXZlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisKKyAgICAgICAgaWYgKG1fdGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fdGltZXIuc3RvcCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2RlbGVnYXRlLT5zdGFydGVkKCk7CisgICAgfQorCisgICAgdm9pZCBzdG9w
KCkKKyAgICB7CisgICAgICAgIGlmICghbV9hY3RpdmUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fYWN0aXZlID0gZmFsc2U7CisKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qo
bV9oeXN0ZXJlc2lzU2Vjb25kcyk7CisgICAgfQorCisgICAgdm9pZCBpbXB1bHNlKCkKKyAgICB7
CisgICAgICAgIGlmICghbV9hY3RpdmUpIHsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAg
ICAgICBzdG9wKCk7CisgICAgICAgIH0KKyAgICB9CiAKIHByaXZhdGU6Ci0jaWYgSEFWRShOU19B
Q1RJVklUWSkKLSAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgYm9vbCBpc1Zh
bGlkKCk7CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdEh5c3RlcmVz
aXNTZWNvbmRzID0gNS4wOworCisgICAgdm9pZCBoeXN0ZXJlc2lzVGltZXJGaXJlZCgpCisgICAg
eworICAgICAgICBtX2RlbGVnYXRlLT5zdG9wcGVkKCk7CisgICAgICAgIG1fdGltZXIuc3RvcCgp
OworICAgIH0KIAorICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOworICAgIGRvdWJsZSBtX2h5c3Rl
cmVzaXNTZWNvbmRzOwogICAgIGJvb2wgbV9hY3RpdmU7Ci0gICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBtX2Rlc2NyaXB0aW9uOwotICAgIFJ1bkxvb3A6OlRpbWVyPFVzZXJBY3Rpdml0eT4gbV90aW1l
cjsKLSAgICBSZXRhaW5QdHI8aWQ+IG1fYWN0aXZpdHk7Ci0jZW5kaWYKKyAgICBSdW5Mb29wOjpU
aW1lcjxIeXN0ZXJlc2lzQWN0aXZpdHk+IG1fdGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLXVzaW5nIFdlYkNvcmU6OlVzZXJBY3Rpdml0eTsKLQotI2VuZGlmIC8vIFVzZXJB
Y3Rpdml0eV9oCisjZW5kaWYgLy8gSHlzdGVyZXNpc0FjdGl2aXR5X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAkocmV2aXNpb24gMTY0OTEzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsMTggKzMwLDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFIQVZFKE5TX0FDVElW
SVRZKQogCi1Vc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBjaGFyKikKK1VzZXJBY3Rp
dml0eTo6SW1wbDo6SW1wbChjb25zdCBjaGFyKikKIHsKIH0KIAotdm9pZCBVc2VyQWN0aXZpdHk6
OnN0YXJ0KCkKK3ZvaWQgVXNlckFjdGl2aXR5OjpJbXBsOjpiZWdpbkFjdGl2aXR5KCkKIHsKIH0K
IAotdm9pZCBVc2VyQWN0aXZpdHk6OnN0b3AoKQordm9pZCBVc2VyQWN0aXZpdHk6OkltcGw6OmVu
ZEFjdGl2aXR5KCkKIHsKIH0KIAogI2VuZGlmCiAKK1VzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5
KGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQorICAgIDogSHlzdGVyZXNpc0FjdGl2aXR5PFVzZXJB
Y3Rpdml0eT4odGhpcykKKyAgICAsIG1faW1wbChkZXNjcmlwdGlvbikKK3sKK30KKwordm9pZCBV
c2VyQWN0aXZpdHk6OnN0YXJ0ZWQoKQoreworICAgIG1faW1wbC5iZWdpbkFjdGl2aXR5KCk7Cit9
CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpzdG9wcGVkKCkKK3sKKyAgICBtX2ltcGwuZW5kQWN0aXZp
dHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVXNlckFjdGl2aXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFjdGl2aXR5LmgJKHJldmlzaW9uIDE2NDkxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBY3Rpdml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiwxMCBA
QAogI2lmbmRlZiBVc2VyQWN0aXZpdHlfaAogI2RlZmluZSBVc2VyQWN0aXZpdHlfaAogCisjaW5j
bHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKwogI2lmIEhBVkUoTlNfQUNUSVZJ
VFkpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKQEAgLTM3LDIzICszOCwzMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgVXNlckFjdGl2aXR5IHR5cGUgaXMgdXNlZCB0byBpbmRp
Y2F0ZSB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0CiAvLyBhIHVzZXIgaW5pdGlhdGVkIG9y
IHZpc2libGUgYWN0aW9uIGlzIHRha2luZyBwbGFjZSwgYW5kIGFzIHN1Y2ggdGhhdAogLy8gcmVz
b3VyY2VzIHNob3VsZCBiZSBhbGxvY2F0ZWQgdG8gdGhlIHByb2Nlc3MgYWNjb3JkaW5nbHkuCi1j
bGFzcyBVc2VyQWN0aXZpdHkgeworY2xhc3MgVXNlckFjdGl2aXR5IDogcHVibGljIEh5c3RlcmVz
aXNBY3Rpdml0eTxVc2VyQWN0aXZpdHk+IHsKIHB1YmxpYzoKLSAgICBVc2VyQWN0aXZpdHkoY29u
c3QgY2hhciogZGVzY3JpcHRpb24pOworICAgIGNsYXNzIEltcGwgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgSW1wbChjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CiAKLSAgICB2b2lkIHN0YXJ0KCk7
Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgICAgIHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAgICAg
ICB2b2lkIGVuZEFjdGl2aXR5KCk7CiAKLXByaXZhdGU6CiAjaWYgSEFWRShOU19BQ1RJVklUWSkK
LSAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCk7Ci0K
LSAgICBib29sIG1fYWN0aXZlOwotICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9kZXNjcmlwdGlv
bjsKLSAgICBSdW5Mb29wOjpUaW1lcjxVc2VyQWN0aXZpdHk+IG1fdGltZXI7Ci0gICAgUmV0YWlu
UHRyPGlkPiBtX2FjdGl2aXR5OworICAgIHByaXZhdGU6CisgICAgICAgIFJldGFpblB0cjxpZD4g
bV9hY3Rpdml0eTsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2Rlc2NyaXB0aW9uOwog
I2VuZGlmCisgICAgfTsKKworICAgIFVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlv
bik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEh5c3RlcmVzaXNBY3Rpdml0eTxVc2Vy
QWN0aXZpdHk+OworCisgICAgdm9pZCBzdGFydGVkKCk7CisgICAgdm9pZCBzdG9wcGVkKCk7CisK
KyAgICBJbXBsIG1faW1wbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNp
b24gMTY0OTEzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNjUgKzMwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmIEhBVkUoTlNfQUNUSVZJVFkpCiAKLXN0YXRpYyBjb25zdCBkb3VibGUga0h5c3Rl
cmVzaXNTZWNvbmRzID0gNS4wOwotCi1Vc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBj
aGFyKiBkZXNjcmlwdGlvbikKLSAgICA6IG1fYWN0aXZlKGZhbHNlKQotICAgICwgbV9kZXNjcmlw
dGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZGVzY3JpcHRpb25dKQotICAgICwg
bV90aW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZVc2VyQWN0aXZpdHk6Omh5c3RlcmVzaXNU
aW1lckZpcmVkKQotewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotfQotCi1ib29sIFVzZXJBY3Rp
dml0eTo6aXNWYWxpZCgpCitVc2VyQWN0aXZpdHk6OkltcGw6OkltcGwoY29uc3QgY2hhciogZGVz
Y3JpcHRpb24pCisgICAgOiBtX2Rlc2NyaXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzpkZXNjcmlwdGlvbl0pCiB7Ci0gICAgLy8gSWYgY291bnQgaXMgbm9uLXplcm8gdGhlbiB3
ZSBzaG91bGQgYmUgaG9sZGluZyBhbiBhY3Rpdml0eSwgYW5kIHRoZSBoeXN0ZXJlc2lzIHRpbWVy
IHNob3VsZCBub3QgYmUgcnVubmluZy4KLSAgICAvLyBFbHNlIGlmIGNvdW50IGlzIHplcm8gdGhl
bjoKLSAgICAvLyAgKGEpIGlmIHdlJ3JlIGhvbGRpbmcgYW4gYWN0aXZpdHkgdGhlcmUgc2hvdWxk
IGJlIGFuIGFjdGl2ZSB0aW1lciB0byBjbGVhciB0aGlzLAotICAgIC8vICAoYikgaWYgd2UncmUg
bm90IGhvbGRpbmcgYW4gYWN0aXZpdHkgdGhlcmUgc2hvdWxkIGJlIG5vIGFjdGl2ZSB0aW1lci4K
LSAgICByZXR1cm4gbV9hY3RpdmUgPyBtX2FjdGl2aXR5ICYmICFtX3RpbWVyLmlzQWN0aXZlKCkg
OiAhIW1fYWN0aXZpdHkgPT0gbV90aW1lci5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFVzZXJBY3Rp
dml0eTo6c3RhcnQoKQordm9pZCBVc2VyQWN0aXZpdHk6OkltcGw6OmJlZ2luQWN0aXZpdHkoKQog
ewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotCi0gICAgaWYgKG1fYWN0aXZlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9hY3RpdmUgPSB0cnVlOwotCi0gICAgaWYgKG1fdGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgbV90aW1lci5zdG9wKCk7CiAgICAgaWYgKCFtX2FjdGl2aXR5KSB7CiAgICAg
ICAgIE5TQWN0aXZpdHlPcHRpb25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRB
bGxvd2luZ0lkbGVTeXN0ZW1TbGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihO
U0FjdGl2aXR5U3VkZGVuVGVybWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNU
ZXJtaW5hdGlvbkRpc2FibGVkKTsKICAgICAgICAgbV9hY3Rpdml0eSA9IFtbTlNQcm9jZXNzSW5m
byBwcm9jZXNzSW5mb10gYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOm1f
ZGVzY3JpcHRpb24uZ2V0KCldOwogICAgIH0KLQotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogfQog
Ci12b2lkIFVzZXJBY3Rpdml0eTo6c3RvcCgpCit2b2lkIFVzZXJBY3Rpdml0eTo6SW1wbDo6ZW5k
QWN0aXZpdHkoKQogewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotCi0gICAgaWYgKCFtX2FjdGl2
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYWN0aXZlID0gZmFsc2U7Ci0KLSAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdChrSHlzdGVyZXNpc1NlY29uZHMpOwotCi0gICAgQVNTRVJUKGlzVmFsaWQo
KSk7Ci19Ci0KLXZvaWQgVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCgpCi17Ci0g
ICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0KICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9d
IGVuZEFjdGl2aXR5Om1fYWN0aXZpdHkuZ2V0KCldOwogICAgIG1fYWN0aXZpdHkuY2xlYXIoKTsK
LSAgICBtX3RpbWVyLnN0b3AoKTsKLQotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogfQogCiAjZW5k
aWYK
</data>
<flag name="review"
          id="249713"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225590</attachid>
            <date>2014-03-01 23:38:43 -0800</date>
            <delta_ts>2014-03-02 11:29:33 -0800</delta_ts>
            <desc>EWS fixes</desc>
            <filename>129551.2.patch</filename>
            <type>text/plain</type>
            <size>28428</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDE0LTAzLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBVc2Vy
QWN0aXZpdHksIHNpbXBsaWZ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjbGFzcyBVc2VyQWN0aXZpdHkgY3VycmVudGx5
IGltcGxlbWVudHMgdHdvIHRoaW5ncyDigJMgYSBoeXN0ZXJlc2lzIG1lY2hhbmlzbSwgYW5kCisg
ICAgICAgIGFuIGFic3RyYWN0aW9uIG9mIE5TQWN0aXZpdHkgY29udHJvbGxlZCBieSB0aGF0IG1l
Y2hhbmlzbS4gUGFnZVRocm90dGxlciBpbXBsZW1lbnRzCisgICAgICAgIGl0cyBvd24gaHlzdGVy
ZXNpcyBtZWNoYW5pc20sIHdoaWNoIGRpcmVjdGx5IGNvbnRyb2xzIERPTSB0aW1lciB0aHJvdHRs
aW5nIGFuZCBhbHNvCisgICAgICAgIGNvbnRyb2xzIGEgY291cGxlIG9mIFVzZXJBY3Rpdml0aWVz
LCBnaXZpbmcgYSB0b3RhbCBvZiAzIHNlcGFyYXRlIGh5c3RlcmVzaXMgbWVjaGFuaXNtcywKKyAg
ICAgICAgbGF5ZXJlZCB0d28gZGVlcC4KKworICAgICAgICBTcGxpdCBVc2VyQWN0aXZpdHkgaW50
byB0aHJlZSwgd2l0aCBIeXN0ZXJlc2lzQWN0aXZpdHkgaW1wbGVtZW50aW5nIGFuIGFic3RyYWN0
IGh5c3RlcmVzaXMKKyAgICAgICAgbWVjaGFuaXNtLCBVc2VyQWN0aXZpdHk6OkltcGwgY29udHJv
bGxpbmcgdGhlIE5TQWN0aXZpdHksIGFuZCB0aGVuIFVzZXJBY3Rpdml0eSBjb21iaW5pbmcKKyAg
ICAgICAgdGhlc2UgdHdvIGJhY2sgdG9nZXRoZXIuIFRoZSBpbnRlcmZhY2UgdG8gVXNlckFjdGl2
aXR5IGlzIHVuY2hhbmdlZC4KKworICAgICAgICBSZW1vdmUgUGFnZVRocm90dGxlcidzIGJlc3Bv
a2UgaHlzdGVyZXNpcywgcmVwbGFjaW5nIGl0IHdpdGggYSB1c2Ugb2YgSHlzdGVyZXNpc0FjdGl2
aXR5LgorICAgICAgICBSZXBsYWNlIHRoZSB0d28gVXNlckFjdGl2aXRpZXMgd2l0aCBhIHNpbmds
ZSBVc2VyQWN0aXZpdHk6OkltcGwsIHNvIHRoZXJlIGFyZSBubyBsb25nZXIKKyAgICAgICAgbGF5
ZXJlZCBoeXN0ZXJlc2lzIG1lY2hhbmlzbXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgICAgIC0gZXhwb3J0cyBjaGFuZ2VkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gYWRkZWQgSHlzdGVyZXNpc0FjdGl2
aXR5LmguCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAgICAgLSBpZiB0aGUg
cGFnZSBzdGFydHMgdmlzaWJsZSwgYmVnaW4gYWN0aXZpdHkuIElmIGl0IHN0YXJ0cyBoaWRkZW4g
dGhyb3R0bGUgRE9NIHRpbWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6Omhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAgICAgLSB3
aGVuIHRoZSBET00gdGltZXIgdGhyb3R0bGluZyBzZXR0aW5nIGNoYW5nZXMsIG1ha2Ugc3VyZSB3
ZSB1cGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRBY3Rp
dml0eUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFj
dGl2aXR5Q291bnQpOgorICAgICAgICAgICAgLSB3aGVuIG1fYWN0aXZpdHlDb3VudCBjaGFuZ2Vz
IHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJv
dHRsZXI6OnVwZGF0ZUh5c3RlcmVzaXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6c2V0Vmlld1N0YXRlKToKKyAgICAgICAgICAgIC0gd2hlbiBJc1Zpc3VhbGx5SWRsZSBjaGFu
Z2VzIHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OnN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c3Rv
cHBlZCk6CisgICAgICAgICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNBY3Rpdml0eSwg
dGhlc2UgY29udHJvbCBtX2FjdGl2aXR5IGFuZCBET00gdGltZXIgdGhyb3R0bGluZy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRs
ZXI6OmRpZFJlY2VpdmVVc2VySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6cGx1Z2luRGlkRXZhbHVhdGUpOgorICAgICAgICAgICAgLSBjYWxsIGltcHVsc2UgdG8gdGVt
cG9yYXJpbHkgZW5hYmxlIHRoZSBhY3Rpdml0eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFj
dGl2aXR5LmguCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHk6Okh5c3RlcmVz
aXNBY3Rpdml0eSk6CisgICAgICAgICAgICAtIGNvbnN0cnVjdG9yIHRha2VzIGEgZGVsZWdhdGUg
b3B0aW9uYWxseSBhIHRpbWVvdXQuCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZp
dHk6OnN0YXJ0KToKKyAgICAgICAgICAgIC0gc3RhcnQgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIElm
IHN0b3BwZWQsIGNhbGwgc3RhcnRlZCBtZXRob2Qgb24gZGVsZWdhdGUuIElmIGluIHRpbWVvdXQg
cGVyaW9kLCBjYW5jZWwgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6SHlzdGVyZXNpc0Fj
dGl2aXR5OjpzdG9wKToKKyAgICAgICAgICAgIC0gc3RvcCBhY3Rpdml0eSBhZnRlciBoeXN0ZXJl
c2lzLiBJZiBzdGFydGVkLCBpbml0aWF0ZSB0aW1lb3V0IHBlcmlvZC4KKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6aW1wdWxzZSk6CisgICAgICAgICAgICAtIGVuc3VyZSBh
Y3Rpdml0eSBmb3IgYXQgbGVhc3QgdGhlIHRpbWVvdXQgcGVyaW9kLgorICAgICAgICAoV2ViQ29y
ZTo6SHlzdGVyZXNpc0FjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICAg
ICAtIGRlbGF5ZWQgc3RvcCAtIHdoZW4gdGhlIHRpbWVyIGZpcmVzIGNhbGwgc3RvcHBlZCBvbiB0
aGUgZGVsZWdhdGUuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQWN0aXZpdHk6OkltcGw6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckFjdGl2aXR5OjpJbXBsOjplbmRBY3Rpdml0eSk6CisgICAgICAgICAgICAtIG5vcCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5
KToKKyAgICAgICAgICAgIC0gVXNlckFjdGl2aXR5IG1haW50YWlucyBleGlzdGluZyBpbnRlcmZh
Y2Ugd2l0aCBoeXN0ZXJlc2lzLgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2aXR5OjpzdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6c3RvcHBlZCk6CisgICAgICAg
ICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNUaW1lcjsgZm9yd2FyZCB0byBJbXBsLgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Vc2VyQWN0aXZpdHlNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6Oklt
cGw6OkltcGwpOgorICAgICAgICAgICAgLSBVc2VyQWN0aXZpdHk6OkltcGwsIGFic3RyYWN0aW9u
IGZvciBOU0FjdGl2aXR5IHdpdGhvdXQgYWRkZWQgaHlzdGVyZXNpcy4KKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgICAgICAtIGFs
bG9jYXRlIE5TQWN0aXZpdHkuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OkltcGw6
OmVuZEFjdGl2aXR5KToKKyAgICAgICAgICAgIC0gcmVsZWFzZSBOU0FjdGl2aXR5LgorCiAyMDE0
LTAzLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU21hcnQgTWFnbmlmaWNhdGlvbik6IFN1cHBvcnQgZm9y
IGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjQ5Mzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC01NDkxLDcgKzU0OTEsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBY3Rpdml0eS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0
eS5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCiAKIHBsYXRmb3JtX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRp
ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY0OTM4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw4ICsyNDAs
NyBAQCBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYKIF9fWk43V2ViQ29yZTEy
VGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKIF9fWk43V2ViQ29yZTEyVGV4dEl0
ZXJhdG9yQzFFUEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckUKIF9fWk43V2Vi
Q29yZTEyVGV4dEl0ZXJhdG9yRDFFdgotX19aTjdXZWJDb3JlMTJVc2VyQWN0aXZpdHk0c3RvcEV2
Ci1fX1pON1dlYkNvcmUxMlVzZXJBY3Rpdml0eTVzdGFydEV2CitfX1pON1dlYkNvcmUxMlVzZXJB
Y3Rpdml0eTdzdGFydGVkRXYKIF9fWk43V2ViQ29yZTEyVXNlckFjdGl2aXR5QzFFUEtjCiBfX1pO
N1dlYkNvcmUxMlVURjhFbmNvZGluZ0V2CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29y
a2VyVGhyZWFkQ291bnRFdgpAQCAtMzE4LDggKzMxNyw3IEBAIF9fWk43V2ViQ29yZTEzS2V5Ym9h
cmRFdmVudEMxRVJLTlNfMjFQbGEKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDEzZGVlcExh
c3RDaGlsZEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM05vZGVUcmF2ZXJzYWwxOW5leHRBbmNl
c3RvclNpYmxpbmdFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDE5bmV4
dEFuY2VzdG9yU2libGluZ0VQS05TXzROb2RlRVMzXwotX19aTjdXZWJDb3JlMTNQYWdlVGhyb3R0
bGVyMjJyZXBvcnRJbnRlcmVzdGluZ0V2ZW50RXYKLV9fWk43V2ViQ29yZTEzUGFnZVRocm90dGxl
ckQxRXYKK19fWk43V2ViQ29yZTEzUGFnZVRocm90dGxlcjdzdGFydGVkRXYKIF9fWk43V2ViQ29y
ZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA3TlNF
cnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNp
b24gMTY0OTM4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkwMDIsNiArMTkwMDIsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGltZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXFRyZWVTaGFyZWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXFVzZXJBY3Rpdml0eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cSHlzdGVyZXNpc0FjdGl2aXR5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxVVUlELmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxXaWRnZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XHdpblxCaXRtYXBJbmZvLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjQ5Mzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMJKHdvcmtpbmcgY29weSkKQEAgLTgxMjAsNiArODEyMCw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxVc2VyQWN0aXZpdHkuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxIeXN0ZXJlc2lzQWN0aXZpdHkuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxVVUlELmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0OTM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTM3LDYg
KzI5MzcsNyBAQAogCQk4NjFDMkVBNDEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGlt
aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovOyB9Owog
CQk4NjFDMkVBNjEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MUMyRUE1MTNGQjRG
RkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovOyB9OwogCQk4NjJGMTI5RTE4
QzE1NzZGMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyRjEyOUQxOEMxNTcyQzAwNUM1NEFGIC8q
IENvdW50ZWRVc2VyQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NjJGMTJBMDE4QzFERDAyMDA1QzU0QUYgLyogSHlzdGVyZXNpc0Fj
dGl2aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjJGMTI5RjE4QzFEQ0U0MDA1QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY1MTJFREUxNTRBMkFF
RjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1MTJFREIxNTRBMkFFRTAwQTkwNDI2
IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQk4NjUxMkVERjE1NEEy
QUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1MTJFREMxNTRBMkFFRjAwQTkwNDI2
IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLzsgfTsKIAkJODY3OEQwQkIxODc4RTg5
MTAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3OEQwQkExODc4RTgxMDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05ODQwLDYg
Kzk4NDEsNyBAQAogCQk4NjFDMkVBMzEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGlt
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9h
ZFRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MUMyRUE1MTNGQjRG
RkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYyRjEyOUQxOEMxNTcyQzAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0
aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRlZFVzZXJBY3Rp
dml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjJGMTI5RjE4QzFEQ0U0MDA1
QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEh5c3RlcmVzaXNBY3Rpdml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1MTJFREMxNTRB
MkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjUxMkVERDE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFu
Y2VSZXNvdXJjZVRpbWluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDcz
MCw2ICsyMDczMiw3IEBACiAJCQkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUUxIC8qIEhpc3RvZ3Jh
bVN1cHBvcnQuY3BwICovLAogCQkJCUQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5MyAvKiBIaXN0b2dy
YW1TdXBwb3J0LmggKi8sCiAJCQkJQkMzQkMyOUIwRTkxQUIwRjAwODM1NTg4IC8qIEhvc3RXaW5k
b3cuaCAqLywKKwkJCQk4NjJGMTI5RjE4QzFEQ0U0MDA1QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2
aXR5LmggKi8sCiAJCQkJMUFFMDBENTcxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmgg
Ki8sCiAJCQkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxSaW5nLmggKi8sCiAJCQkJ
NDMwNkU0RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgKi8sCkBAIC0yMzc3
MSw2ICsyMzc3NCw3IEBACiAJCQkJNDQxNTI5MkUwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0IwMEExOTJCOUMwMEE4
RUY1RiAvKiBIVE1MUHJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzMxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODYyRjEyQTAxOEMxREQwMjAwNUM1NEFGIC8qIEh5c3RlcmVzaXNBY3Rpdml0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1M
UXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcy
ODggLyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkocmV2aXNpb24gMTY0OTM4KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMzQg
KzM1LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBr
VGhyb3R0bGVIeXN0ZXJlc2lzU2Vjb25kcyA9IDIuMDsKLQogUGFnZVRocm90dGxlcjo6UGFnZVRo
cm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKICAgICA6IG1f
cGFnZShwYWdlKQogICAgICwgbV92aWV3U3RhdGUodmlld1N0YXRlKQotICAgICwgbV90aHJvdHRs
ZVN0YXRlKFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSkKLSAgICAsIG1fdGhyb3R0bGVIeXN0ZXJlc2lz
VGltZXIodGhpcywgJlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQp
CiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCisgICAgLCBtX2h5c3RlcmVzaXMoKnRoaXMp
CisgICAgLCBtX2FjdGl2aXR5KCJQYWdlIGlzIGFjdGl2ZS4iKQogICAgICwgbV9hY3Rpdml0eUNv
dW50KDApCi0gICAgLCBtX3Zpc3VhbGx5Tm9uSWRsZSgiUGFnZSBpcyBub3QgdmlzdWFsbHkgaWRs
ZS4iKQotICAgICwgbV9wYWdlQWN0aXZpdHkoIlBhZ2UgaXMgYWN0aXZlLiIpCi17Ci0gICAgbV9w
YWdlQWN0aXZpdHkuaW5jcmVtZW50KCk7Ci0KLSAgICBzZXRJc1Zpc3VhbGx5SWRsZSh2aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKLX0KLQotUGFnZVRocm90dGxlcjo6flBh
Z2VUaHJvdHRsZXIoKQogewotICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKGZh
bHNlKTsKLQotICAgIGlmIChtX3Rocm90dGxlU3RhdGUgIT0gUGFnZVRocm90dGxlZFN0YXRlKQot
ICAgICAgICBtX3BhZ2VBY3Rpdml0eS5kZWNyZW1lbnQoKTsKKyAgICBpZiAobV92aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQorICAgICAgICBtX3BhZ2Uuc2V0VGltZXJUaHJv
dHRsaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFy
dCgpOwogfQogCiB2b2lkIFBhZ2VUaHJvdHRsZXI6OmhpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdTdGF0ZUNoYW5nZWQoKQogewotICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVk
KG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpOworICAgIC8vIElmIHRp
bWVyIHRocm90dGxpbmcgaXMgZW5hYmxlZCwgdGhpcyB3aWxsIHRlbXBvcmFyaWx5IGRpc2FibGUg
aXQuCisgICAgLy8gQWZ0ZXIgYSB0aW1lb3V0IGl0IHdpbGwgYmUgcmVlbmFibGVkLCByZXJlYWRp
bmcgdGhlIHNldHRpbmcuCisgICAgbV9oeXN0ZXJlc2lzLmltcHVsc2UoKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBQYWdlVGhyb3R0bGVyOjptZWRp
YUFjdGl2aXR5VG9rZW4oKQpAQCAtNzUsMjcgKzY2LDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2sKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbj4oKnRoaXMpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnRo
cm90dGxlUGFnZSgpCit2b2lkIFBhZ2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQo
KQogewotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VUaHJvdHRsZWRTdGF0ZTsKLQotICAgIG1f
cGFnZUFjdGl2aXR5LmRlY3JlbWVudCgpOwotCi0gICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGlu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgKyttX2FjdGl2aXR5Q291bnQ7CisgICAgdXBkYXRlSHlzdGVy
ZXNpcygpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnVudGhyb3R0bGVQYWdlKCkKK3ZvaWQg
UGFnZVRocm90dGxlcjo6ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCiB7Ci0gICAgUGFnZVRocm90
dGxlU3RhdGUgb2xkU3RhdGUgPSBtX3Rocm90dGxlU3RhdGU7Ci0gICAgbV90aHJvdHRsZVN0YXRl
ID0gUGFnZU5vdFRocm90dGxlZFN0YXRlOwotCi0gICAgaWYgKG9sZFN0YXRlID09IFBhZ2VOb3RU
aHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOworICAgIC0tbV9hY3Rpdml0eUNvdW50Owor
ICAgIHVwZGF0ZUh5c3RlcmVzaXMoKTsKK30KIAotICAgIGlmIChvbGRTdGF0ZSA9PSBQYWdlVGhy
b3R0bGVkU3RhdGUpCi0gICAgICAgIG1fcGFnZUFjdGl2aXR5LmluY3JlbWVudCgpOwotICAgIAot
ICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKGZhbHNlKTsKK3ZvaWQgUGFnZVRo
cm90dGxlcjo6dXBkYXRlSHlzdGVyZXNpcygpCit7CisgICAgaWYgKG1fYWN0aXZpdHlDb3VudCB8
fCAhKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkpCisgICAgICAgIG1f
aHlzdGVyZXNpcy5zdGFydCgpOworICAgIGVsc2UKKyAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3Ao
KTsKIH0KIAogdm9pZCBQYWdlVGhyb3R0bGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFn
cyB2aWV3U3RhdGUpCkBAIC0xMDMsODggKzkxLDIwIEBAIHZvaWQgUGFnZVRocm90dGxlcjo6c2V0
Vmlld1N0YXRlKFZpZXdTdGEKICAgICBWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdT
dGF0ZSBeIHZpZXdTdGF0ZTsKICAgICBtX3ZpZXdTdGF0ZSA9IHZpZXdTdGF0ZTsKIAotICAgIGlm
IChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIHNldElzVmlzaWJsZSh2
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSk7CiAgICAgaWYgKGNoYW5nZWQgJiBWaWV3
U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZSh2aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgdXBkYXRlSHlzdGVyZXNp
cygpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnNldElzVmlzaWJsZShib29sIGlzVmlzaWJs
ZSkKK3ZvaWQgUGFnZVRocm90dGxlcjo6c3RhcnRlZCgpCiB7Ci0gICAgaWYgKGlzVmlzaWJsZSkK
LSAgICAgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIGVs
c2UgaWYgKG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCi0gICAgICAg
IG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKHRydWUpOwotfQotCi12b2lkIFBhZ2VU
aHJvdHRsZXI6OnNldElzVmlzdWFsbHlJZGxlKGJvb2wgaXNWaXN1YWxseUlkbGUpCi17Ci0gICAg
aWYgKGlzVmlzdWFsbHlJZGxlKSB7Ci0gICAgICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0
aW5nVG9UaHJvdHRsZVN0YXRlOwotICAgICAgICBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVy
KCk7Ci0gICAgICAgIG1fdmlzdWFsbHlOb25JZGxlLnN0b3AoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB1bnRocm90dGxlUGFnZSgpOwotICAgICAgICBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGlt
ZXIoKTsKLSAgICAgICAgbV92aXN1YWxseU5vbklkbGUuc3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUGFnZVRocm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKLXsKLSAgICBt
X3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVy
OjpyZXBvcnRJbnRlcmVzdGluZ0V2ZW50KCkKLXsKLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09
IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Rocm90
dGxlU3RhdGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQotICAgICAgICB1bnRocm90dGxlUGFnZSgp
OwotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlOwotICAg
IHN0YXJ0VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVy
OjpzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKLXsKLSAgICBpZiAobV90aHJvdHRsZUh5
c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Rocm90dGxlSHlzdGVyZXNpc1Rp
bWVyLnN0b3AoKTsKLSAgICBpZiAoIW1fYWN0aXZpdHlDb3VudCkKLSAgICAgICAgbV90aHJvdHRs
ZUh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1Rocm90dGxlSHlzdGVyZXNpc1NlY29uZHMp
OwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQo
VGltZXI8UGFnZVRocm90dGxlcj4mKQotewotICAgIEFTU0VSVCghbV9hY3Rpdml0eUNvdW50KTsK
LSAgICB0aHJvdHRsZVBhZ2UoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRB
Y3Rpdml0eUNvdW50KCkKLXsKLSAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBldmVudHMgdGhh
dCBibG9jayB0aHJvdHRsaW5nIHdlIGNhbiByZXR1cm4gZWFybHkKLSAgICBpZiAobV9hY3Rpdml0
eUNvdW50KyspCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Rocm90dGxlU3RhdGUgPT0g
UGFnZU5vdFRocm90dGxlZFN0YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90aHJv
dHRsZVN0YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgdW50aHJvdHRsZVBhZ2Uo
KTsKLQotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlOwot
ICAgIHN0b3BUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIG1fcGFnZS5zZXRUaW1lclRo
cm90dGxpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBtX2FjdGl2aXR5LmJlZ2luQWN0aXZpdHkoKTsK
IH0KIAotdm9pZCBQYWdlVGhyb3R0bGVyOjpkZWNyZW1lbnRBY3Rpdml0eUNvdW50KCkKK3ZvaWQg
UGFnZVRocm90dGxlcjo6c3RvcHBlZCgpCiB7Ci0gICAgaWYgKC0tbV9hY3Rpdml0eUNvdW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RUaHJv
dHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fdGhyb3R0bGVTdGF0
ZSA9PSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZSk7Ci0gICAgc3RhcnRUaHJvdHRsZUh5c3Rl
cmVzaXNUaW1lcigpOworICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKHRydWUp
OworICAgIG1fYWN0aXZpdHkuZW5kQWN0aXZpdHkoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlVGhyb3R0bGVyLmgJKHJldmlzaW9uIDE2NDkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVRocm90dGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJUaW1lci5oIgogCi0jaW5jbHVkZSAiQ291bnRlZFVzZXJBY3Rpdml0eS5oIgor
I2luY2x1ZGUgIlVzZXJBY3Rpdml0eS5oIgogI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDMsNDkgKzQz
LDM0IEBAIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgUGFnZVRocm90
dGxlciB7CiBwdWJsaWM6CiAgICAgUGFnZVRocm90dGxlcihQYWdlJiwgVmlld1N0YXRlOjpGbGFn
cyk7Ci0gICAgflBhZ2VUaHJvdHRsZXIoKTsKIAogICAgIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdT
dGF0ZTo6RmxhZ3MpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlcklucHV0KCkgeyByZXBvcnRJ
bnRlcmVzdGluZ0V2ZW50KCk7IH0KLSAgICB2b2lkIHBsdWdpbkRpZEV2YWx1YXRlKCkgeyByZXBv
cnRJbnRlcmVzdGluZ0V2ZW50KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW5wdXQoKSB7
IG1faHlzdGVyZXNpcy5pbXB1bHNlKCk7IH0KKyAgICB2b2lkIHBsdWdpbkRpZEV2YWx1YXRlKCkg
eyBtX2h5c3RlcmVzaXMuaW1wdWxzZSgpOyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigp
OwogCiAgICAgdm9pZCBoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkKCk7
CiAKIHByaXZhdGU6Ci0gICAgZW51bSBQYWdlVGhyb3R0bGVTdGF0ZSB7Ci0gICAgICAgIFBhZ2VO
b3RUaHJvdHRsZWRTdGF0ZSwKLSAgICAgICAgUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGUsCi0g
ICAgICAgIFBhZ2VUaHJvdHRsZWRTdGF0ZQotICAgIH07Ci0KICAgICBmcmllbmQgY2xhc3MgUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiAgICAgV2Vha1B0cjxQYWdlVGhyb3R0bGVyPiB3ZWFr
UHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KICAgICB2
b2lkIGluY3JlbWVudEFjdGl2aXR5Q291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2aXR5
Q291bnQoKTsKIAotICAgIHZvaWQgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOwotCi0gICAgdm9p
ZCBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Ci0gICAgdm9pZCBzdG9wVGhyb3R0bGVI
eXN0ZXJlc2lzVGltZXIoKTsKLSAgICB2b2lkIHRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQo
VGltZXI8UGFnZVRocm90dGxlcj4mKTsKLQotICAgIHZvaWQgdGhyb3R0bGVQYWdlKCk7Ci0gICAg
dm9pZCB1bnRocm90dGxlUGFnZSgpOworICAgIHZvaWQgdXBkYXRlSHlzdGVyZXNpcygpOwogCi0g
ICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZShib29sKTsKLSAgICB2b2lkIHNldElzVmlzaWJsZShi
b29sKTsKKyAgICBmcmllbmQgY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VUaHJvdHRsZXI+
OworICAgIHZvaWQgc3RhcnRlZCgpOworICAgIHZvaWQgc3RvcHBlZCgpOwogCiAgICAgUGFnZSYg
bV9wYWdlOwogICAgIFZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7Ci0gICAgUGFnZVRocm90
dGxlU3RhdGUgbV90aHJvdHRsZVN0YXRlOwotICAgIFRpbWVyPFBhZ2VUaHJvdHRsZXI+IG1fdGhy
b3R0bGVIeXN0ZXJlc2lzVGltZXI7CiAgICAgV2Vha1B0ckZhY3Rvcnk8UGFnZVRocm90dGxlcj4g
bV93ZWFrUHRyRmFjdG9yeTsKKyAgICBIeXN0ZXJlc2lzQWN0aXZpdHk8UGFnZVRocm90dGxlcj4g
bV9oeXN0ZXJlc2lzOworICAgIFVzZXJBY3Rpdml0eTo6SW1wbCBtX2FjdGl2aXR5OwogICAgIHNp
emVfdCBtX2FjdGl2aXR5Q291bnQ7Ci0gICAgVXNlckFjdGl2aXR5IG1fdmlzdWFsbHlOb25JZGxl
OwotICAgIENvdW50ZWRVc2VyQWN0aXZpdHkgbV9wYWdlQWN0aXZpdHk7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAkocmV2aXNp
b24gMTY0OTEzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuaDox
NjQ5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2Vy
QWN0aXZpdHlfaAorI2RlZmluZSBVc2VyQWN0aXZpdHlfaAorCisjaWYgSEFWRShOU19BQ1RJVklU
WSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
K09CSkNfQ0xBU1MgTlNTdHJpbmc7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBUaGUgVXNlckFjdGl2aXR5IHR5cGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgb3BlcmF0
aW5nIHN5c3RlbSB0aGF0CisvLyBhIHVzZXIgaW5pdGlhdGVkIG9yIHZpc2libGUgYWN0aW9uIGlz
IHRha2luZyBwbGFjZSwgYW5kIGFzIHN1Y2ggdGhhdAorLy8gcmVzb3VyY2VzIHNob3VsZCBiZSBh
bGxvY2F0ZWQgdG8gdGhlIHByb2Nlc3MgYWNjb3JkaW5nbHkuCitjbGFzcyBVc2VyQWN0aXZpdHkg
eworcHVibGljOgorICAgIFVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisK
KyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6CisjaWYgSEFW
RShOU19BQ1RJVklUWSkKKyAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZpcmVkKCk7CisgICAgYm9v
bCBpc1ZhbGlkKCk7CisKKyAgICBib29sIG1fYWN0aXZlOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gbV9kZXNjcmlwdGlvbjsKKyAgICBSdW5Mb29wOjpUaW1lcjxVc2VyQWN0aXZpdHk+IG1fdGlt
ZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2FjdGl2aXR5OworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK3VzaW5nIFdlYkNvcmU6OlVzZXJBY3Rpdml0eTsKKworI2VuZGlm
IC8vIFVzZXJBY3Rpdml0eV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0
ZXJlc2lzQWN0aXZpdHkuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQxICsyMyw2OCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVXNl
ckFjdGl2aXR5X2gKLSNkZWZpbmUgVXNlckFjdGl2aXR5X2gKKyNpZm5kZWYgSHlzdGVyZXNpc0Fj
dGl2aXR5X2gKKyNkZWZpbmUgSHlzdGVyZXNpc0FjdGl2aXR5X2gKIAotI2lmIEhBVkUoTlNfQUNU
SVZJVFkpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+Ci1PQkpDX0NMQVNTIE5TU3RyaW5nOwotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gVGhlIFVzZXJBY3Rpdml0eSB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9w
ZXJhdGluZyBzeXN0ZW0gdGhhdAotLy8gYSB1c2VyIGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlv
biBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQKLS8vIHJlc291cmNlcyBzaG91bGQg
YmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgotY2xhc3MgVXNlckFjdGl2
aXR5IHsKLXB1YmxpYzoKLSAgICBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24p
Oworc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMgPSA1LjA7CiAK
LSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdG9wKCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWxlZ2F0ZT4KK2NsYXNzIEh5c3RlcmVzaXNBY3Rpdml0eSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgSHlzdGVyZXNpc0FjdGl2aXR5KERlbGVnYXRlJiBkZWxlZ2F0ZSwgZG91YmxlIGh5c3RlcmVz
aXNTZWNvbmRzID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQorICAgICAgICA6IG1fZGVsZWdh
dGUoZGVsZWdhdGUpCisgICAgICAgICwgbV9oeXN0ZXJlc2lzU2Vjb25kcyhoeXN0ZXJlc2lzU2Vj
b25kcykKKyAgICAgICAgLCBtX2FjdGl2ZShmYWxzZSkKKyAgICAgICAgLCBtX3RpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTxEZWxlZ2F0ZT46Omh5c3RlcmVz
aXNUaW1lckZpcmVkKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2FjdGl2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hY3Rp
dmUgPSB0cnVlOworCisgICAgICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICBtX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS5z
dGFydGVkKCk7CisgICAgfQorCisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9hY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYWN0aXZlID0gZmFsc2U7
CisKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9oeXN0ZXJlc2lzU2Vjb25kcyk7Cisg
ICAgfQorCisgICAgdm9pZCBpbXB1bHNlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9hY3RpdmUp
IHsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgIH0K
KyAgICB9CiAKIHByaXZhdGU6Ci0jaWYgSEFWRShOU19BQ1RJVklUWSkKLSAgICB2b2lkIGh5c3Rl
cmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCk7CisgICAgdm9pZCBoeXN0ZXJl
c2lzVGltZXJGaXJlZCgpCisgICAgeworICAgICAgICBtX2RlbGVnYXRlLnN0b3BwZWQoKTsKKyAg
ICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgfQogCisgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7
CisgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29uZHM7CiAgICAgYm9vbCBtX2FjdGl2ZTsKLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZGVzY3JpcHRpb247Ci0gICAgUnVuTG9vcDo6VGltZXI8
VXNlckFjdGl2aXR5PiBtX3RpbWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsKLSNl
bmRpZgorICAgIFJ1bkxvb3A6OlRpbWVyPEh5c3RlcmVzaXNBY3Rpdml0eT4gbV90aW1lcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotdXNpbmcgV2ViQ29yZTo6VXNlckFjdGl2aXR5
OwotCi0jZW5kaWYgLy8gVXNlckFjdGl2aXR5X2gKKyNlbmRpZiAvLyBIeXN0ZXJlc2lzQWN0aXZp
dHlfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCShyZXZp
c2lvbiAxNjQ5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgIUhBVkUoTlNfQUNUSVZJVFkpCiAKLVVzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5KGNv
bnN0IGNoYXIqKQorVXNlckFjdGl2aXR5OjpJbXBsOjpJbXBsKGNvbnN0IGNoYXIqKQogewogfQog
Ci12b2lkIFVzZXJBY3Rpdml0eTo6c3RhcnQoKQordm9pZCBVc2VyQWN0aXZpdHk6OkltcGw6OmJl
Z2luQWN0aXZpdHkoKQogewogfQogCi12b2lkIFVzZXJBY3Rpdml0eTo6c3RvcCgpCit2b2lkIFVz
ZXJBY3Rpdml0eTo6SW1wbDo6ZW5kQWN0aXZpdHkoKQogewogfQogCiAjZW5kaWYKIAorVXNlckFj
dGl2aXR5OjpVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pCisgICAgOiBIeXN0
ZXJlc2lzQWN0aXZpdHk8VXNlckFjdGl2aXR5PigqdGhpcykKKyAgICAsIG1faW1wbChkZXNjcmlw
dGlvbikKK3sKK30KKwordm9pZCBVc2VyQWN0aXZpdHk6OnN0YXJ0ZWQoKQoreworICAgIG1faW1w
bC5iZWdpbkFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpzdG9wcGVkKCkKK3sK
KyAgICBtX2ltcGwuZW5kQWN0aXZpdHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmgJKHJldmlzaW9uIDE2NDkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw5ICsyNiwxMCBAQAogI2lmbmRlZiBVc2VyQWN0aXZpdHlfaAogI2RlZmluZSBV
c2VyQWN0aXZpdHlfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4K
KwogI2lmIEhBVkUoTlNfQUNUSVZJVFkpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogI2VuZGlmCiAKQEAg
LTM3LDIzICszOCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgVXNlckFjdGl2aXR5
IHR5cGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0CiAv
LyBhIHVzZXIgaW5pdGlhdGVkIG9yIHZpc2libGUgYWN0aW9uIGlzIHRha2luZyBwbGFjZSwgYW5k
IGFzIHN1Y2ggdGhhdAogLy8gcmVzb3VyY2VzIHNob3VsZCBiZSBhbGxvY2F0ZWQgdG8gdGhlIHBy
b2Nlc3MgYWNjb3JkaW5nbHkuCi1jbGFzcyBVc2VyQWN0aXZpdHkgeworY2xhc3MgVXNlckFjdGl2
aXR5IDogcHVibGljIEh5c3RlcmVzaXNBY3Rpdml0eTxVc2VyQWN0aXZpdHk+IHsKIHB1YmxpYzoK
LSAgICBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworICAgIGNsYXNzIElt
cGwgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgSW1wbChjb25zdCBjaGFyKiBkZXNj
cmlwdGlvbik7CiAKLSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdG9wKCk7CisgICAgICAg
IHZvaWQgYmVnaW5BY3Rpdml0eSgpOworICAgICAgICB2b2lkIGVuZEFjdGl2aXR5KCk7CiAKLXBy
aXZhdGU6CiAjaWYgSEFWRShOU19BQ1RJVklUWSkKLSAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZp
cmVkKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCk7Ci0KLSAgICBib29sIG1fYWN0aXZlOwotICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gbV9kZXNjcmlwdGlvbjsKLSAgICBSdW5Mb29wOjpUaW1lcjxVc2Vy
QWN0aXZpdHk+IG1fdGltZXI7Ci0gICAgUmV0YWluUHRyPGlkPiBtX2FjdGl2aXR5OworICAgIHBy
aXZhdGU6CisgICAgICAgIFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsKKyAgICAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBtX2Rlc2NyaXB0aW9uOwogI2VuZGlmCisgICAgfTsKKworICAgIGV4cGxp
Y2l0IFVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEh5c3RlcmVzaXNBY3Rpdml0eTxVc2VyQWN0aXZpdHk+OworCisgICAg
dm9pZCBzdGFydGVkKCk7CisgICAgdm9pZCBzdG9wcGVkKCk7CisKKyAgICBJbXBsIG1faW1wbDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkocmV2aXNpb24gMTY0OTM4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VzZXJBY3Rpdml0eU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzAsNjUgKzMwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEhBVkUoTlNf
QUNUSVZJVFkpCiAKLXN0YXRpYyBjb25zdCBkb3VibGUga0h5c3RlcmVzaXNTZWNvbmRzID0gNS4w
OwotCi1Vc2VyQWN0aXZpdHk6OlVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbikK
LSAgICA6IG1fYWN0aXZlKGZhbHNlKQotICAgICwgbV9kZXNjcmlwdGlvbihbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6ZGVzY3JpcHRpb25dKQotICAgICwgbV90aW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZVc2VyQWN0aXZpdHk6Omh5c3RlcmVzaXNUaW1lckZpcmVkKQotewotICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwotfQotCi1ib29sIFVzZXJBY3Rpdml0eTo6aXNWYWxpZCgpCitV
c2VyQWN0aXZpdHk6OkltcGw6OkltcGwoY29uc3QgY2hhciogZGVzY3JpcHRpb24pCisgICAgOiBt
X2Rlc2NyaXB0aW9uKFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpkZXNjcmlwdGlvbl0p
CiB7Ci0gICAgLy8gSWYgY291bnQgaXMgbm9uLXplcm8gdGhlbiB3ZSBzaG91bGQgYmUgaG9sZGlu
ZyBhbiBhY3Rpdml0eSwgYW5kIHRoZSBoeXN0ZXJlc2lzIHRpbWVyIHNob3VsZCBub3QgYmUgcnVu
bmluZy4KLSAgICAvLyBFbHNlIGlmIGNvdW50IGlzIHplcm8gdGhlbjoKLSAgICAvLyAgKGEpIGlm
IHdlJ3JlIGhvbGRpbmcgYW4gYWN0aXZpdHkgdGhlcmUgc2hvdWxkIGJlIGFuIGFjdGl2ZSB0aW1l
ciB0byBjbGVhciB0aGlzLAotICAgIC8vICAoYikgaWYgd2UncmUgbm90IGhvbGRpbmcgYW4gYWN0
aXZpdHkgdGhlcmUgc2hvdWxkIGJlIG5vIGFjdGl2ZSB0aW1lci4KLSAgICByZXR1cm4gbV9hY3Rp
dmUgPyBtX2FjdGl2aXR5ICYmICFtX3RpbWVyLmlzQWN0aXZlKCkgOiAhIW1fYWN0aXZpdHkgPT0g
bV90aW1lci5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFVzZXJBY3Rpdml0eTo6c3RhcnQoKQordm9p
ZCBVc2VyQWN0aXZpdHk6OkltcGw6OmJlZ2luQWN0aXZpdHkoKQogewotICAgIEFTU0VSVChpc1Zh
bGlkKCkpOwotCi0gICAgaWYgKG1fYWN0aXZlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9hY3Rp
dmUgPSB0cnVlOwotCi0gICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV90aW1l
ci5zdG9wKCk7CiAgICAgaWYgKCFtX2FjdGl2aXR5KSB7CiAgICAgICAgIE5TQWN0aXZpdHlPcHRp
b25zIG9wdGlvbnMgPSAoTlNBY3Rpdml0eVVzZXJJbml0aWF0ZWRBbGxvd2luZ0lkbGVTeXN0ZW1T
bGVlcCB8IE5TQWN0aXZpdHlMYXRlbmN5Q3JpdGljYWwpICYgfihOU0FjdGl2aXR5U3VkZGVuVGVy
bWluYXRpb25EaXNhYmxlZCB8IE5TQWN0aXZpdHlBdXRvbWF0aWNUZXJtaW5hdGlvbkRpc2FibGVk
KTsKICAgICAgICAgbV9hY3Rpdml0eSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYmVn
aW5BY3Rpdml0eVdpdGhPcHRpb25zOm9wdGlvbnMgcmVhc29uOm1fZGVzY3JpcHRpb24uZ2V0KCld
OwogICAgIH0KLQotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogfQogCi12b2lkIFVzZXJBY3Rpdml0
eTo6c3RvcCgpCit2b2lkIFVzZXJBY3Rpdml0eTo6SW1wbDo6ZW5kQWN0aXZpdHkoKQogewotICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwotCi0gICAgaWYgKCFtX2FjdGl2ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG1fYWN0aXZlID0gZmFsc2U7Ci0KLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChrSHlz
dGVyZXNpc1NlY29uZHMpOwotCi0gICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci19Ci0KLXZvaWQgVXNl
ckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCgpCi17Ci0gICAgQVNTRVJUKGlzVmFsaWQo
KSk7Ci0KICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5Om1fYWN0
aXZpdHkuZ2V0KCldOwogICAgIG1fYWN0aXZpdHkuY2xlYXIoKTsKLSAgICBtX3RpbWVyLnN0b3Ao
KTsKLQotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225603</attachid>
            <date>2014-03-02 11:29:33 -0800</date>
            <delta_ts>2014-03-02 11:29:33 -0800</delta_ts>
            <desc>GTK fix</desc>
            <filename>129551.3.patch</filename>
            <type>text/plain</type>
            <size>28420</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDE0LTAzLTAxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBVc2Vy
QWN0aXZpdHksIHNpbXBsaWZ5IFBhZ2VUaHJvdHRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjbGFzcyBVc2VyQWN0aXZpdHkgY3VycmVudGx5
IGltcGxlbWVudHMgdHdvIHRoaW5ncyDigJMgYSBoeXN0ZXJlc2lzIG1lY2hhbmlzbSwgYW5kCisg
ICAgICAgIGFuIGFic3RyYWN0aW9uIG9mIE5TQWN0aXZpdHkgY29udHJvbGxlZCBieSB0aGF0IG1l
Y2hhbmlzbS4gUGFnZVRocm90dGxlciBpbXBsZW1lbnRzCisgICAgICAgIGl0cyBvd24gaHlzdGVy
ZXNpcyBtZWNoYW5pc20sIHdoaWNoIGRpcmVjdGx5IGNvbnRyb2xzIERPTSB0aW1lciB0aHJvdHRs
aW5nIGFuZCBhbHNvCisgICAgICAgIGNvbnRyb2xzIGEgY291cGxlIG9mIFVzZXJBY3Rpdml0aWVz
LCBnaXZpbmcgYSB0b3RhbCBvZiAzIHNlcGFyYXRlIGh5c3RlcmVzaXMgbWVjaGFuaXNtcywKKyAg
ICAgICAgbGF5ZXJlZCB0d28gZGVlcC4KKworICAgICAgICBTcGxpdCBVc2VyQWN0aXZpdHkgaW50
byB0aHJlZSwgd2l0aCBIeXN0ZXJlc2lzQWN0aXZpdHkgaW1wbGVtZW50aW5nIGFuIGFic3RyYWN0
IGh5c3RlcmVzaXMKKyAgICAgICAgbWVjaGFuaXNtLCBVc2VyQWN0aXZpdHk6OkltcGwgY29udHJv
bGxpbmcgdGhlIE5TQWN0aXZpdHksIGFuZCB0aGVuIFVzZXJBY3Rpdml0eSBjb21iaW5pbmcKKyAg
ICAgICAgdGhlc2UgdHdvIGJhY2sgdG9nZXRoZXIuIFRoZSBpbnRlcmZhY2UgdG8gVXNlckFjdGl2
aXR5IGlzIHVuY2hhbmdlZC4KKworICAgICAgICBSZW1vdmUgUGFnZVRocm90dGxlcidzIGJlc3Bv
a2UgaHlzdGVyZXNpcywgcmVwbGFjaW5nIGl0IHdpdGggYSB1c2Ugb2YgSHlzdGVyZXNpc0FjdGl2
aXR5LgorICAgICAgICBSZXBsYWNlIHRoZSB0d28gVXNlckFjdGl2aXRpZXMgd2l0aCBhIHNpbmds
ZSBVc2VyQWN0aXZpdHk6OkltcGwsIHNvIHRoZXJlIGFyZSBubyBsb25nZXIKKyAgICAgICAgbGF5
ZXJlZCBoeXN0ZXJlc2lzIG1lY2hhbmlzbXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgICAgIC0gZXhwb3J0cyBjaGFuZ2VkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgICAgIC0gYWRkZWQgSHlzdGVyZXNpc0FjdGl2
aXR5LmguCisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIpOgorICAgICAgICAgICAgLSBpZiB0aGUg
cGFnZSBzdGFydHMgdmlzaWJsZSwgYmVnaW4gYWN0aXZpdHkuIElmIGl0IHN0YXJ0cyBoaWRkZW4g
dGhyb3R0bGUgRE9NIHRpbWVycy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6Omhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAgICAgLSB3
aGVuIHRoZSBET00gdGltZXIgdGhyb3R0bGluZyBzZXR0aW5nIGNoYW5nZXMsIG1ha2Ugc3VyZSB3
ZSB1cGRhdGUuCisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRBY3Rp
dml0eUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OmRlY3JlbWVudEFj
dGl2aXR5Q291bnQpOgorICAgICAgICAgICAgLSB3aGVuIG1fYWN0aXZpdHlDb3VudCBjaGFuZ2Vz
IHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJv
dHRsZXI6OnVwZGF0ZUh5c3RlcmVzaXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6c2V0Vmlld1N0YXRlKToKKyAgICAgICAgICAgIC0gd2hlbiBJc1Zpc3VhbGx5SWRsZSBjaGFu
Z2VzIHVwZGF0ZSB0aGUgaHlzdGVyZXNpcyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VU
aHJvdHRsZXI6OnN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6c3Rv
cHBlZCk6CisgICAgICAgICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNBY3Rpdml0eSwg
dGhlc2UgY29udHJvbCBtX2FjdGl2aXR5IGFuZCBET00gdGltZXIgdGhyb3R0bGluZy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2VUaHJvdHRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRs
ZXI6OmRpZFJlY2VpdmVVc2VySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxl
cjo6cGx1Z2luRGlkRXZhbHVhdGUpOgorICAgICAgICAgICAgLSBjYWxsIGltcHVsc2UgdG8gdGVt
cG9yYXJpbHkgZW5hYmxlIHRoZSBhY3Rpdml0eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFj
dGl2aXR5LmguCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZpdHk6Okh5c3RlcmVz
aXNBY3Rpdml0eSk6CisgICAgICAgICAgICAtIGNvbnN0cnVjdG9yIHRha2VzIGEgZGVsZWdhdGUg
b3B0aW9uYWxseSBhIHRpbWVvdXQuCisgICAgICAgIChXZWJDb3JlOjpIeXN0ZXJlc2lzQWN0aXZp
dHk6OnN0YXJ0KToKKyAgICAgICAgICAgIC0gc3RhcnQgYWN0aXZpdHkgaW1tZWRpYXRlbHkuIElm
IHN0b3BwZWQsIGNhbGwgc3RhcnRlZCBtZXRob2Qgb24gZGVsZWdhdGUuIElmIGluIHRpbWVvdXQg
cGVyaW9kLCBjYW5jZWwgdGhlIHRpbWVyLgorICAgICAgICAoV2ViQ29yZTo6SHlzdGVyZXNpc0Fj
dGl2aXR5OjpzdG9wKToKKyAgICAgICAgICAgIC0gc3RvcCBhY3Rpdml0eSBhZnRlciBoeXN0ZXJl
c2lzLiBJZiBzdGFydGVkLCBpbml0aWF0ZSB0aW1lb3V0IHBlcmlvZC4KKyAgICAgICAgKFdlYkNv
cmU6Okh5c3RlcmVzaXNBY3Rpdml0eTo6aW1wdWxzZSk6CisgICAgICAgICAgICAtIGVuc3VyZSBh
Y3Rpdml0eSBmb3IgYXQgbGVhc3QgdGhlIHRpbWVvdXQgcGVyaW9kLgorICAgICAgICAoV2ViQ29y
ZTo6SHlzdGVyZXNpc0FjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCk6CisgICAgICAgICAg
ICAtIGRlbGF5ZWQgc3RvcCAtIHdoZW4gdGhlIHRpbWVyIGZpcmVzIGNhbGwgc3RvcHBlZCBvbiB0
aGUgZGVsZWdhdGUuCisgICAgICAgICogcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpVc2VyQWN0aXZpdHk6OkltcGw6OmJlZ2luQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6
VXNlckFjdGl2aXR5OjpJbXBsOjplbmRBY3Rpdml0eSk6CisgICAgICAgICAgICAtIG5vcCBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5
KToKKyAgICAgICAgICAgIC0gVXNlckFjdGl2aXR5IG1haW50YWlucyBleGlzdGluZyBpbnRlcmZh
Y2Ugd2l0aCBoeXN0ZXJlc2lzLgorICAgICAgICAoV2ViQ29yZTo6VXNlckFjdGl2aXR5OjpzdGFy
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJBY3Rpdml0eTo6c3RvcHBlZCk6CisgICAgICAg
ICAgICAtIGNhbGxiYWNrcyBmcm9tIEh5c3RlcmVzaXNUaW1lcjsgZm9yd2FyZCB0byBJbXBsLgor
ICAgICAgICAqIHBsYXRmb3JtL1VzZXJBY3Rpdml0eS5oOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9Vc2VyQWN0aXZpdHlNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6Oklt
cGw6OkltcGwpOgorICAgICAgICAgICAgLSBVc2VyQWN0aXZpdHk6OkltcGwsIGFic3RyYWN0aW9u
IGZvciBOU0FjdGl2aXR5IHdpdGhvdXQgYWRkZWQgaHlzdGVyZXNpcy4KKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJBY3Rpdml0eTo6SW1wbDo6YmVnaW5BY3Rpdml0eSk6CisgICAgICAgICAgICAtIGFs
bG9jYXRlIE5TQWN0aXZpdHkuCisgICAgICAgIChXZWJDb3JlOjpVc2VyQWN0aXZpdHk6OkltcGw6
OmVuZEFjdGl2aXR5KToKKyAgICAgICAgICAgIC0gcmVsZWFzZSBOU0FjdGl2aXR5LgorCiAyMDE0
LTAzLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYktpdDIgVmlldyBHZXN0dXJlcyAoU21hcnQgTWFnbmlmaWNhdGlvbik6IFN1cHBvcnQgZm9y
IGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjQ5Mzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC01NDkxLDcgKzU0OTEsOCBAQCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBY3Rpdml0eS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0
eS5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0h5c3RlcmVzaXNBY3Rpdml0eS5oCiAKIHBsYXRmb3JtX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRp
ZXMuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY0OTM4KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw4ICsyNDAs
NyBAQCBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjdhZHZhbmNlRXYKIF9fWk43V2ViQ29yZTEy
VGV4dEl0ZXJhdG9yOHN1YnJhbmdlRVBOU181UmFuZ2VFaWkKIF9fWk43V2ViQ29yZTEyVGV4dEl0
ZXJhdG9yQzFFUEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckUKIF9fWk43V2Vi
Q29yZTEyVGV4dEl0ZXJhdG9yRDFFdgotX19aTjdXZWJDb3JlMTJVc2VyQWN0aXZpdHk0c3RvcEV2
Ci1fX1pON1dlYkNvcmUxMlVzZXJBY3Rpdml0eTVzdGFydEV2CitfX1pON1dlYkNvcmUxMlVzZXJB
Y3Rpdml0eTdzdGFydGVkRXYKIF9fWk43V2ViQ29yZTEyVXNlckFjdGl2aXR5QzFFUEtjCiBfX1pO
N1dlYkNvcmUxMlVURjhFbmNvZGluZ0V2CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29y
a2VyVGhyZWFkQ291bnRFdgpAQCAtMzE4LDggKzMxNyw3IEBAIF9fWk43V2ViQ29yZTEzS2V5Ym9h
cmRFdmVudEMxRVJLTlNfMjFQbGEKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDEzZGVlcExh
c3RDaGlsZEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM05vZGVUcmF2ZXJzYWwxOW5leHRBbmNl
c3RvclNpYmxpbmdFUEtOU180Tm9kZUUKIF9fWk43V2ViQ29yZTEzTm9kZVRyYXZlcnNhbDE5bmV4
dEFuY2VzdG9yU2libGluZ0VQS05TXzROb2RlRVMzXwotX19aTjdXZWJDb3JlMTNQYWdlVGhyb3R0
bGVyMjJyZXBvcnRJbnRlcmVzdGluZ0V2ZW50RXYKLV9fWk43V2ViQ29yZTEzUGFnZVRocm90dGxl
ckQxRXYKK19fWk43V2ViQ29yZTEzUGFnZVRocm90dGxlcjdzdGFydGVkRXYKIF9fWk43V2ViQ29y
ZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA3TlNF
cnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNp
b24gMTY0OTM4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTkwMDIsNiArMTkwMDIsNyBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVGltZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXFRyZWVTaGFyZWQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXFVzZXJBY3Rpdml0eS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cSHlzdGVyZXNpc0FjdGl2aXR5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxVVUlELmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxXaWRnZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XHdpblxCaXRtYXBJbmZvLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjQ5Mzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMJKHdvcmtpbmcgY29weSkKQEAgLTgxMjAsNiArODEyMCw5IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxVc2VyQWN0aXZpdHkuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxIeXN0ZXJlc2lzQWN0aXZpdHkuaCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxVVUlELmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY0OTM4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTM3LDYg
KzI5MzcsNyBAQAogCQk4NjFDMkVBNDEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGlt
aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwICovOyB9Owog
CQk4NjFDMkVBNjEzRkI0RkZGMDAwNjJBQkIgLyogUmVzb3VyY2VMb2FkVGltaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MUMyRUE1MTNGQjRG
RkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovOyB9OwogCQk4NjJGMTI5RTE4
QzE1NzZGMDA1QzU0QUYgLyogQ291bnRlZFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyRjEyOUQxOEMxNTcyQzAwNUM1NEFGIC8q
IENvdW50ZWRVc2VyQWN0aXZpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4NjJGMTJBMDE4QzFERDAyMDA1QzU0QUYgLyogSHlzdGVyZXNpc0Fj
dGl2aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjJGMTI5RjE4QzFEQ0U0MDA1QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY1MTJFREUxNTRBMkFF
RjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1MTJFREIxNTRBMkFFRTAwQTkwNDI2
IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwICovOyB9OwogCQk4NjUxMkVERjE1NEEy
QUVGMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1MTJFREMxNTRBMkFFRjAwQTkwNDI2
IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLzsgfTsKIAkJODY3OEQwQkIxODc4RTg5
MTAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3OEQwQkExODc4RTgxMDAwM0FCREU2IC8qIFZpZXdTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05ODQwLDYg
Kzk4NDEsNyBAQAogCQk4NjFDMkVBMzEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGlt
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9h
ZFRpbWluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2MUMyRUE1MTNGQjRG
RkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODYyRjEyOUQxOEMxNTcyQzAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0
aXZpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRlZFVzZXJBY3Rp
dml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NjJGMTI5RjE4QzFEQ0U0MDA1
QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEh5c3RlcmVzaXNBY3Rpdml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NjUxMkVEQjE1NEEyQUVFMDBBOTA0MjYgLyogUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZXJmb3JtYW5jZVJlc291
cmNlVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1MTJFREMxNTRB
MkFFRjAwQTkwNDI2IC8qIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NjUxMkVERDE1NEEyQUVGMDBBOTA0MjYgLyogUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVyZm9ybWFu
Y2VSZXNvdXJjZVRpbWluZy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDcz
MCw2ICsyMDczMiw3IEBACiAJCQkJRDZGREFFRjIxNDlDMDYxOTAwMzdCMUUxIC8qIEhpc3RvZ3Jh
bVN1cHBvcnQuY3BwICovLAogCQkJCUQ2MzBFMkFCMTQ5QkYzNDQwMDVCMkY5MyAvKiBIaXN0b2dy
YW1TdXBwb3J0LmggKi8sCiAJCQkJQkMzQkMyOUIwRTkxQUIwRjAwODM1NTg4IC8qIEhvc3RXaW5k
b3cuaCAqLywKKwkJCQk4NjJGMTI5RjE4QzFEQ0U0MDA1QzU0QUYgLyogSHlzdGVyZXNpc0FjdGl2
aXR5LmggKi8sCiAJCQkJMUFFMDBENTcxODJEQUM4RDAwMDg3REQ3IC8qIEtleWVkQ29kaW5nLmgg
Ki8sCiAJCQkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxSaW5nLmggKi8sCiAJCQkJ
NDMwNkU0RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5nTm9uZS5jcHAgKi8sCkBAIC0yMzc3
MSw2ICsyMzc3NCw3IEBACiAJCQkJNDQxNTI5MkUwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0IwMEExOTJCOUMwMEE4
RUY1RiAvKiBIVE1MUHJlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzMxMjI4
ODNFOTAwQjgxRkY4IC8qIEhUTUxQcmVsb2FkU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODYyRjEyQTAxOEMxREQwMjAwNUM1NEFGIC8qIEh5c3RlcmVzaXNBY3Rpdml0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1M
UXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcy
ODggLyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkocmV2aXNpb24gMTY0OTM4KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMzQg
KzM1LDI1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGRvdWJsZSBr
VGhyb3R0bGVIeXN0ZXJlc2lzU2Vjb25kcyA9IDIuMDsKLQogUGFnZVRocm90dGxlcjo6UGFnZVRo
cm90dGxlcihQYWdlJiBwYWdlLCBWaWV3U3RhdGU6OkZsYWdzIHZpZXdTdGF0ZSkKICAgICA6IG1f
cGFnZShwYWdlKQogICAgICwgbV92aWV3U3RhdGUodmlld1N0YXRlKQotICAgICwgbV90aHJvdHRs
ZVN0YXRlKFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSkKLSAgICAsIG1fdGhyb3R0bGVIeXN0ZXJlc2lz
VGltZXIodGhpcywgJlBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQp
CiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCisgICAgLCBtX2h5c3RlcmVzaXMoKnRoaXMp
CisgICAgLCBtX2FjdGl2aXR5KCJQYWdlIGlzIGFjdGl2ZS4iKQogICAgICwgbV9hY3Rpdml0eUNv
dW50KDApCi0gICAgLCBtX3Zpc3VhbGx5Tm9uSWRsZSgiUGFnZSBpcyBub3QgdmlzdWFsbHkgaWRs
ZS4iKQotICAgICwgbV9wYWdlQWN0aXZpdHkoIlBhZ2UgaXMgYWN0aXZlLiIpCi17Ci0gICAgbV9w
YWdlQWN0aXZpdHkuaW5jcmVtZW50KCk7Ci0KLSAgICBzZXRJc1Zpc3VhbGx5SWRsZSh2aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKLX0KLQotUGFnZVRocm90dGxlcjo6flBh
Z2VUaHJvdHRsZXIoKQogewotICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKGZh
bHNlKTsKLQotICAgIGlmIChtX3Rocm90dGxlU3RhdGUgIT0gUGFnZVRocm90dGxlZFN0YXRlKQot
ICAgICAgICBtX3BhZ2VBY3Rpdml0eS5kZWNyZW1lbnQoKTsKKyAgICBpZiAobV92aWV3U3RhdGUg
JiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKQorICAgICAgICBtX3BhZ2Uuc2V0VGltZXJUaHJv
dHRsaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFy
dCgpOwogfQogCiB2b2lkIFBhZ2VUaHJvdHRsZXI6OmhpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdTdGF0ZUNoYW5nZWQoKQogewotICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVk
KG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpOworICAgIC8vIElmIHRp
bWVyIHRocm90dGxpbmcgaXMgZW5hYmxlZCwgdGhpcyB3aWxsIHRlbXBvcmFyaWx5IGRpc2FibGUg
aXQuCisgICAgLy8gQWZ0ZXIgYSB0aW1lb3V0IGl0IHdpbGwgYmUgcmVlbmFibGVkLCByZXJlYWRp
bmcgdGhlIHNldHRpbmcuCisgICAgbV9oeXN0ZXJlc2lzLmltcHVsc2UoKTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBQYWdlVGhyb3R0bGVyOjptZWRp
YUFjdGl2aXR5VG9rZW4oKQpAQCAtNzUsMjcgKzY2LDI0IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdl
QWN0aXZpdHlBc3NlcnRpb25Ub2sKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbj4oKnRoaXMpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnRo
cm90dGxlUGFnZSgpCit2b2lkIFBhZ2VUaHJvdHRsZXI6OmluY3JlbWVudEFjdGl2aXR5Q291bnQo
KQogewotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VUaHJvdHRsZWRTdGF0ZTsKLQotICAgIG1f
cGFnZUFjdGl2aXR5LmRlY3JlbWVudCgpOwotCi0gICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGlu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgKyttX2FjdGl2aXR5Q291bnQ7CisgICAgdXBkYXRlSHlzdGVy
ZXNpcygpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnVudGhyb3R0bGVQYWdlKCkKK3ZvaWQg
UGFnZVRocm90dGxlcjo6ZGVjcmVtZW50QWN0aXZpdHlDb3VudCgpCiB7Ci0gICAgUGFnZVRocm90
dGxlU3RhdGUgb2xkU3RhdGUgPSBtX3Rocm90dGxlU3RhdGU7Ci0gICAgbV90aHJvdHRsZVN0YXRl
ID0gUGFnZU5vdFRocm90dGxlZFN0YXRlOwotCi0gICAgaWYgKG9sZFN0YXRlID09IFBhZ2VOb3RU
aHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOworICAgIC0tbV9hY3Rpdml0eUNvdW50Owor
ICAgIHVwZGF0ZUh5c3RlcmVzaXMoKTsKK30KIAotICAgIGlmIChvbGRTdGF0ZSA9PSBQYWdlVGhy
b3R0bGVkU3RhdGUpCi0gICAgICAgIG1fcGFnZUFjdGl2aXR5LmluY3JlbWVudCgpOwotICAgIAot
ICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKGZhbHNlKTsKK3ZvaWQgUGFnZVRo
cm90dGxlcjo6dXBkYXRlSHlzdGVyZXNpcygpCit7CisgICAgaWYgKG1fYWN0aXZpdHlDb3VudCB8
fCAhKG1fdmlld1N0YXRlICYgVmlld1N0YXRlOjpJc1Zpc3VhbGx5SWRsZSkpCisgICAgICAgIG1f
aHlzdGVyZXNpcy5zdGFydCgpOworICAgIGVsc2UKKyAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3Ao
KTsKIH0KIAogdm9pZCBQYWdlVGhyb3R0bGVyOjpzZXRWaWV3U3RhdGUoVmlld1N0YXRlOjpGbGFn
cyB2aWV3U3RhdGUpCkBAIC0xMDMsODggKzkxLDIwIEBAIHZvaWQgUGFnZVRocm90dGxlcjo6c2V0
Vmlld1N0YXRlKFZpZXdTdGEKICAgICBWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQgPSBtX3ZpZXdT
dGF0ZSBeIHZpZXdTdGF0ZTsKICAgICBtX3ZpZXdTdGF0ZSA9IHZpZXdTdGF0ZTsKIAotICAgIGlm
IChjaGFuZ2VkICYgVmlld1N0YXRlOjpJc1Zpc2libGUpCi0gICAgICAgIHNldElzVmlzaWJsZSh2
aWV3U3RhdGUgJiBWaWV3U3RhdGU6OklzVmlzaWJsZSk7CiAgICAgaWYgKGNoYW5nZWQgJiBWaWV3
U3RhdGU6OklzVmlzdWFsbHlJZGxlKQotICAgICAgICBzZXRJc1Zpc3VhbGx5SWRsZSh2aWV3U3Rh
dGUgJiBWaWV3U3RhdGU6OklzVmlzdWFsbHlJZGxlKTsKKyAgICAgICAgdXBkYXRlSHlzdGVyZXNp
cygpOwogfQogCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnNldElzVmlzaWJsZShib29sIGlzVmlzaWJs
ZSkKK3ZvaWQgUGFnZVRocm90dGxlcjo6c3RhcnRlZCgpCiB7Ci0gICAgaWYgKGlzVmlzaWJsZSkK
LSAgICAgICAgbV9wYWdlLnNldFRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIGVs
c2UgaWYgKG1fdGhyb3R0bGVTdGF0ZSAhPSBQYWdlTm90VGhyb3R0bGVkU3RhdGUpCi0gICAgICAg
IG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKHRydWUpOwotfQotCi12b2lkIFBhZ2VU
aHJvdHRsZXI6OnNldElzVmlzdWFsbHlJZGxlKGJvb2wgaXNWaXN1YWxseUlkbGUpCi17Ci0gICAg
aWYgKGlzVmlzdWFsbHlJZGxlKSB7Ci0gICAgICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0
aW5nVG9UaHJvdHRsZVN0YXRlOwotICAgICAgICBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVy
KCk7Ci0gICAgICAgIG1fdmlzdWFsbHlOb25JZGxlLnN0b3AoKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICB1bnRocm90dGxlUGFnZSgpOwotICAgICAgICBzdG9wVGhyb3R0bGVIeXN0ZXJlc2lzVGlt
ZXIoKTsKLSAgICAgICAgbV92aXN1YWxseU5vbklkbGUuc3RhcnQoKTsKLSAgICB9Ci19Ci0KLXZv
aWQgUGFnZVRocm90dGxlcjo6c3RvcFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKLXsKLSAgICBt
X3Rocm90dGxlSHlzdGVyZXNpc1RpbWVyLnN0b3AoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVy
OjpyZXBvcnRJbnRlcmVzdGluZ0V2ZW50KCkKLXsKLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09
IFBhZ2VOb3RUaHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX3Rocm90
dGxlU3RhdGUgPT0gUGFnZVRocm90dGxlZFN0YXRlKQotICAgICAgICB1bnRocm90dGxlUGFnZSgp
OwotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlOwotICAg
IHN0YXJ0VGhyb3R0bGVIeXN0ZXJlc2lzVGltZXIoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVy
OjpzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCkKLXsKLSAgICBpZiAobV90aHJvdHRsZUh5
c3RlcmVzaXNUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3Rocm90dGxlSHlzdGVyZXNpc1Rp
bWVyLnN0b3AoKTsKLSAgICBpZiAoIW1fYWN0aXZpdHlDb3VudCkKLSAgICAgICAgbV90aHJvdHRs
ZUh5c3RlcmVzaXNUaW1lci5zdGFydE9uZVNob3Qoa1Rocm90dGxlSHlzdGVyZXNpc1NlY29uZHMp
OwotfQotCi12b2lkIFBhZ2VUaHJvdHRsZXI6OnRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQo
VGltZXI8UGFnZVRocm90dGxlcj4mKQotewotICAgIEFTU0VSVCghbV9hY3Rpdml0eUNvdW50KTsK
LSAgICB0aHJvdHRsZVBhZ2UoKTsKLX0KLQotdm9pZCBQYWdlVGhyb3R0bGVyOjppbmNyZW1lbnRB
Y3Rpdml0eUNvdW50KCkKLXsKLSAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBldmVudHMgdGhh
dCBibG9jayB0aHJvdHRsaW5nIHdlIGNhbiByZXR1cm4gZWFybHkKLSAgICBpZiAobV9hY3Rpdml0
eUNvdW50KyspCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3Rocm90dGxlU3RhdGUgPT0g
UGFnZU5vdFRocm90dGxlZFN0YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90aHJv
dHRsZVN0YXRlID09IFBhZ2VUaHJvdHRsZWRTdGF0ZSkKLSAgICAgICAgdW50aHJvdHRsZVBhZ2Uo
KTsKLQotICAgIG1fdGhyb3R0bGVTdGF0ZSA9IFBhZ2VXYWl0aW5nVG9UaHJvdHRsZVN0YXRlOwot
ICAgIHN0b3BUaHJvdHRsZUh5c3RlcmVzaXNUaW1lcigpOworICAgIG1fcGFnZS5zZXRUaW1lclRo
cm90dGxpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBtX2FjdGl2aXR5LmJlZ2luQWN0aXZpdHkoKTsK
IH0KIAotdm9pZCBQYWdlVGhyb3R0bGVyOjpkZWNyZW1lbnRBY3Rpdml0eUNvdW50KCkKK3ZvaWQg
UGFnZVRocm90dGxlcjo6c3RvcHBlZCgpCiB7Ci0gICAgaWYgKC0tbV9hY3Rpdml0eUNvdW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90aHJvdHRsZVN0YXRlID09IFBhZ2VOb3RUaHJv
dHRsZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fdGhyb3R0bGVTdGF0
ZSA9PSBQYWdlV2FpdGluZ1RvVGhyb3R0bGVTdGF0ZSk7Ci0gICAgc3RhcnRUaHJvdHRsZUh5c3Rl
cmVzaXNUaW1lcigpOworICAgIG1fcGFnZS5zZXRUaW1lclRocm90dGxpbmdFbmFibGVkKHRydWUp
OworICAgIG1fYWN0aXZpdHkuZW5kQWN0aXZpdHkoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlVGhyb3R0bGVyLmgJKHJldmlzaW9uIDE2NDkzOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVRocm90dGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJUaW1lci5oIgogCi0jaW5jbHVkZSAiQ291bnRlZFVzZXJBY3Rpdml0eS5oIgor
I2luY2x1ZGUgIlVzZXJBY3Rpdml0eS5oIgogI2luY2x1ZGUgIlZpZXdTdGF0ZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNDMsNDkgKzQz
LDM0IEBAIGNsYXNzIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuOwogY2xhc3MgUGFnZVRocm90
dGxlciB7CiBwdWJsaWM6CiAgICAgUGFnZVRocm90dGxlcihQYWdlJiwgVmlld1N0YXRlOjpGbGFn
cyk7Ci0gICAgflBhZ2VUaHJvdHRsZXIoKTsKIAogICAgIHZvaWQgc2V0Vmlld1N0YXRlKFZpZXdT
dGF0ZTo6RmxhZ3MpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlVXNlcklucHV0KCkgeyByZXBvcnRJ
bnRlcmVzdGluZ0V2ZW50KCk7IH0KLSAgICB2b2lkIHBsdWdpbkRpZEV2YWx1YXRlKCkgeyByZXBv
cnRJbnRlcmVzdGluZ0V2ZW50KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVVc2VySW5wdXQoKSB7
IG1faHlzdGVyZXNpcy5pbXB1bHNlKCk7IH0KKyAgICB2b2lkIHBsdWdpbkRpZEV2YWx1YXRlKCkg
eyBtX2h5c3RlcmVzaXMuaW1wdWxzZSgpOyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VBY3Rp
dml0eUFzc2VydGlvblRva2VuPiBtZWRpYUFjdGl2aXR5VG9rZW4oKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4+IHBhZ2VMb2FkQWN0aXZpdHlUb2tlbigp
OwogCiAgICAgdm9pZCBoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nU3RhdGVDaGFuZ2VkKCk7
CiAKIHByaXZhdGU6Ci0gICAgZW51bSBQYWdlVGhyb3R0bGVTdGF0ZSB7Ci0gICAgICAgIFBhZ2VO
b3RUaHJvdHRsZWRTdGF0ZSwKLSAgICAgICAgUGFnZVdhaXRpbmdUb1Rocm90dGxlU3RhdGUsCi0g
ICAgICAgIFBhZ2VUaHJvdHRsZWRTdGF0ZQotICAgIH07Ci0KICAgICBmcmllbmQgY2xhc3MgUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CiAgICAgV2Vha1B0cjxQYWdlVGhyb3R0bGVyPiB3ZWFr
UHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KICAgICB2
b2lkIGluY3JlbWVudEFjdGl2aXR5Q291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2aXR5
Q291bnQoKTsKIAotICAgIHZvaWQgcmVwb3J0SW50ZXJlc3RpbmdFdmVudCgpOwotCi0gICAgdm9p
ZCBzdGFydFRocm90dGxlSHlzdGVyZXNpc1RpbWVyKCk7Ci0gICAgdm9pZCBzdG9wVGhyb3R0bGVI
eXN0ZXJlc2lzVGltZXIoKTsKLSAgICB2b2lkIHRocm90dGxlSHlzdGVyZXNpc1RpbWVyRmlyZWQo
VGltZXI8UGFnZVRocm90dGxlcj4mKTsKLQotICAgIHZvaWQgdGhyb3R0bGVQYWdlKCk7Ci0gICAg
dm9pZCB1bnRocm90dGxlUGFnZSgpOworICAgIHZvaWQgdXBkYXRlSHlzdGVyZXNpcygpOwogCi0g
ICAgdm9pZCBzZXRJc1Zpc3VhbGx5SWRsZShib29sKTsKLSAgICB2b2lkIHNldElzVmlzaWJsZShi
b29sKTsKKyAgICBmcmllbmQgY2xhc3MgSHlzdGVyZXNpc0FjdGl2aXR5PFBhZ2VUaHJvdHRsZXI+
OworICAgIHZvaWQgc3RhcnRlZCgpOworICAgIHZvaWQgc3RvcHBlZCgpOwogCiAgICAgUGFnZSYg
bV9wYWdlOwogICAgIFZpZXdTdGF0ZTo6RmxhZ3MgbV92aWV3U3RhdGU7Ci0gICAgUGFnZVRocm90
dGxlU3RhdGUgbV90aHJvdHRsZVN0YXRlOwotICAgIFRpbWVyPFBhZ2VUaHJvdHRsZXI+IG1fdGhy
b3R0bGVIeXN0ZXJlc2lzVGltZXI7CiAgICAgV2Vha1B0ckZhY3Rvcnk8UGFnZVRocm90dGxlcj4g
bV93ZWFrUHRyRmFjdG9yeTsKKyAgICBIeXN0ZXJlc2lzQWN0aXZpdHk8UGFnZVRocm90dGxlcj4g
bV9oeXN0ZXJlc2lzOworICAgIFVzZXJBY3Rpdml0eTo6SW1wbCBtX2FjdGl2aXR5OwogICAgIHNp
emVfdCBtX2FjdGl2aXR5Q291bnQ7Ci0gICAgVXNlckFjdGl2aXR5IG1fdmlzdWFsbHlOb25JZGxl
OwotICAgIENvdW50ZWRVc2VyQWN0aXZpdHkgbV9wYWdlQWN0aXZpdHk7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAkocmV2aXNp
b24gMTY0OTEzKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuaDox
NjQ5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJlc2lzQWN0aXZpdHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVc2Vy
QWN0aXZpdHlfaAorI2RlZmluZSBVc2VyQWN0aXZpdHlfaAorCisjaWYgSEFWRShOU19BQ1RJVklU
WSkKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
K09CSkNfQ0xBU1MgTlNTdHJpbmc7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBUaGUgVXNlckFjdGl2aXR5IHR5cGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgb3BlcmF0
aW5nIHN5c3RlbSB0aGF0CisvLyBhIHVzZXIgaW5pdGlhdGVkIG9yIHZpc2libGUgYWN0aW9uIGlz
IHRha2luZyBwbGFjZSwgYW5kIGFzIHN1Y2ggdGhhdAorLy8gcmVzb3VyY2VzIHNob3VsZCBiZSBh
bGxvY2F0ZWQgdG8gdGhlIHByb2Nlc3MgYWNjb3JkaW5nbHkuCitjbGFzcyBVc2VyQWN0aXZpdHkg
eworcHVibGljOgorICAgIFVzZXJBY3Rpdml0eShjb25zdCBjaGFyKiBkZXNjcmlwdGlvbik7CisK
KyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6CisjaWYgSEFW
RShOU19BQ1RJVklUWSkKKyAgICB2b2lkIGh5c3RlcmVzaXNUaW1lckZpcmVkKCk7CisgICAgYm9v
bCBpc1ZhbGlkKCk7CisKKyAgICBib29sIG1fYWN0aXZlOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gbV9kZXNjcmlwdGlvbjsKKyAgICBSdW5Mb29wOjpUaW1lcjxVc2VyQWN0aXZpdHk+IG1fdGlt
ZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX2FjdGl2aXR5OworI2VuZGlmCit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKK3VzaW5nIFdlYkNvcmU6OlVzZXJBY3Rpdml0eTsKKworI2VuZGlm
IC8vIFVzZXJBY3Rpdml0eV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0ZXJl
c2lzQWN0aXZpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9IeXN0
ZXJlc2lzQWN0aXZpdHkuaAkod29ya2luZyBjb3B5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSHlzdGVyZXNpc0FjdGl2aXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDQxICsyMyw2OCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVXNl
ckFjdGl2aXR5X2gKLSNkZWZpbmUgVXNlckFjdGl2aXR5X2gKKyNpZm5kZWYgSHlzdGVyZXNpc0Fj
dGl2aXR5X2gKKyNkZWZpbmUgSHlzdGVyZXNpc0FjdGl2aXR5X2gKIAotI2lmIEhBVkUoTlNfQUNU
SVZJVFkpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+Ci1PQkpDX0NMQVNTIE5TU3RyaW5nOwotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotLy8gVGhlIFVzZXJBY3Rpdml0eSB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9w
ZXJhdGluZyBzeXN0ZW0gdGhhdAotLy8gYSB1c2VyIGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlv
biBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNoIHRoYXQKLS8vIHJlc291cmNlcyBzaG91bGQg
YmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9jZXNzIGFjY29yZGluZ2x5LgotY2xhc3MgVXNlckFjdGl2
aXR5IHsKLXB1YmxpYzoKLSAgICBVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24p
Oworc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0SHlzdGVyZXNpc1NlY29uZHMgPSA1LjA7CiAK
LSAgICB2b2lkIHN0YXJ0KCk7Ci0gICAgdm9pZCBzdG9wKCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZWxlZ2F0ZT4KK2NsYXNzIEh5c3RlcmVzaXNBY3Rpdml0eSB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgSHlzdGVyZXNpc0FjdGl2aXR5KERlbGVnYXRlJiBkZWxlZ2F0ZSwgZG91YmxlIGh5c3RlcmVz
aXNTZWNvbmRzID0gRGVmYXVsdEh5c3RlcmVzaXNTZWNvbmRzKQorICAgICAgICA6IG1fZGVsZWdh
dGUoZGVsZWdhdGUpCisgICAgICAgICwgbV9oeXN0ZXJlc2lzU2Vjb25kcyhoeXN0ZXJlc2lzU2Vj
b25kcykKKyAgICAgICAgLCBtX2FjdGl2ZShmYWxzZSkKKyAgICAgICAgLCBtX3RpbWVyKFJ1bkxv
b3A6Om1haW4oKSwgdGhpcywgJkh5c3RlcmVzaXNBY3Rpdml0eTxEZWxlZ2F0ZT46Omh5c3RlcmVz
aXNUaW1lckZpcmVkKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KCkKKyAgICB7Cisg
ICAgICAgIGlmIChtX2FjdGl2ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hY3Rp
dmUgPSB0cnVlOworCisgICAgICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAg
ICBtX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWxlZ2F0ZS5z
dGFydGVkKCk7CisgICAgfQorCisgICAgdm9pZCBzdG9wKCkKKyAgICB7CisgICAgICAgIGlmICgh
bV9hY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fYWN0aXZlID0gZmFsc2U7
CisKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QobV9oeXN0ZXJlc2lzU2Vjb25kcyk7Cisg
ICAgfQorCisgICAgdm9pZCBpbXB1bHNlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9hY3RpdmUp
IHsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgIH0K
KyAgICB9CiAKIHByaXZhdGU6Ci0jaWYgSEFWRShOU19BQ1RJVklUWSkKLSAgICB2b2lkIGh5c3Rl
cmVzaXNUaW1lckZpcmVkKCk7Ci0gICAgYm9vbCBpc1ZhbGlkKCk7CisgICAgdm9pZCBoeXN0ZXJl
c2lzVGltZXJGaXJlZCgpCisgICAgeworICAgICAgICBtX2RlbGVnYXRlLnN0b3BwZWQoKTsKKyAg
ICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgfQogCisgICAgRGVsZWdhdGUmIG1fZGVsZWdhdGU7
CisgICAgZG91YmxlIG1faHlzdGVyZXNpc1NlY29uZHM7CiAgICAgYm9vbCBtX2FjdGl2ZTsKLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZGVzY3JpcHRpb247Ci0gICAgUnVuTG9vcDo6VGltZXI8
VXNlckFjdGl2aXR5PiBtX3RpbWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsKLSNl
bmRpZgorICAgIFJ1bkxvb3A6OlRpbWVyPEh5c3RlcmVzaXNBY3Rpdml0eT4gbV90aW1lcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotdXNpbmcgV2ViQ29yZTo6VXNlckFjdGl2aXR5
OwotCi0jZW5kaWYgLy8gVXNlckFjdGl2aXR5X2gKKyNlbmRpZiAvLyBIeXN0ZXJlc2lzQWN0aXZp
dHlfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3BwCShyZXZp
c2lvbiAxNjQ5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWN0aXZpdHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgIUhBVkUoTlNfQUNUSVZJVFkpCiAKLVVzZXJBY3Rpdml0eTo6VXNlckFjdGl2aXR5KGNv
bnN0IGNoYXIqKQorVXNlckFjdGl2aXR5OjpJbXBsOjpJbXBsKGNvbnN0IGNoYXIqKQogewogfQog
Ci12b2lkIFVzZXJBY3Rpdml0eTo6c3RhcnQoKQordm9pZCBVc2VyQWN0aXZpdHk6OkltcGw6OmJl
Z2luQWN0aXZpdHkoKQogewogfQogCi12b2lkIFVzZXJBY3Rpdml0eTo6c3RvcCgpCit2b2lkIFVz
ZXJBY3Rpdml0eTo6SW1wbDo6ZW5kQWN0aXZpdHkoKQogewogfQogCiAjZW5kaWYKIAorVXNlckFj
dGl2aXR5OjpVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pCisgICAgOiBIeXN0
ZXJlc2lzQWN0aXZpdHk8VXNlckFjdGl2aXR5PigqdGhpcykKKyAgICAsIG1faW1wbChkZXNjcmlw
dGlvbikKK3sKK30KKwordm9pZCBVc2VyQWN0aXZpdHk6OnN0YXJ0ZWQoKQoreworICAgIG1faW1w
bC5iZWdpbkFjdGl2aXR5KCk7Cit9CisKK3ZvaWQgVXNlckFjdGl2aXR5OjpzdG9wcGVkKCkKK3sK
KyAgICBtX2ltcGwuZW5kQWN0aXZpdHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFjdGl2aXR5LmgJKHJldmlzaW9uIDE2NDkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBY3Rpdml0eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw5ICsyNiwxMCBAQAogI2lmbmRlZiBVc2VyQWN0aXZpdHlfaAogI2RlZmluZSBV
c2VyQWN0aXZpdHlfaAogCisjaW5jbHVkZSAiSHlzdGVyZXNpc0FjdGl2aXR5LmgiCisKICNpZiBI
QVZFKE5TX0FDVElWSVRZKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogT0JKQ19DTEFTUyBOU1N0cmluZzsKICNlbmRpZgogCkBAIC0zNywyMyAr
MzgsMzEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIFVzZXJBY3Rpdml0eSB0eXBlIGlz
IHVzZWQgdG8gaW5kaWNhdGUgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gdGhhdAogLy8gYSB1c2Vy
IGluaXRpYXRlZCBvciB2aXNpYmxlIGFjdGlvbiBpcyB0YWtpbmcgcGxhY2UsIGFuZCBhcyBzdWNo
IHRoYXQKIC8vIHJlc291cmNlcyBzaG91bGQgYmUgYWxsb2NhdGVkIHRvIHRoZSBwcm9jZXNzIGFj
Y29yZGluZ2x5LgotY2xhc3MgVXNlckFjdGl2aXR5IHsKK2NsYXNzIFVzZXJBY3Rpdml0eSA6IHB1
YmxpYyBIeXN0ZXJlc2lzQWN0aXZpdHk8VXNlckFjdGl2aXR5PiB7CiBwdWJsaWM6Ci0gICAgVXNl
ckFjdGl2aXR5KGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKTsKKyAgICBjbGFzcyBJbXBsIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEltcGwoY29uc3QgY2hhciogZGVzY3JpcHRpb24p
OwogCi0gICAgdm9pZCBzdGFydCgpOwotICAgIHZvaWQgc3RvcCgpOworICAgICAgICB2b2lkIGJl
Z2luQWN0aXZpdHkoKTsKKyAgICAgICAgdm9pZCBlbmRBY3Rpdml0eSgpOwogCi1wcml2YXRlOgog
I2lmIEhBVkUoTlNfQUNUSVZJVFkpCi0gICAgdm9pZCBoeXN0ZXJlc2lzVGltZXJGaXJlZCgpOwot
ICAgIGJvb2wgaXNWYWxpZCgpOwotCi0gICAgYm9vbCBtX2FjdGl2ZTsKLSAgICBSZXRhaW5QdHI8
TlNTdHJpbmc+IG1fZGVzY3JpcHRpb247Ci0gICAgUnVuTG9vcDo6VGltZXI8VXNlckFjdGl2aXR5
PiBtX3RpbWVyOwotICAgIFJldGFpblB0cjxpZD4gbV9hY3Rpdml0eTsKKyAgICBwcml2YXRlOgor
ICAgICAgICBSZXRhaW5QdHI8aWQ+IG1fYWN0aXZpdHk7CisgICAgICAgIFJldGFpblB0cjxOU1N0
cmluZz4gbV9kZXNjcmlwdGlvbjsKICNlbmRpZgorICAgIH07CisKKyAgICBleHBsaWNpdCBVc2Vy
QWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pOworCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBIeXN0ZXJlc2lzQWN0aXZpdHk8VXNlckFjdGl2aXR5PjsKKworICAgIHZvaWQgc3Rh
cnRlZCgpOworICAgIHZvaWQgc3RvcHBlZCgpOworCisgICAgSW1wbCBtX2ltcGw7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VXNlckFjdGl2aXR5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Vc2VyQWN0aXZpdHlNYWMubW0JKHJldmlzaW9uIDE2NDkzOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Vc2VyQWN0aXZpdHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMw
LDY1ICszMCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBIQVZFKE5TX0FDVElWSVRZ
KQogCi1zdGF0aWMgY29uc3QgZG91YmxlIGtIeXN0ZXJlc2lzU2Vjb25kcyA9IDUuMDsKLQotVXNl
ckFjdGl2aXR5OjpVc2VyQWN0aXZpdHkoY29uc3QgY2hhciogZGVzY3JpcHRpb24pCi0gICAgOiBt
X2FjdGl2ZShmYWxzZSkKLSAgICAsIG1fZGVzY3JpcHRpb24oW05TU3RyaW5nIHN0cmluZ1dpdGhV
VEY4U3RyaW5nOmRlc2NyaXB0aW9uXSkKLSAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmVXNlckFjdGl2aXR5OjpoeXN0ZXJlc2lzVGltZXJGaXJlZCkKLXsKLSAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKLX0KLQotYm9vbCBVc2VyQWN0aXZpdHk6OmlzVmFsaWQoKQorVXNlckFjdGl2
aXR5OjpJbXBsOjpJbXBsKGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uKQorICAgIDogbV9kZXNjcmlw
dGlvbihbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZGVzY3JpcHRpb25dKQogewotICAg
IC8vIElmIGNvdW50IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2hvdWxkIGJlIGhvbGRpbmcgYW4gYWN0
aXZpdHksIGFuZCB0aGUgaHlzdGVyZXNpcyB0aW1lciBzaG91bGQgbm90IGJlIHJ1bm5pbmcuCi0g
ICAgLy8gRWxzZSBpZiBjb3VudCBpcyB6ZXJvIHRoZW46Ci0gICAgLy8gIChhKSBpZiB3ZSdyZSBo
b2xkaW5nIGFuIGFjdGl2aXR5IHRoZXJlIHNob3VsZCBiZSBhbiBhY3RpdmUgdGltZXIgdG8gY2xl
YXIgdGhpcywKLSAgICAvLyAgKGIpIGlmIHdlJ3JlIG5vdCBob2xkaW5nIGFuIGFjdGl2aXR5IHRo
ZXJlIHNob3VsZCBiZSBubyBhY3RpdmUgdGltZXIuCi0gICAgcmV0dXJuIG1fYWN0aXZlID8gbV9h
Y3Rpdml0eSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpIDogISFtX2FjdGl2aXR5ID09IG1fdGltZXIu
aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBVc2VyQWN0aXZpdHk6OnN0YXJ0KCkKK3ZvaWQgVXNlckFj
dGl2aXR5OjpJbXBsOjpiZWdpbkFjdGl2aXR5KCkKIHsKLSAgICBBU1NFUlQoaXNWYWxpZCgpKTsK
LQotICAgIGlmIChtX2FjdGl2ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fYWN0aXZlID0gdHJ1
ZTsKLQotICAgIGlmIChtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3RvcCgp
OwogICAgIGlmICghbV9hY3Rpdml0eSkgewogICAgICAgICBOU0FjdGl2aXR5T3B0aW9ucyBvcHRp
b25zID0gKE5TQWN0aXZpdHlVc2VySW5pdGlhdGVkQWxsb3dpbmdJZGxlU3lzdGVtU2xlZXAgfCBO
U0FjdGl2aXR5TGF0ZW5jeUNyaXRpY2FsKSAmIH4oTlNBY3Rpdml0eVN1ZGRlblRlcm1pbmF0aW9u
RGlzYWJsZWQgfCBOU0FjdGl2aXR5QXV0b21hdGljVGVybWluYXRpb25EaXNhYmxlZCk7CiAgICAg
ICAgIG1fYWN0aXZpdHkgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGJlZ2luQWN0aXZp
dHlXaXRoT3B0aW9uczpvcHRpb25zIHJlYXNvbjptX2Rlc2NyaXB0aW9uLmdldCgpXTsKICAgICB9
Ci0KLSAgICBBU1NFUlQoaXNWYWxpZCgpKTsKIH0KIAotdm9pZCBVc2VyQWN0aXZpdHk6OnN0b3Ao
KQordm9pZCBVc2VyQWN0aXZpdHk6OkltcGw6OmVuZEFjdGl2aXR5KCkKIHsKLSAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKLQotICAgIGlmICghbV9hY3RpdmUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X2FjdGl2ZSA9IGZhbHNlOwotCi0gICAgbV90aW1lci5zdGFydE9uZVNob3Qoa0h5c3RlcmVzaXNT
ZWNvbmRzKTsKLQotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotfQotCi12b2lkIFVzZXJBY3Rpdml0
eTo6aHlzdGVyZXNpc1RpbWVyRmlyZWQoKQotewotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotCiAg
ICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmRBY3Rpdml0eTptX2FjdGl2aXR5Lmdl
dCgpXTsKICAgICBtX2FjdGl2aXR5LmNsZWFyKCk7Ci0gICAgbV90aW1lci5zdG9wKCk7Ci0KLSAg
ICBBU1NFUlQoaXNWYWxpZCgpKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>