<?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>7209</bug_id>
          
          <creation_ts>2006-02-11 23:18:14 -0800</creation_ts>
          <short_desc>reimplement Timer so it uses only a single timer from the underlying OS</short_desc>
          <delta_ts>2006-02-12 18:41:32 -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>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>32205</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-11 23:18:14 -0800</bug_when>
    <thetext>Dave and Maciej asked me to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32207</commentid>
    <comment_count>1</comment_count>
      <attachid>6426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-11 23:18:44 -0800</bug_when>
    <thetext>Created attachment 6426
patch to implement the timers using a single system timer and a priority queue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32239</commentid>
    <comment_count>2</comment_count>
      <attachid>6435</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-12 09:18:09 -0800</bug_when>
    <thetext>Created attachment 6435
new patch with a few changes after last night&apos;s discussion on IRC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32266</commentid>
    <comment_count>3</comment_count>
      <attachid>6435</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-12 17:58:50 -0800</bug_when>
    <thetext>Comment on attachment 6435
new patch with a few changes after last night&apos;s discussion on IRC

looks great! r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6426</attachid>
            <date>2006-02-11 23:18:44 -0800</date>
            <delta_ts>2006-02-12 09:18:09 -0800</delta_ts>
            <desc>patch to implement the timers using a single system timer and a priority queue</desc>
            <filename>TimersPatch.txt</filename>
            <type>text/plain</type>
            <size>42948</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL21hYy9UaW1lck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
bWFjL1RpbWVyTWFjLmNwcAkocmV2aXNpb24gMTI3NjEpCisrKyBwbGF0Zm9ybS9tYWMvVGltZXJN
YWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlRpbWVyLmgiCi0KLSNpbXBvcnQgPGt4
bWxjb3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPGt4bWxjb3JlL0hhc2hTZXQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCBkZWZlcnJpbmdUaW1lcnM7Ci1zdGF0aWMg
SGFzaFNldDxUaW1lckJhc2UqPiogZGVmZXJyZWRUaW1lcnM7Ci1zdGF0aWMgQ0ZSdW5Mb29wVGlt
ZXJSZWYgZmlyZURlZmVycmVkVGltZXI7Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqIHApCi17Ci0gICAgVGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19j
YXN0PFRpbWVyQmFzZSo+KHApOwotICAgIGlmICghZGVmZXJyaW5nVGltZXJzKQotICAgICAgICB0
aW1lci0+ZmlyZSgpOwotICAgIGVsc2UgewotICAgICAgICBkZWZlcnJlZFRpbWVycyA9IG5ldyBI
YXNoU2V0PFRpbWVyQmFzZSo+OwotICAgICAgICBkZWZlcnJlZFRpbWVycy0+YWRkKHRpbWVyKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGZpcmVEZWZlcnJlZChDRlJ1bkxvb3BUaW1lclJlZiwg
dm9pZCopCi17Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKGZpcmVEZWZlcnJlZFRpbWVy
KTsKLSAgICBDRlJlbGVhc2UoZmlyZURlZmVycmVkVGltZXIpOwotICAgIGZpcmVEZWZlcnJlZFRp
bWVyID0gMDsKLQotICAgIGlmICghZGVmZXJyZWRUaW1lcnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEhhc2hTZXQ8VGltZXJCYXNlKj4gdGltZXJzID0gKmRlZmVycmVkVGltZXJzOwotICAgIEhh
c2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGVuZCA9IHRpbWVycy5lbmQoKTsKLSAgICBmb3Ig
KEhhc2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGl0ID0gdGltZXJzLmJlZ2luKCk7ICFkZWZl
cnJpbmdUaW1lcnMgJiYgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFRpbWVyQmFzZSogdGlt
ZXIgPSAqaXQ7Ci0gICAgICAgIEhhc2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGogPSBkZWZl
cnJlZFRpbWVycy0+ZmluZCh0aW1lcik7Ci0gICAgICAgIGlmIChqICE9IGRlZmVycmVkVGltZXJz
LT5lbmQoKSkgewotICAgICAgICAgICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZShqKTsKLSAgICAg
ICAgICAgIHRpbWVyLT5maXJlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRpbWVyQmFzZTo6
VGltZXJCYXNlKCkKLSAgICA6IG1fcnVuTG9vcFRpbWVyKDApCi17Ci19Ci0KLVRpbWVyQmFzZTo6
flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnQo
ZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCkKLXsKLSAgICBz
dG9wKCk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAs
IDAsIDAgfTsKLSAgICBtX3J1bkxvb3BUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIENG
QWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbCwKLSAgICAgICAgcmVw
ZWF0SW50ZXJ2YWwsIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KTsKLSAgICBDRlJ1bkxvb3BB
ZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1fcnVuTG9vcFRpbWVyLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnRSZXBlYXRpbmcoZG91Ymxl
IHJlcGVhdEludGVydmFsKQotewotICAgIEFTU0VSVChyZXBlYXRJbnRlcnZhbCA+IDApOwotICAg
IHN0YXJ0KHJlcGVhdEludGVydmFsLCByZXBlYXRJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgVGltZXJC
YXNlOjpzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKQotewotICAgIHN0YXJ0KGludGVydmFs
LCAwKTsKLX0KLQotdm9pZCBUaW1lckJhc2U6OnN0b3AoKQotewotICAgIGlmIChkZWZlcnJlZFRp
bWVycykKLSAgICAgICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZSh0aGlzKTsKLQotICAgIGlmICgh
bV9ydW5Mb29wVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUnVuTG9vcFRpbWVySW52
YWxpZGF0ZShtX3J1bkxvb3BUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKG1fcnVuTG9vcFRpbWVyKTsK
LSAgICBtX3J1bkxvb3BUaW1lciA9IDA7Ci19Ci0KLWJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcnVuTG9vcFRpbWVyOwotfQotCi1kb3VibGUgVGltZXJC
YXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVuTG9vcFRpbWVy
KQotICAgICAgICByZXR1cm4gMDsKLSAgICBkb3VibGUgbmV4dEZpcmVEYXRlID0gQ0ZSdW5Mb29w
VGltZXJHZXROZXh0RmlyZURhdGUobV9ydW5Mb29wVGltZXIpOwotICAgIGRvdWJsZSBjdXJyZW50
VGltZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwotICAgIGlmIChuZXh0RmlyZURhdGUg
PCBjdXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5leHRGaXJlRGF0
ZSAtIGN1cnJlbnRUaW1lOwotfQotCi1kb3VibGUgVGltZXJCYXNlOjpyZXBlYXRJbnRlcnZhbCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcnVuTG9vcFRpbWVyID8gQ0ZSdW5Mb29wVGltZXJHZXRJ
bnRlcnZhbChtX3J1bkxvb3BUaW1lcikgOiAwOwotfQotCi12b2lkIFRpbWVyQmFzZTo6ZmlyZSgp
Ci17Ci0gICAgQVNTRVJUKCFkZWZlcnJpbmdUaW1lcnMpOwotICAgIEFTU0VSVCghZGVmZXJyZWRU
aW1lcnMgfHwgIWRlZmVycmVkVGltZXJzLT5jb250YWlucyh0aGlzKSk7Ci0KLSAgICBpZiAobV9y
dW5Mb29wVGltZXIgJiYgKCFDRlJ1bkxvb3BUaW1lcklzVmFsaWQobV9ydW5Mb29wVGltZXIpIHx8
ICFDRlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQobV9ydW5Mb29wVGltZXIpKSkgewotICAgICAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBDRlJlbGVh
c2UobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBtX3J1bkxvb3BUaW1lciA9IDA7Ci0gICAgfQot
Ci0gICAgLy8gTm90ZTogVGhpcyBjYWxsIG1heSBkZXN0cm95IHRoZSB0aW1lciBvYmplY3QsIHNv
IGJlIHN1cmUgbm90IHRvIHRvdWNoIGFueSBmaWVsZHMgYWZ0ZXJ3YXJkLgotICAgIGZpcmVkKCk7
Ci19Ci0KLWJvb2wgaXNEZWZlcnJpbmdUaW1lcnMoKQotewotICAgIHJldHVybiBkZWZlcnJpbmdU
aW1lcnM7Ci19Ci0KLXZvaWQgc2V0RGVmZXJyaW5nVGltZXJzKGJvb2wgc2hvdWxkRGVmZXIpCi17
Ci0gICAgaWYgKHNob3VsZERlZmVyID09IGRlZmVycmluZ1RpbWVycykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHNob3VsZERlZmVyKSB7Ci0gICAgICAgIGRlZmVycmluZ1RpbWVycyA9IHRy
dWU7Ci0gICAgICAgIGlmIChmaXJlRGVmZXJyZWRUaW1lcikgewotICAgICAgICAgICAgQ0ZSdW5M
b29wVGltZXJJbnZhbGlkYXRlKGZpcmVEZWZlcnJlZFRpbWVyKTsKLSAgICAgICAgICAgIENGUmVs
ZWFzZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgICAgICBmaXJlRGVmZXJyZWRUaW1lciA9
IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBkZWZlcnJpbmdUaW1lcnMgPSBm
YWxzZTsKLSAgICAgICAgQVNTRVJUKCFmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgIGZpcmVE
ZWZlcnJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRD
dXJyZW50KCksIDAsIDAsIDAsIGZpcmVEZWZlcnJlZCwgMCk7Ci0gICAgICAgIENGUnVuTG9vcEFk
ZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgZmlyZURlZmVycmVkVGltZXIsIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgfQotfQotCi19CkluZGV4OiBwbGF0Zm9ybS9tYWMvU2hhcmVk
VGltZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5j
cHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVk
VGltZXI7CitzdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKKwordm9p
ZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCit7CisgICAgc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKK30KKworc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1
bkxvb3BUaW1lclJlZiwgdm9pZCopCit7CisgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7
Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUgZmlyZVRpbWUpCit7Cisg
ICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisgICAgQ0ZBYnNvbHV0ZVRpbWUg
ZmlyZURhdGUgPSBmaXJlVGltZSAtIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwOwor
ICAgIGlmIChzaGFyZWRUaW1lcikKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURh
dGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2hhcmVkVGlt
ZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBmaXJlRGF0ZSwgSFVHRV9WQUwsIDAsIDAsIHRp
bWVyRmlyZWQsIDApOworICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIH0KK30KKwor
dm9pZCBzdG9wU2hhcmVkVGltZXIoKQoreworICAgIGlmIChzaGFyZWRUaW1lcikKKyAgICAgICAg
Q0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIEhVR0VfVkFMKTsKK30K
KworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFjLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBwbGF0
Zm9ybS9UaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9uIDEy
NzYxKQorKysgcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDAgKzI2LDQ1
IEBACiAjaWZuZGVmIFRJTUVSX0gKICNkZWZpbmUgVElNRVJfSAogCisjaW5jbHVkZSA8a3htbGNv
cmUvTm9uY29weWFibGUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgLy8gVGltZSBp
bnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRzLgogCi0gICAgY2xhc3MgVGltZXJCYXNlIHsKKyAg
ICBjbGFzcyBUaW1lckhlYXBFbGVtZW50OworCisgICAgY2xhc3MgVGltZXJCYXNlIDogTm9uY29w
eWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGltZXJCYXNlKCk7CiAgICAgICAgIHZpcnR1
YWwgflRpbWVyQmFzZSgpOwogCiAgICAgICAgIHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50
ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCk7CiAKLSAgICAgICAgdm9pZCBzdGFydFJlcGVh
dGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwpOwotICAgICAgICB2b2lkIHN0YXJ0T25lU2hvdChk
b3VibGUgaW50ZXJ2YWwpOworICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBl
YXRJbnRlcnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9Cisg
ICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KGRvdWJsZSBpbnRlcnZhbCkgeyBzdGFydChpbnRlcnZh
bCwgMCk7IH0KIAogICAgICAgICB2b2lkIHN0b3AoKTsKLSAgICAgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0OworICAgICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0Rmly
ZVRpbWU7IH0KIAogICAgICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0OwotICAg
ICAgICBkb3VibGUgcmVwZWF0SW50ZXJ2YWwoKSBjb25zdDsKKyAgICAgICAgZG91YmxlIHJlcGVh
dEludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0gICAgICAg
IHZvaWQgZmlyZSgpOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVk
KCkgPSAwOwogCi0gICAgICAgIFRpbWVyQmFzZShjb25zdCBUaW1lckJhc2UmKTsKLSAgICAgICAg
VGltZXJCYXNlJiBvcGVyYXRvcj0oY29uc3QgVGltZXJCYXNlJik7CisgICAgICAgIHZvaWQgc2V0
TmV4dEZpcmVUaW1lKGRvdWJsZSk7CiAKLSNpZiBfX0FQUExFX18KLSAgICAgICAgQ0ZSdW5Mb29w
VGltZXJSZWYgbV9ydW5Mb29wVGltZXI7Ci0jZWxzZSAjaWYgV0lOMzIKLSAgICAgICAgaW50IG1f
dGltZXJJRDsKLSAgICAgICAgYm9vbCBtX2FjdGl2ZTsKLSNlbmRpZgorICAgICAgICBzdGF0aWMg
dm9pZCBzaGFyZWRUaW1lckZpcmVkKCk7CisKKyAgICAgICAgZG91YmxlIG1fbmV4dEZpcmVUaW1l
OyAvLyAwIGlmIGluYWN0aXZlCisgICAgICAgIGRvdWJsZSBtX3JlcGVhdEludGVydmFsOyAvLyAw
IGlmIG5vdCByZXBlYXRpbmcKKyAgICAgICAgaW50IG1faGVhcEluZGV4OyAvLyAtMSBpZiBub3Qg
aW4gaGVhcAorCisgICAgICAgIGZyaWVuZCB2b2lkIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CisgICAg
ICAgIGZyaWVuZCB2b2lkIHNldERlZmVycmluZ1RpbWVycyhib29sKTsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIFRpbWVySGVhcEVsZW1lbnQ7CisgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPChj
b25zdCBUaW1lckhlYXBFbGVtZW50JiwgY29uc3QgVGltZXJIZWFwRWxlbWVudCYpOwogICAgIH07
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGltZXJGaXJlZENsYXNzPiBjbGFzcyBUaW1lciA6
IHB1YmxpYyBUaW1lckJhc2UgewpJbmRleDogcGxhdGZvcm0vd2luL1RpbWVyV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS93aW4vVGltZXJXaW4uY3BwCShyZXZpc2lvbiAxMjc2MSkKKysr
IHBsYXRmb3JtL3dpbi9UaW1lcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJU
aW1lci5oIgotI2luY2x1ZGUgPGt4bWxjb3JlL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3aW5kb3dz
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIEhhc2hNYXA8aW50LCBUaW1lckJh
c2UqPiogcnVubmluZ1RpbWVycyA9IDA7Ci0KLXN0YXRpYyB2b2lkIENBTExCQUNLIHRpbWVyRmly
ZWQoSFdORCBod25kLA0KLSAgICAgICAgICAgICAgICAgICAgICAgVUlOVCB1TXNnLA0KLSAgICAg
ICAgICAgICAgICAgICAgICAgVUlOVF9QVFIgaWRFdmVudCwNCi0gICAgICAgICAgICAgICAgICAg
ICAgIERXT1JEIGR3VGltZSkKLXsKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gcnVubmluZ1RpbWVy
cy0+Z2V0KGlkRXZlbnQpOwotICAgIC8vIEZJWE1FOiBXZSBjYW4ndCBoYW5kbGUgcmVwZWF0aW5n
IHlldC4KLSAgICB0aW1lci0+c3RvcCgpOwotCi0gICAgdGltZXItPmZpcmUoKTsKLX0KLQotVGlt
ZXJCYXNlOjpUaW1lckJhc2UoKQotewotICAgIG1fdGltZXJJRCA9IDA7Ci0gICAgbV9hY3RpdmUg
PSBmYWxzZTsKLX0KLQotVGltZXJCYXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19
Ci0KLXZvaWQgVGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91Ymxl
IHJlcGVhdEludGVydmFsKQotewotICAgIHN0b3AoKTsKLQotICAgIC8vIFN0YXJ0IHVwIHRoZSB0
aW1lci4KLSAgICBtX3RpbWVySUQgPSBTZXRUaW1lcigwLCAwLCBuZXh0RmlyZUludGVydmFsICog
MTAwMCwgdGltZXJGaXJlZCk7Ci0KLSAgICBpZiAoIXJ1bm5pbmdUaW1lcnMpCi0gICAgICAgIHJ1
bm5pbmdUaW1lcnMgPSBuZXcgSGFzaE1hcDxpbnQsIFRpbWVyQmFzZSo+OwotCi0gICAgcnVubmlu
Z1RpbWVycy0+c2V0KG1fdGltZXJJRCwgdGhpcyk7Ci0KLSAgICBtX2FjdGl2ZSA9IHRydWU7Ci19
Ci0KLXZvaWQgVGltZXJCYXNlOjpzdGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwp
Ci17Ci0gICAgYXNzZXJ0KHJlcGVhdEludGVydmFsID4gMCk7Ci0gICAgc3RhcnQocmVwZWF0SW50
ZXJ2YWwsIHJlcGVhdEludGVydmFsKTsKLX0KLQotdm9pZCBUaW1lckJhc2U6OnN0YXJ0T25lU2hv
dChkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgc3RhcnQoaW50ZXJ2YWwsIDApOwotfQotCi12b2lk
IFRpbWVyQmFzZTo6c3RvcCgpCi17Ci0vLyAgICBpZiAoZGVmZXJyZWRUaW1lcnMpCi0vLyAgICAg
ICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZSh0aGlzKTsKLQotICAgIGlmICghbV9hY3RpdmUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIE5vdyBzdG9wIGl0LgotICAgIEtpbGxUaW1lcigwLCBt
X3RpbWVySUQpOwotCi0gICAgLy8gUmVtb3ZlIG91cnNlbHZlcyBmcm9tIHRoZSBoYXNoCi0gICAg
cnVubmluZ1RpbWVycy0+cmVtb3ZlKG1fdGltZXJJRCk7Ci0KLSAgICBtX2FjdGl2ZSA9IGZhbHNl
OwotfQotCi1ib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBt
X2FjdGl2ZTsKLX0KLQotZG91YmxlIFRpbWVyQmFzZTo6bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0
Ci17LyoKLSAgICBpZiAoIW1fcnVuTG9vcFRpbWVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBk
b3VibGUgbmV4dEZpcmVEYXRlID0gQ0ZSdW5Mb29wVGltZXJHZXROZXh0RmlyZURhdGUobV9ydW5M
b29wVGltZXIpOwotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpOwotICAgIGlmIChuZXh0RmlyZURhdGUgPCBjdXJyZW50VGltZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIG5leHRGaXJlRGF0ZSAtIGN1cnJlbnRUaW1lOwotICAgICovCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLWRvdWJsZSBUaW1lckJhc2U6OnJlcGVhdEludGVydmFsKCkgY29u
c3QKLXsKLSAgICAvKgotICAgIHJldHVybiBtX3J1bkxvb3BUaW1lciA/IENGUnVuTG9vcFRpbWVy
R2V0SW50ZXJ2YWwobV9ydW5Mb29wVGltZXIpIDogMDsKLSAgICAqLwotICAgIHJldHVybiAwOwot
fQotCi12b2lkIFRpbWVyQmFzZTo6ZmlyZSgpCi17Ci0gICAgLyoKLSAgICBBU1NFUlQoIWRlZmVy
cmluZ1RpbWVycyk7Ci0gICAgQVNTRVJUKCFkZWZlcnJlZFRpbWVycyB8fCAhZGVmZXJyZWRUaW1l
cnMtPmNvbnRhaW5zKHRoaXMpKTsKLQotICAgIGlmIChtX3J1bkxvb3BUaW1lciAmJiAoIUNGUnVu
TG9vcFRpbWVySXNWYWxpZChtX3J1bkxvb3BUaW1lcikgfHwgIUNGUnVuTG9vcFRpbWVyRG9lc1Jl
cGVhdChtX3J1bkxvb3BUaW1lcikpKSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0
ZShtX3J1bkxvb3BUaW1lcik7Ci0gICAgICAgIENGUmVsZWFzZShtX3J1bkxvb3BUaW1lcik7Ci0g
ICAgICAgIG1fcnVuTG9vcFRpbWVyID0gMDsKLSAgICB9Ci0qLwotCi0gICAgLy8gTm90ZTogVGhp
cyBjYWxsIG1heSBkZXN0cm95IHRoZSB0aW1lciBvYmplY3QsIHNvIGJlIHN1cmUgbm90IHRvIHRv
dWNoIGFueSBmaWVsZHMgYWZ0ZXJ3YXJkLgotICAgIGZpcmVkKCk7Ci19Ci0KLWJvb2wgaXNEZWZl
cnJpbmdUaW1lcnMoKQotewotICAgIHJldHVybiBmYWxzZTsKLSAgICAvL3JldHVybiBkZWZlcnJp
bmdUaW1lcnM7Ci19Ci0KLXZvaWQgc2V0RGVmZXJyaW5nVGltZXJzKGJvb2wgc2hvdWxkRGVmZXIp
Ci17Ci0gICAvKiBpZiAoc2hvdWxkRGVmZXIgPT0gZGVmZXJyaW5nVGltZXJzKQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKHNob3VsZERlZmVyKSB7Ci0gICAgICAgIGRlZmVycmluZ1RpbWVycyA9
IHRydWU7Ci0gICAgICAgIGlmIChmaXJlRGVmZXJyZWRUaW1lcikgewotICAgICAgICAgICAgQ0ZS
dW5Mb29wVGltZXJJbnZhbGlkYXRlKGZpcmVEZWZlcnJlZFRpbWVyKTsKLSAgICAgICAgICAgIENG
UmVsZWFzZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgICAgICBmaXJlRGVmZXJyZWRUaW1l
ciA9IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBkZWZlcnJpbmdUaW1lcnMg
PSBmYWxzZTsKLSAgICAgICAgQVNTRVJUKCFmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgIGZp
cmVEZWZlcnJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCksIDAsIDAsIDAsIGZpcmVEZWZlcnJlZCwgMCk7Ci0gICAgICAgIENGUnVuTG9v
cEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgZmlyZURlZmVycmVkVGltZXIsIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZSk7Ci0gICAgfQotICAgICovCi19Ci0KLX0KSW5kZXg6IHBsYXRmb3Jt
L3dpbi9TaGFyZWRUaW1lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd2luL1NoYXJl
ZFRpbWVyV2luLmNwcAkocmV2aXNpb24gMCkKKysrIHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldp
bi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2hhcmVkVGltZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgVUlOVCB0aW1lcklEOworc3RhdGljIHZvaWQgKCpzaGFyZWRU
aW1lckZpcmVkRnVuY3Rpb24pKCk7CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
KHZvaWQgKCpmKSgpKQoreworICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Cit9CisK
K3N0YXRpYyBDQUxMQkFDSyB0aW1lckZpcmVkKEhXTkQsIFVJTlQsIFVJTlRfUFRSLCBEV09SRCkK
K3sKKyAgICBzaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKK30KKwordm9pZCBzZXRTaGFyZWRU
aW1lckZpcmVUaW1lKGRvdWJsZSBmaXJlVGltZSkKK3sKKyAgICBBU1NFUlQoc2hhcmVkVGltZXJG
aXJlZEZ1bmN0aW9uKTsKKworICAgIGRvdWJsZSBpbnRlcnZhbCA9IGZpcmVUaW1lIC0gY3VycmVu
dFRpbWUoKTsKKyAgICB1bnNpZ25lZCBpbnRlcnZhbEluTVM7CisgICAgaWYgKGludGVydmFsIDwg
MCkKKyAgICAgICAgaW50ZXJ2YWxJbk1TID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW50ZXJ2
YWwgKj0gMTAwMDsKKyAgICAgICAgaWYgKGludGVydmFsID4gVVNFUl9USU1FUl9NQVhJTVVNKQor
ICAgICAgICAgICAgaW50ZXJ2YWxJbk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBpbnRlcnZhbEluTVMgPSAodW5zaWduZWQpaW50ZXJ2YWw7CisgICAg
fQorCisgICAgaWYgKHRpbWVySUQpCisgICAgICAgIEtpbGxUaW1lcih0aW1lcklEKTsKKyAgICB0
aW1lcklEID0gU2V0VGltZXIoMCwgMCwgaW50ZXJ2YWxJbk1TLCB0aW1lckZpcmVkKTsKK30KKwor
dm9pZCBzdG9wU2hhcmVkVGltZXIoKQoreworICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgIEtp
bGxUaW1lcih0aW1lcklEKTsKKyAgICAgICAgdGltZXJJRCA9IDA7CisgICAgfQorfQorCit9CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBwbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IHBsYXRmb3JtL1No
YXJlZFRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vU2hhcmVkVGltZXIuaAkocmV2aXNp
b24gMCkKKysrIHBsYXRmb3JtL1NoYXJlZFRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgU2hhcmVkVGltZXJfaAorI2RlZmlu
ZSBTaGFyZWRUaW1lcl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIC8vIFNpbmdsZSB0
aW1lciwgc2hhcmVkIHRvIGltcGxlbWVudCBhbGwgdGhlIHRpbWVycyBtYW5hZ2VkIGJ5IHRoZSBU
aW1lciBjbGFzcy4KKyAgICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsgdXNl
IHRoZSBUaW1lciBjbGFzcyBpbnN0ZWFkLgorCisgICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVk
RnVuY3Rpb24odm9pZCAoKikoKSk7CisKKyAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZl
IHRvIHRoZSBjbGFzc2ljIFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKKyAgICAvLyBh
cyB0aGUgcmVzdWx0IG9mIGN1cnJlbnRUaW1lKCkgaXMuCisKKyAgICB2b2lkIHNldFNoYXJlZFRp
bWVyRmlyZVRpbWUoZG91YmxlIGZpcmVUaW1lKTsKKyAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigp
OworCit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0vU2hhcmVkVGlt
ZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBw
bGF0Zm9ybS9UaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vVGltZXIuY3BwCShyZXZp
c2lvbiAxMjc2MSkKKysrIHBsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTI5ICsyMywzMTYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiVGltZXIuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaW1l
ci5oIgogCi0jaW1wb3J0IDxreG1sY29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxreG1sY29y
ZS9IYXNoU2V0Lmg+CisjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlICJTeXN0ZW1U
aW1lLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDxreG1sY29yZS9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8a3htbGNvcmUv
VmVjdG9yLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorLy8gVGltZXJzIGFyZSBzdG9yZWQgaW4gYSBoZWFwIGRhdGEgc3RydWN0dXJlLCB1c2VkIHRv
IGltcGxlbWVudCBhIHByaW9yaXR5IHF1ZXVlLgorLy8gVGhpcyBhbGxvd3MgdXMgdG8gZWZmaWNp
ZW50bHkgZGV0ZXJtaW5lIHdoaWNoIHRpbWVyIG5lZWRzIHRvIGZpcmUgdGhlIHNvb25lc3QuCisv
LyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVyIHRvIGZpcmUgYXQgdGhh
dCB0aW1lLgorLy8KKy8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUgdGltZSIgY2hhbmdlcywg
d2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkgcXVldWUuCisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0KKwogc3RhdGljIGJvb2wgZGVmZXJyaW5nVGltZXJzOwotc3RhdGljIEhh
c2hTZXQ8VGltZXJCYXNlKj4qIGRlZmVycmVkVGltZXJzOwotc3RhdGljIENGUnVuTG9vcFRpbWVy
UmVmIGZpcmVEZWZlcnJlZFRpbWVyOworc3RhdGljIFZlY3RvcjxUaW1lckJhc2UqPiogdGltZXJI
ZWFwOworc3RhdGljIEhhc2hTZXQ8VGltZXJCYXNlKj4qIHRpbWVyc1JlYWR5VG9GaXJlOwogCi1z
dGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBwKQotewotICAg
IFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihwKTsKLSAgICBpZiAo
IWRlZmVycmluZ1RpbWVycykKLSAgICAgICAgdGltZXItPmZpcmUoKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgZGVmZXJyZWRUaW1lcnMgPSBuZXcgSGFzaFNldDxUaW1lckJhc2UqPjsKLSAgICAgICAg
ZGVmZXJyZWRUaW1lcnMtPmFkZCh0aW1lcik7CisvLyAtLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNz
IFRpbWVySGVhcEVsZW1lbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IFRpbWVySGVhcEVsZW1l
bnQoaW50IGkpIDogbV9pbmRleChpKSwgbV90aW1lcigoKnRpbWVySGVhcClbbV9pbmRleF0pIHsg
Y2hlY2soKTsgfQorCisgICAgVGltZXJIZWFwRWxlbWVudChjb25zdCBUaW1lckhlYXBFbGVtZW50
Jik7CisgICAgVGltZXJIZWFwRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFRpbWVySGVhcEVsZW1l
bnQmKTsKKworICAgIFRpbWVyQmFzZSogdGltZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbWVyOyB9
CisKKyAgICB2b2lkIGNoZWNrKCkgY29uc3QgeworICAgICAgICBBU1NFUlQobV9pbmRleCA+PSAw
KTsKKyAgICAgICAgQVNTRVJUKG1faW5kZXggPCAodGltZXJIZWFwID8gc3RhdGljX2Nhc3Q8aW50
Pih0aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CiAgICAgfQotfQogCi1zdGF0aWMgdm9pZCBmaXJl
RGVmZXJyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQotewotICAgIENGUnVuTG9vcFRpbWVy
SW52YWxpZGF0ZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKGZpcmVEZWZlcnJl
ZFRpbWVyKTsKLSAgICBmaXJlRGVmZXJyZWRUaW1lciA9IDA7Citwcml2YXRlOgorICAgIFRpbWVy
SGVhcEVsZW1lbnQoKTsKIAotICAgIGlmICghZGVmZXJyZWRUaW1lcnMpCi0gICAgICAgIHJldHVy
bjsKKyAgICBpbnQgbV9pbmRleDsKKyAgICBUaW1lckJhc2UqIG1fdGltZXI7Cit9OwogCi0gICAg
SGFzaFNldDxUaW1lckJhc2UqPiB0aW1lcnMgPSAqZGVmZXJyZWRUaW1lcnM7Ci0gICAgSGFzaFNl
dDxUaW1lckJhc2UqPjo6aXRlcmF0b3IgZW5kID0gdGltZXJzLmVuZCgpOwotICAgIGZvciAoSGFz
aFNldDxUaW1lckJhc2UqPjo6aXRlcmF0b3IgaXQgPSB0aW1lcnMuYmVnaW4oKTsgIWRlZmVycmlu
Z1RpbWVycyAmJiBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgVGltZXJCYXNlKiB0aW1lciA9
ICppdDsKLSAgICAgICAgSGFzaFNldDxUaW1lckJhc2UqPjo6aXRlcmF0b3IgaiA9IGRlZmVycmVk
VGltZXJzLT5maW5kKHRpbWVyKTsKLSAgICAgICAgaWYgKGogIT0gZGVmZXJyZWRUaW1lcnMtPmVu
ZCgpKSB7Ci0gICAgICAgICAgICBkZWZlcnJlZFRpbWVycy0+cmVtb3ZlKGopOwotICAgICAgICAg
ICAgdGltZXItPmZpcmUoKTsKLSAgICAgICAgfQorY2xhc3MgVGltZXJIZWFwSXRlcmF0b3IgOiBw
dWJsaWMgaXRlcmF0b3I8cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIFRpbWVySGVhcEVsZW1l
bnQsIGludD4geworcHVibGljOgorICAgIFRpbWVySGVhcEl0ZXJhdG9yKCkgOiBtX2luZGV4KC0x
KSB7IH0KKyAgICBUaW1lckhlYXBJdGVyYXRvcihpbnQgaSkgOiBtX2luZGV4KGkpIHsgY2hlY2so
KTsgfQorCisgICAgVGltZXJIZWFwSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IGNoZWNrKCk7ICsr
bV9pbmRleDsgY2hlY2soKTsgcmV0dXJuICp0aGlzOyB9CisgICAgVGltZXJIZWFwSXRlcmF0b3Ig
b3BlcmF0b3IrKyhpbnQpIHsgY2hlY2soKTsgY2hlY2soMSk7IHJldHVybiBtX2luZGV4Kys7IH0K
KworICAgIFRpbWVySGVhcEl0ZXJhdG9yJiBvcGVyYXRvci0tKCkgeyBjaGVjaygpOyAtLW1faW5k
ZXg7IGNoZWNrKCk7IHJldHVybiAqdGhpczsgfQorICAgIFRpbWVySGVhcEl0ZXJhdG9yIG9wZXJh
dG9yLS0oaW50KSB7IGNoZWNrKCk7IGNoZWNrKC0xKTsgcmV0dXJuIG1faW5kZXgtLTsgfQorCisg
ICAgVGltZXJIZWFwSXRlcmF0b3ImIG9wZXJhdG9yKz0oaW50IGkpIHsgY2hlY2soKTsgbV9pbmRl
eCArPSBpOyBjaGVjaygpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBUaW1lckhlYXBJdGVyYXRvciYg
b3BlcmF0b3ItPShpbnQgaSkgeyBjaGVjaygpOyBtX2luZGV4IC09IGk7IGNoZWNrKCk7IHJldHVy
biAqdGhpczsgfQorCisgICAgVGltZXJIZWFwRWxlbWVudCBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiBUaW1lckhlYXBFbGVtZW50KG1faW5kZXgpOyB9CisgICAgVGltZXJIZWFwRWxlbWVudCBv
cGVyYXRvcltdKGludCBpKSBjb25zdCB7IHJldHVybiBUaW1lckhlYXBFbGVtZW50KG1faW5kZXgg
KyBpKTsgfQorCisgICAgaW50IGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisg
ICAgdm9pZCBjaGVjayhpbnQgb2Zmc2V0ID0gMCkgY29uc3QgeworICAgICAgICBBU1NFUlQobV9p
bmRleCArIG9mZnNldCA+PSAwKTsKKyAgICAgICAgQVNTRVJUKG1faW5kZXggKyBvZmZzZXQgPD0g
KHRpbWVySGVhcCA/IHN0YXRpY19jYXN0PGludD4odGltZXJIZWFwLT5zaXplKCkpIDogMCkpOwog
ICAgIH0KLX0KIAotVGltZXJCYXNlOjpUaW1lckJhc2UoKQotICAgIDogbV9ydW5Mb29wVGltZXIo
MCkKK3ByaXZhdGU6CisgICAgaW50IG1faW5kZXg7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0t
CisKK2lubGluZSBib29sIG9wZXJhdG9yPChUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJ
dGVyYXRvciBiKSB7IHJldHVybiBhLmluZGV4KCkgPCBiLmluZGV4KCk7IH0KKworaW5saW5lIFRp
bWVySGVhcEl0ZXJhdG9yIG9wZXJhdG9yKyhUaW1lckhlYXBJdGVyYXRvciBhLCBpbnQgYikgeyBy
ZXR1cm4gYS5pbmRleCgpICsgYjsgfQoraW5saW5lIFRpbWVySGVhcEl0ZXJhdG9yIG9wZXJhdG9y
KyhpbnQgYSwgVGltZXJIZWFwSXRlcmF0b3IgYikgeyByZXR1cm4gYSArIGIuaW5kZXgoKTsgfQor
CitpbmxpbmUgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yIGEs
IGludCBiKSB7IHJldHVybiBhLmluZGV4KCkgLSBiOyB9CitpbmxpbmUgaW50IG9wZXJhdG9yLShU
aW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhLmluZGV4
KCkgLSBiLmluZGV4KCk7IH0KKworLy8gLS0tLS0tLS0tLS0tLS0tLQorCitpbmxpbmUgVGltZXJI
ZWFwRWxlbWVudDo6VGltZXJIZWFwRWxlbWVudChjb25zdCBUaW1lckhlYXBFbGVtZW50JiBvKQor
ICAgIDogbV9pbmRleCgtMSksIG1fdGltZXIoby50aW1lcigpKQogewogfQogCi1UaW1lckJhc2U6
On5UaW1lckJhc2UoKQoraW5saW5lIFRpbWVySGVhcEVsZW1lbnQmIFRpbWVySGVhcEVsZW1lbnQ6
Om9wZXJhdG9yPShjb25zdCBUaW1lckhlYXBFbGVtZW50JiBvKQogewotICAgIHN0b3AoKTsKKyAg
ICBUaW1lckJhc2UqIHQgPSBvLnRpbWVyKCk7CisgICAgbV90aW1lciA9IHQ7CisgICAgaWYgKG1f
aW5kZXggIT0gLTEpIHsKKyAgICAgICAgY2hlY2soKTsKKyAgICAgICAgKCp0aW1lckhlYXApW21f
aW5kZXhdID0gdDsKKyAgICAgICAgdC0+bV9oZWFwSW5kZXggPSBtX2luZGV4OworICAgIH0KKyAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZp
cmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmIGEsIGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmIGIpCiB7
Ci0gICAgc3RvcCgpOwotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCB0
aGlzLCAwLCAwLCAwIH07Ci0gICAgbV9ydW5Mb29wVGltZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0
ZSgwLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwsCi0gICAg
ICAgIHJlcGVhdEludGVydmFsLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCk7Ci0gICAgQ0ZS
dW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBtX3J1bkxvb3BUaW1lciwga0NG
UnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICAvLyBOb3RlLCB0aGlzIGlzICJiYWNrd2FyZHMiIGJl
Y2F1c2UgdGhlIGhlYXAgcHV0cyB0aGUgbGFyZ2VzdCBlbGVtZW50IGZpcnN0CisgICAgLy8gYW5k
IHdlIHdhbnQgdGhlIGxvd2VzdCB0aW1lIHRvIGJlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGhlYXAu
CisgICAgcmV0dXJuIGIudGltZXIoKS0+bV9uZXh0RmlyZVRpbWUgPCBhLnRpbWVyKCktPm1fbmV4
dEZpcmVUaW1lOwogfQogCi12b2lkIFRpbWVyQmFzZTo6c3RhcnRSZXBlYXRpbmcoZG91YmxlIHJl
cGVhdEludGVydmFsKQorLy8gLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkIHVwZGF0ZVNoYXJlZFRp
bWVyKCkKIHsKLSAgICBBU1NFUlQocmVwZWF0SW50ZXJ2YWwgPiAwKTsKLSAgICBzdGFydChyZXBl
YXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOworICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSB8
fCBkZWZlcnJpbmdUaW1lcnMgfHwgIXRpbWVySGVhcCB8fCB0aW1lckhlYXAtPmlzRW1wdHkoKSkK
KyAgICAgICAgc3RvcFNoYXJlZFRpbWVyKCk7CisgICAgZWxzZQorICAgICAgICBzZXRTaGFyZWRU
aW1lckZpcmVUaW1lKHRpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOwogfQogCi12
b2lkIFRpbWVyQmFzZTo6c3RhcnRPbmVTaG90KGRvdWJsZSBpbnRlcnZhbCkKKy8vIC0tLS0tLS0t
LS0tLS0tLS0KKworVGltZXJCYXNlOjpUaW1lckJhc2UoKQorICAgIDogbV9uZXh0RmlyZVRpbWUo
MCksIG1fcmVwZWF0SW50ZXJ2YWwoMCksIG1faGVhcEluZGV4KC0xKQogewotICAgIHN0YXJ0KGlu
dGVydmFsLCAwKTsKKyAgICAvLyBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyBvbmNlLCBidXQgcHJv
YmFibHkgbm90IHdvcnRoIHRyeWluZyB0byBvcHRpbWl6ZSBpdC4KKyAgICBzZXRTaGFyZWRUaW1l
ckZpcmVkRnVuY3Rpb24oc2hhcmVkVGltZXJGaXJlZCk7CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpz
dG9wKCkKK1RpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiB7Ci0gICAgaWYgKGRlZmVycmVkVGltZXJz
KQotICAgICAgICBkZWZlcnJlZFRpbWVycy0+cmVtb3ZlKHRoaXMpOworICAgIHN0b3AoKTsKIAot
ICAgIGlmICghbV9ydW5Mb29wVGltZXIpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9o
ZWFwSW5kZXggPT0gLTEpOworfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fcnVu
TG9vcFRpbWVyKTsKLSAgICBDRlJlbGVhc2UobV9ydW5Mb29wVGltZXIpOwotICAgIG1fcnVuTG9v
cFRpbWVyID0gMDsKK3ZvaWQgVGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZpcmVJbnRlcnZh
bCwgZG91YmxlIHJlcGVhdEludGVydmFsKQoreworICAgIG1fcmVwZWF0SW50ZXJ2YWwgPSByZXBl
YXRJbnRlcnZhbDsKKyAgICBzZXROZXh0RmlyZVRpbWUoY3VycmVudFRpbWUoKSArIG5leHRGaXJl
SW50ZXJ2YWwpOwogfQogCi1ib29sIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAordm9pZCBU
aW1lckJhc2U6OnN0b3AoKQogewotICAgIHJldHVybiBtX3J1bkxvb3BUaW1lcjsKKyAgICBtX3Jl
cGVhdEludGVydmFsID0gMDsKKyAgICBpZiAobV9uZXh0RmlyZVRpbWUpCisgICAgICAgIHNldE5l
eHRGaXJlVGltZSgwKTsKKworICAgIEFTU0VSVChtX25leHRGaXJlVGltZSA9PSAwKTsKKyAgICBB
U1NFUlQobV9yZXBlYXRJbnRlcnZhbCA9PSAwKTsKKyAgICBBU1NFUlQobV9oZWFwSW5kZXggPT0g
LTEpOwogfQogCiBkb3VibGUgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKIHsK
LSAgICBpZiAoIW1fcnVuTG9vcFRpbWVyKQorICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKKyAgICBk
b3VibGUgY3VycmVudCA9IGN1cnJlbnRUaW1lKCk7CisgICAgaWYgKG1fbmV4dEZpcmVUaW1lIDwg
Y3VycmVudCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZG91YmxlIG5leHRGaXJlRGF0ZSA9IENG
UnVuTG9vcFRpbWVyR2V0TmV4dEZpcmVEYXRlKG1fcnVuTG9vcFRpbWVyKTsKLSAgICBkb3VibGUg
Y3VycmVudFRpbWUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKLSAgICBpZiAobmV4dEZp
cmVEYXRlIDwgY3VycmVudFRpbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXh0
RmlyZURhdGUgLSBjdXJyZW50VGltZTsKKyAgICByZXR1cm4gbV9uZXh0RmlyZVRpbWUgLSBjdXJy
ZW50OwogfQogCi1kb3VibGUgVGltZXJCYXNlOjpyZXBlYXRJbnRlcnZhbCgpIGNvbnN0Cit2b2lk
IFRpbWVyQmFzZTo6c2V0TmV4dEZpcmVUaW1lKGRvdWJsZSBuZXdUaW1lKQogewotICAgIHJldHVy
biBtX3J1bkxvb3BUaW1lciA/IENGUnVuTG9vcFRpbWVyR2V0SW50ZXJ2YWwobV9ydW5Mb29wVGlt
ZXIpIDogMDsKKyAgICAvLyBLZWVwIGhlYXAgdmFsaWQgd2hpbGUgY2hhbmdpbmcgdGhlIG5leHQt
ZmlyZSB0aW1lLgorCisgICAgLy8gQWN0aXZlIHRpbWVycyBtdXN0IGJlIGluIHRoZSBoZWFwIG9y
IHRoZSAicmVhZHkgdG8gZmlyZSBzZXQiLgorICAgIC8vIEJ1dCB0aW1lcnMgdGhhdCBkbyBoYXZl
IGEgbmV4dC1maXJlIHRpbWUgbXVzdCBiZSBpbiBlaXRoZXIgb25lIG9yIHRoZSBvdGhlci4KKyAg
ICBBU1NFUlQoaXNBY3RpdmUoKSA9PSAobV9oZWFwSW5kZXggIT0gLTEgfHwgKHRpbWVyc1JlYWR5
VG9GaXJlICYmIHRpbWVyc1JlYWR5VG9GaXJlLT5jb250YWlucyh0aGlzKSkpKTsKKworICAgIGlm
ICh0aW1lcnNSZWFkeVRvRmlyZSkKKyAgICAgICAgdGltZXJzUmVhZHlUb0ZpcmUtPnJlbW92ZSh0
aGlzKTsKKworICAgIGRvdWJsZSBvbGRUaW1lID0gbV9uZXh0RmlyZVRpbWU7CisgICAgbV9uZXh0
RmlyZVRpbWUgPSBuZXdUaW1lOworCisgICAgLy8gSWYgdGltZXIgd2FzIG5vdCBhcmVhZHkgaW4g
dGhlIHByaW9yaXR5IHF1ZXVlLCBkbyBhbiBpbnNlcnQuCisgICAgLy8gSWYgbmV4dC1maXJlIHRp
bWUgaXMgYmVjb21pbmcgMCwgZG8gYSBkZWxldGUuCisgICAgLy8gSWYgbmV4dC1maXJlIHRpbWUg
aXMgZGVjcmVhc2luZywgZG8gYSBkZWNyZWFzZS1rZXkuCisgICAgLy8gSWYgbmV4dC1maXJlIHRp
bWUgaXMgaW5jcmVhc2luZywgZG8gYW4gaW5jcmVhc2Uta2V5LgorCisgICAgYm9vbCB3YXNGaXJz
dFRpbWVySW5IZWFwID0gbV9oZWFwSW5kZXggPSAwOworCisgICAgaWYgKG1faGVhcEluZGV4ID09
IC0xKSB7CisgICAgICAgIC8vIE5vdGhpbmcgdG8gYmUgZG9uZSBpZiB0aGUgdGltZXIgaXMgYWxy
ZWFkeSBub3QgaW4gdGhlIGhlYXAuCisgICAgICAgIC8vIFJldHVybiBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gdXBkYXRlIHRoZSBzaGFyZWQgdGltZXIgZWl0aGVyLgorICAgICAgICBpZiAobmV3
VGltZSAhPSAwKSB7CisgICAgICAgICAgICAvLyBpbnNlcnQ6IEFkZCB0aGUgaXRlbSB0byB0aGUg
dmVjdG9yIGFuZCB1c2UgcHVzaF9oZWFwIHRvIHB1dCBpdCBpbnRvIHRoZSBoZWFwLgorICAgICAg
ICAgICAgaWYgKCF0aW1lckhlYXApCisgICAgICAgICAgICAgICAgdGltZXJIZWFwID0gbmV3IFZl
Y3RvcjxUaW1lckJhc2UqPjsKKyAgICAgICAgICAgIHRpbWVySGVhcC0+YXBwZW5kKHRoaXMpOwor
ICAgICAgICAgICAgaW50IHNpemUgPSB0aW1lckhlYXAtPnNpemUoKTsKKyAgICAgICAgICAgIG1f
aGVhcEluZGV4ID0gc2l6ZSAtIDE7CisgICAgICAgICAgICBwdXNoX2hlYXAoVGltZXJIZWFwSXRl
cmF0b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9yKHNpemUpKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X2hlYXBJbmRleCA+PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2hlYXBJbmRleCA8IHNpemUp
OworICAgICAgICAgICAgQVNTRVJUKCgqdGltZXJIZWFwKVttX2hlYXBJbmRleF0gPT0gdGhpcyk7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQodGltZXJIZWFwKTsKKyAg
ICAgICAgQVNTRVJUKG1faGVhcEluZGV4ID49IDApOworICAgICAgICBBU1NFUlQobV9oZWFwSW5k
ZXggPCBzdGF0aWNfY2FzdDxpbnQ+KHRpbWVySGVhcC0+c2l6ZSgpKSk7CisgICAgICAgIEFTU0VS
VCgoKnRpbWVySGVhcClbbV9oZWFwSW5kZXhdID09IHRoaXMpOworCisgICAgICAgIGJvb2wgZGVj
cmVhc2VLZXkgPSBuZXdUaW1lICE9IDAgJiYgbmV3VGltZSA8IG9sZFRpbWU7CisKKyAgICAgICAg
Ly8gRm9yIGRlbGV0aW9uIG9yIGluY3JlYXNlLWtleSwgd2Ugc2V0IHRoZSBuZXh0LWZpcmUgdGlt
ZSB0byBhIGd1YXJhbnRlZWQgc21hbGxlc3QgdmFsdWUuCisgICAgICAgIC8vIEZvciBkZWNyZWFz
ZS1rZXksIHdlIHNldCB0aGUgbmV4dC1maXJlIHRpbWUgdG8gdGhlIHJlYWwgbmV3IHZhbHVlLgor
ICAgICAgICBpZiAoIWRlY3JlYXNlS2V5KQorICAgICAgICAgICAgbV9uZXh0RmlyZVRpbWUgPSAt
SFVHRV9WQUw7CisKKyAgICAgICAgLy8gZGVjcmVhc2Uta2V5CisgICAgICAgIHB1c2hfaGVhcChU
aW1lckhlYXBJdGVyYXRvcigwKSwgVGltZXJIZWFwSXRlcmF0b3IobV9oZWFwSW5kZXggKyAxKSk7
CisgICAgICAgIEFTU0VSVChtX2hlYXBJbmRleCA+PSAwKTsKKyAgICAgICAgQVNTRVJUKG1faGVh
cEluZGV4IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkpOworICAgICAgICBB
U1NFUlQoKCp0aW1lckhlYXApW21faGVhcEluZGV4XSA9PSB0aGlzKTsKKworICAgICAgICBpZiAo
IWRlY3JlYXNlS2V5KSB7CisgICAgICAgICAgICAvLyBXZSBkaWQgdGhlIGRlY3JlYXNlLWtleSB0
byBzdGFydCBhIGRlbGV0aW9uIG9yIGluY3JlYXNlLWtleSBvcGVyYXRpb24uCisgICAgICAgICAg
ICAvLyBOb3cgZG8gYSBkZWxldGUtbWluIG9wZXJhdGlvbiB0byByZW1vdmUgdGhlIGl0ZW0gZnJv
bSB0aGUgaGVhcC4KKyAgICAgICAgICAgIEFTU0VSVChtX2hlYXBJbmRleCA9PSAwKTsKKyAgICAg
ICAgICAgIEFTU0VSVCh0aW1lckhlYXAtPmZpcnN0KCkgPT0gdGhpcyk7CisgICAgICAgICAgICBp
bnQgc2l6ZSA9IHRpbWVySGVhcC0+c2l6ZSgpOworICAgICAgICAgICAgcG9wX2hlYXAoVGltZXJI
ZWFwSXRlcmF0b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9yKHNpemUpKTsKKyAgICAgICAgICAgIEFT
U0VSVChtX2hlYXBJbmRleCA9PSBzaXplIC0gMSk7CisgICAgICAgICAgICBBU1NFUlQoKCp0aW1l
ckhlYXApW3NpemUgLSAxXSA9PSB0aGlzKTsKKworICAgICAgICAgICAgbV9uZXh0RmlyZVRpbWUg
PSBuZXdUaW1lOworCisgICAgICAgICAgICBpZiAobmV3VGltZSA9PSAwKSB7CisgICAgICAgICAg
ICAgICAgLy8gZGVsZXRlOiBSZW1vdmUgdGhlIHBvaW50ZXIgZnJvbSB0aGUgdmVjdG9yIG5vdywg
Y29tcGxldGluZyByZW1vdmFsIGZyb20gdGhlIGhlYXAuCisgICAgICAgICAgICAgICAgdGltZXJI
ZWFwLT5yZXNpemUoc2l6ZSAtIDEpOworICAgICAgICAgICAgICAgIG1faGVhcEluZGV4ID0gLTE7
CisgICAgICAgICAgICAgICAgbV9uZXh0RmlyZVRpbWUgPSAwOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBpbmNyZWFzZS1rZXk6IEFkZCB0aGUgaXRlbSBiYWNrIGlu
dG8gdGhlIGhlYXAuCisgICAgICAgICAgICAgICAgcHVzaF9oZWFwKFRpbWVySGVhcEl0ZXJhdG9y
KDApLCBUaW1lckhlYXBJdGVyYXRvcihzaXplKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1f
aGVhcEluZGV4ID49IDApOworICAgICAgICAgICAgICAgIEFTU0VSVChtX2hlYXBJbmRleCA8IHNp
emUpOworICAgICAgICAgICAgICAgIEFTU0VSVCgoKnRpbWVySGVhcClbbV9oZWFwSW5kZXhdID09
IHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQVNTRVJUKG1f
bmV4dEZpcmVUaW1lID09IG5ld1RpbWUpOworICAgIEFTU0VSVChpc0FjdGl2ZSgpID09IChtX2hl
YXBJbmRleCAhPSAtMSkpOworCisgICAgLy8gT25seSBuZWVkIHRvIHVwZGF0ZSB0aGUgc2hhcmVk
IHRpbWVyIGlmIHdlIG1vZGlmaWVkIHRoZSBmaXJzdCB0aW1lciBpbiB0aGUgaGVhcC4KKyAgICBp
ZiAod2FzRmlyc3RUaW1lckluSGVhcCB8fCBtX2hlYXBJbmRleCA9PSAwKQorICAgICAgICB1cGRh
dGVTaGFyZWRUaW1lcigpOwogfQogCi12b2lkIFRpbWVyQmFzZTo6ZmlyZSgpCit2b2lkIFRpbWVy
QmFzZTo6c2hhcmVkVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKCFkZWZlcnJpbmdUaW1lcnMp
OwotICAgIEFTU0VSVCghZGVmZXJyZWRUaW1lcnMgfHwgIWRlZmVycmVkVGltZXJzLT5jb250YWlu
cyh0aGlzKSk7CisgICAgLy8gRG8gYSByZS1lbnRyYW5jeSBjaGVjay4KKyAgICBpZiAodGltZXJz
UmVhZHlUb0ZpcmUpCisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3J1bkxvb3BUaW1lciAm
JiAoIUNGUnVuTG9vcFRpbWVySXNWYWxpZChtX3J1bkxvb3BUaW1lcikgfHwgIUNGUnVuTG9vcFRp
bWVyRG9lc1JlcGVhdChtX3J1bkxvb3BUaW1lcikpKSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVy
SW52YWxpZGF0ZShtX3J1bkxvb3BUaW1lcik7Ci0gICAgICAgIENGUmVsZWFzZShtX3J1bkxvb3BU
aW1lcik7Ci0gICAgICAgIG1fcnVuTG9vcFRpbWVyID0gMDsKKyAgICBWZWN0b3I8VGltZXJCYXNl
Kj4gZmlyaW5nVGltZXJzSW5PcmRlcjsKKyAgICBIYXNoU2V0PFRpbWVyQmFzZSo+IGZpcmluZ1Rp
bWVyczsKKworICAgIHRpbWVyc1JlYWR5VG9GaXJlID0gJmZpcmluZ1RpbWVyczsKKworICAgIC8v
IENvbGxlY3QgdGltZXJzIHRoYXQgc2hvdWxkIGZpcmUsIHJlbW92aW5nIHRoZW0gZnJvbSB0aGUg
cHJpb3JpdHkgcXVldWUuCisgICAgZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZSgpOworICAg
IGludCB0aW1lckhlYXBTaXplID0gdGltZXJIZWFwID8gdGltZXJIZWFwLT5zaXplKCkgOiAwOwor
ICAgIHdoaWxlICh0aW1lckhlYXBTaXplICYmIHRpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0Rmly
ZVRpbWUgPD0gY3VycmVudCkgeworICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gdGltZXJIZWFw
LT5maXJzdCgpOworICAgICAgICBBU1NFUlQodGltZXItPm1faGVhcEluZGV4ID09IDApOworICAg
ICAgICBwb3BfaGVhcChUaW1lckhlYXBJdGVyYXRvcigwKSwgVGltZXJIZWFwSXRlcmF0b3IodGlt
ZXJIZWFwU2l6ZSkpOworICAgICAgICAtLXRpbWVySGVhcFNpemU7CisgICAgICAgIEFTU0VSVCh0
aW1lci0+bV9oZWFwSW5kZXggPT0gdGltZXJIZWFwU2l6ZSk7CisgICAgICAgIEFTU0VSVCgoKnRp
bWVySGVhcClbdGltZXJIZWFwU2l6ZV0gPT0gdGltZXIpOworICAgICAgICB0aW1lci0+bV9oZWFw
SW5kZXggPSAtMTsKKworICAgICAgICBmaXJpbmdUaW1lcnNJbk9yZGVyLmFwcGVuZCh0aW1lcik7
CisgICAgICAgIGZpcmluZ1RpbWVycy5hZGQodGltZXIpOwogICAgIH0KKyAgICB0aW1lckhlYXAt
PnJlc2l6ZSh0aW1lckhlYXBTaXplKTsKIAotICAgIC8vIE5vdGU6IFRoaXMgY2FsbCBtYXkgZGVz
dHJveSB0aGUgdGltZXIgb2JqZWN0LCBzbyBiZSBzdXJlIG5vdCB0byB0b3VjaCBhbnkgZmllbGRz
IGFmdGVyd2FyZC4KLSAgICBmaXJlZCgpOworICAgIC8vIEZpcmUgZWFjaCBvZiB0aGUgY29sbGVj
dGVkIHRpbWVycy4KKyAgICBpbnQgbnVtRmlyaW5nVGltZXJzID0gZmlyaW5nVGltZXJzSW5PcmRl
ci5zaXplKCk7CisgICAgQVNTRVJUKG51bUZpcmluZ1RpbWVycyA9PSBmaXJpbmdUaW1lcnMuc2l6
ZSgpKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSAhPSBudW1GaXJpbmdUaW1lcnM7ICsraSkgewor
ICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gZmlyaW5nVGltZXJzSW5PcmRlcltpXTsKKworICAg
ICAgICAvLyBDaGVjayB0aGF0IHRoZSB0aW1lciBpcyBzdGlsbCBpbiB0aGUgc2V0LgorICAgICAg
ICAvLyBJZiBub3QsIGl0IGhhcyBiZWVuIGRlbGV0ZWQgb3IgcmUtc2NoZWR1bGVkIGFzIGEgcmVz
dWx0IG9mIGZpcmluZyBhbm90aGVyIHRpbWVyLCBzbyBza2lwIGl0LgorICAgICAgICBIYXNoU2V0
PFRpbWVyQmFzZSo+OjppdGVyYXRvciBpdCA9IGZpcmluZ1RpbWVycy5maW5kKHRpbWVyKTsKKyAg
ICAgICAgaWYgKGl0ID09IGZpcmluZ1RpbWVycy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIC8vIFNldCB0aGUgbmV4dCBmaXJlIHRpbWU7IGhhcyBhIHNpZGUgZWZmZWN0
IG9mIHJlbW92aW5nIHRoZSB0aW1lciBmcm9tIHRoZSBmaXJpbmcgdGltZXJzIHNldC4KKyAgICAg
ICAgZG91YmxlIGludGVydmFsID0gdGltZXItPnJlcGVhdEludGVydmFsKCk7CisgICAgICAgIHRp
bWVyLT5zZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBjdXJyZW50ICsgaW50ZXJ2YWwgOiAwKTsK
KworICAgICAgICAvLyBGaXJlIHRoZSB0aW1lci4gSW1wb3J0YW50IG5vdCB0byB0b3VjaCB0aGUg
dGltZXIgYWZ0ZXIgdGhpcyBwb2ludC4KKyAgICAgICAgdGltZXItPmZpcmVkKCk7CisgICAgfQor
CisgICAgdGltZXJzUmVhZHlUb0ZpcmUgPSAwOworCisgICAgdXBkYXRlU2hhcmVkVGltZXIoKTsK
IH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLQorCiBib29sIGlzRGVmZXJyaW5nVGltZXJzKCkKIHsK
ICAgICByZXR1cm4gZGVmZXJyaW5nVGltZXJzOwpAQCAtMTU1LDIwICszNDIsOCBAQAogewogICAg
IGlmIChzaG91bGREZWZlciA9PSBkZWZlcnJpbmdUaW1lcnMpCiAgICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChzaG91bGREZWZlcikgewotICAgICAgICBkZWZlcnJpbmdUaW1lcnMgPSB0cnVlOwot
ICAgICAgICBpZiAoZmlyZURlZmVycmVkVGltZXIpIHsKLSAgICAgICAgICAgIENGUnVuTG9vcFRp
bWVySW52YWxpZGF0ZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgICAgICBDRlJlbGVhc2Uo
ZmlyZURlZmVycmVkVGltZXIpOwotICAgICAgICAgICAgZmlyZURlZmVycmVkVGltZXIgPSAwOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVmZXJyaW5nVGltZXJzID0gZmFsc2U7
Ci0gICAgICAgIEFTU0VSVCghZmlyZURlZmVycmVkVGltZXIpOwotICAgICAgICBmaXJlRGVmZXJy
ZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpLCAwLCAwLCAwLCBmaXJlRGVmZXJyZWQsIDApOwotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1l
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGZpcmVEZWZlcnJlZFRpbWVyLCBrQ0ZSdW5Mb29wRGVm
YXVsdE1vZGUpOwotICAgIH0KKyAgICBkZWZlcnJpbmdUaW1lcnMgPSBzaG91bGREZWZlcjsKKyAg
ICB1cGRhdGVTaGFyZWRUaW1lcigpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMjc2MikKKysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNiBAQAogCQk2NTgyQTE2MTA5OTk5RDZE
MDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTUzMDk5OTlENkQwMEJFRUI2RCAvKiBQREZEb2N1
bWVudEltYWdlLm1tICovOyB9OwogCQk2NTgyQTE2MjA5OTk5RDZEMDBCRUVCNkQgLyogU2NyZWVu
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4
MkExNTQwOTk5OUQ2RDAwQkVFQjZEIC8qIFNjcmVlbk1hYy5tbSAqLzsgfTsKIAkJNjU4MkExNjMw
OTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNTUwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5
c3RlbVRpbWVNYWMuY3BwICovOyB9OwotCQk2NTgyQTE2NDA5OTk5RDZEMDBCRUVCNkQgLyogVGlt
ZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU4MkExNTYwOTk5OUQ2RDAwQkVFQjZEIC8qIFRpbWVyTWFjLmNwcCAqLzsgfTsKIAkJNjU4MkEx
NzgwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE3NzA5OTk5RUEwMDBCRUVCNkQgLyogUVN0
cmluZ01hYy5tbSAqLzsgfTsKIAkJNjVBMjE0NjgwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDY3MDk3
QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi87IH07CiAJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUw
QSAvKiBGcmFtZVRyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNw
cCAqLzsgfTsKQEAgLTExMiw2ICsxMTEsOSBAQAogCQk3RTZGRUVEOTA4OTg1ODIzMDBDNDRDM0Yg
LyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0U2RkVFRDcwODk4NTgyMzAwQzQ0QzNGIC8qIFdlYkNvcmVTY3Jp
cHREZWJ1Z2dlci5tbSAqLzsgfTsKIAkJOTMwNUIyNEQwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0
QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsgfTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAw
NjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbkltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyN0E5NDEwOTk2OEQxQTAwNjhBNTQ2IC8q
IEhUTUxPcHRpb25zQ29sbGVjdGlvbkltcGwuY3BwICovOyB9OworCQk5MzMwOUVBMjA5OUVCNzhD
MDA1NkU1ODEgLyogU2hhcmVkVGltZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlFOUYwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRp
bWVyTWFjLmNwcCAqLzsgfTsKKwkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRp
bWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMw
OUVBMDA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXIuaCAqLzsgfTsKKwkJOTMzMDlFQTQw
OTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAg
Ki87IH07CiAJCTkzN0EzNkE3MDk3RTJFMzIwMEU0RUUyRiAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzdB
MzZBNjA5N0UyRTMyMDBFNEVFMkYgLyogVXNlckFnZW50U3R5bGVTaGVldHMuY3BwICovOyB9Owog
CQk5Mzg1Rjc2MjA5OEQ5QzMxMDBEOTBEMjQgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzg1Rjc2MTA5OEQ5QzMxMDBEOTBEMjQgLyog
U2NyZWVuLmggKi87IH07CiAJCTkzOTg4NUMzMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTg4
NUMxMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCAqLzsgfTsKQEAgLTExNzIsNyAr
MTE3NCw2IEBACiAJCTY1ODJBMTUzMDk5OTlENkQwMEJFRUI2RCAvKiBQREZEb2N1bWVudEltYWdl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBERkRvY3VtZW50
SW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODJBMTU0MDk5OTlENkQw
MEJFRUI2RCAvKiBTY3JlZW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2NyZWVuTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgy
QTE1NTA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGltZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtVGltZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTY1ODJBMTU2MDk5OTlENkQwMEJFRUI2RCAvKiBUaW1lck1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZXJNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE3NzA5OTk5RUEwMDBCRUVCNkQgLyogUVN0
cmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRU3Ry
aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTkxMkIwRDA1ODY5MjEw
MDAxMjNBNjkgLyogeG1sc2VyaWFsaXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4bWxzZXJpYWxpemVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1OTEyQjBF
MDU4NjkyMTAwMDEyM0E2OSAvKiB4bWxzZXJpYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHhtbHNlcmlhbGl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMjIyLDYg
KzEyMjMsOSBAQAogCQk5MzI1QUFCODA0MUQwRTlBMDBBOUNBQzUgLyogV2ViQ29yZVNjcm9sbFZp
ZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGgg
PSBXZWJDb3JlU2Nyb2xsVmlldy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMyN0E5NDEwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxP
cHRpb25zQ29sbGVjdGlvbkltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzMkI5ODM0MDcwMjk3REMwMDMyODA0RiAvKiB0ZXh0X2dyYW51bGFyaXR5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRleHRf
Z3JhbnVsYXJpdHkuaDsgcGF0aCA9IGVkaXRpbmcvdGV4dF9ncmFudWxhcml0eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJOTMzMDlF
OUYwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFRpbWVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYXJlZFRpbWVyLmg7IHBhdGggPSBw
bGF0Zm9ybS9TaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzMw
OUVBMTA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gVGltZXIuY3BwOyBwYXRoID0gcGxhdGZvcm0vVGltZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM4NkI5MDAzNzA0NUIzMDA4NjM1Q0UgLyogS1dR
UmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBLV1FSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMzODZCOTEwMzcwNDVCMzAwODYzNUNF
IC8qIEtXUVJlc291cmNlTG9hZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FSZXNvdXJjZUxvYWRlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkzNzhEOUY5
MDc2NDBBNDYwMDRCOTdCRiAvKiBtYXJrdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtYXJrdXAuY3BwOyBwYXRoID0gZWRpdGluZy9t
YXJrdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKQEAgLTIzNTIsOCArMjM1Niw4IEBACiAJCQkJNjU4MkExNTIwOTk5OUQ2RDAwQkVF
QjZEIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJCQk2NTgyQTE1MzA5OTk5RDZEMDBCRUVC
NkQgLyogUERGRG9jdW1lbnRJbWFnZS5tbSAqLywKIAkJCQk2NTgyQTE1NDA5OTk5RDZEMDBCRUVC
NkQgLyogU2NyZWVuTWFjLm1tICovLAorCQkJCTkzMzA5RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBT
aGFyZWRUaW1lck1hYy5jcHAgKi8sCiAJCQkJNjU4MkExNTUwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5
c3RlbVRpbWVNYWMuY3BwICovLAotCQkJCTY1ODJBMTU2MDk5OTlENkQwMEJFRUI2RCAvKiBUaW1l
ck1hYy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1hYzsKIAkJCXBhdGggPSBwbGF0Zm9ybS9t
YWM7CkBAIC0zMTUzLDYgKzMxNTcsOCBAQAogCQkJCTkzQ0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAv
KiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQk5M0NENEZERDA5OTVGOUVBMDA3RUNDOTcgLyogU3Ry
aW5nSW1wbC5oICovLAogCQkJCTkzMDVCMjRDMDk4RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICov
LAorCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi8sCisJCQkJOTMz
MDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8sCiAJCQkJQkM5QzMyOEEw
OTkzM0E2RDAwMUQ2OTI0IC8qIEltYWdlQW5pbWF0aW9uT2JzZXJ2ZXIuaCAqLywKIAkJCQlCQ0Q3
NUFCQjA5ODlBNDQ2MDAzRTI4REYgLyogSW1hZ2UuaCAqLywKIAkJCQlCQzZCN0JCQjA5OTM2MTFB
MDA1Mjg2N0IgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLApAQCAtNDM2Miw2ICs0MzY4LDcgQEAK
IAkJCQlCQzZCN0VDRjA5OThBQzdGMDA1Mjg2N0IgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1ODJBMTQwMDk5OTlDRDYwMEJFRUI2RCAvKiBRU3RyaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTgyQTE2MDA5OTk5RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRp
bWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU0NjAsMTAgKzU0NjcsMTEgQEAKIAkJCQk2NTgyQTE2
MTA5OTk5RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTY1ODJBMTYyMDk5OTlENkQwMEJFRUI2RCAvKiBTY3JlZW5NYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk2NTgyQTE2MzA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGltZU1hYy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk2NTgyQTE2NDA5OTk5RDZEMDBCRUVCNkQgLyogVGltZXJNYWMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNzgwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNTRFRTA5OUExMUE4MDAzNDNERjggLyogSlNE
T01Db3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjE1NEVGMDk5QTExQTgwMDM0M0RGOCAv
KiBKU0RPTUV2ZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzMwOUVBMjA5OUVCNzhDMDA1
NkU1ODEgLyogU2hhcmVkVGltZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTMzMDlFQTQw
OTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjc2MSkKKysrIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODQsNiAr
MTY4NCwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccGxhdGZvcm1cVGltZXIuaCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBs
YXRmb3JtXFRpbWVyLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHBsYXRmb3JtXFNoYXJlZFRpbWVyLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJ3aW4iDQogCQkJCT4NCkBAIC0xNjkyLDcg
KzE3MDAsNyBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5ccGxhdGZvcm1cd2luXFRpbWVyV2luLmNwcCINCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5ccGxhdGZvcm1cd2luXFNoYXJlZFRpbWVyV2luLmNwcCINCiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6435</attachid>
            <date>2006-02-12 09:18:09 -0800</date>
            <delta_ts>2006-02-12 17:58:50 -0800</delta_ts>
            <desc>new patch with a few changes after last night&apos;s discussion on IRC</desc>
            <filename>TimersPatch.txt</filename>
            <type>text/plain</type>
            <size>42915</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IHBsYXRmb3JtL21hYy9UaW1lck1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
bWFjL1RpbWVyTWFjLmNwcAkocmV2aXNpb24gMTI3NjEpCisrKyBwbGF0Zm9ybS9tYWMvVGltZXJN
YWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlRpbWVyLmgiCi0KLSNpbXBvcnQgPGt4
bWxjb3JlL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPGt4bWxjb3JlL0hhc2hTZXQuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCBkZWZlcnJpbmdUaW1lcnM7Ci1zdGF0aWMg
SGFzaFNldDxUaW1lckJhc2UqPiogZGVmZXJyZWRUaW1lcnM7Ci1zdGF0aWMgQ0ZSdW5Mb29wVGlt
ZXJSZWYgZmlyZURlZmVycmVkVGltZXI7Ci0KLXN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqIHApCi17Ci0gICAgVGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19j
YXN0PFRpbWVyQmFzZSo+KHApOwotICAgIGlmICghZGVmZXJyaW5nVGltZXJzKQotICAgICAgICB0
aW1lci0+ZmlyZSgpOwotICAgIGVsc2UgewotICAgICAgICBkZWZlcnJlZFRpbWVycyA9IG5ldyBI
YXNoU2V0PFRpbWVyQmFzZSo+OwotICAgICAgICBkZWZlcnJlZFRpbWVycy0+YWRkKHRpbWVyKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGZpcmVEZWZlcnJlZChDRlJ1bkxvb3BUaW1lclJlZiwg
dm9pZCopCi17Ci0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKGZpcmVEZWZlcnJlZFRpbWVy
KTsKLSAgICBDRlJlbGVhc2UoZmlyZURlZmVycmVkVGltZXIpOwotICAgIGZpcmVEZWZlcnJlZFRp
bWVyID0gMDsKLQotICAgIGlmICghZGVmZXJyZWRUaW1lcnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEhhc2hTZXQ8VGltZXJCYXNlKj4gdGltZXJzID0gKmRlZmVycmVkVGltZXJzOwotICAgIEhh
c2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGVuZCA9IHRpbWVycy5lbmQoKTsKLSAgICBmb3Ig
KEhhc2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGl0ID0gdGltZXJzLmJlZ2luKCk7ICFkZWZl
cnJpbmdUaW1lcnMgJiYgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFRpbWVyQmFzZSogdGlt
ZXIgPSAqaXQ7Ci0gICAgICAgIEhhc2hTZXQ8VGltZXJCYXNlKj46Oml0ZXJhdG9yIGogPSBkZWZl
cnJlZFRpbWVycy0+ZmluZCh0aW1lcik7Ci0gICAgICAgIGlmIChqICE9IGRlZmVycmVkVGltZXJz
LT5lbmQoKSkgewotICAgICAgICAgICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZShqKTsKLSAgICAg
ICAgICAgIHRpbWVyLT5maXJlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRpbWVyQmFzZTo6
VGltZXJCYXNlKCkKLSAgICA6IG1fcnVuTG9vcFRpbWVyKDApCi17Ci19Ci0KLVRpbWVyQmFzZTo6
flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnQo
ZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCkKLXsKLSAgICBz
dG9wKCk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAs
IDAsIDAgfTsKLSAgICBtX3J1bkxvb3BUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAsIENG
QWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbCwKLSAgICAgICAgcmVw
ZWF0SW50ZXJ2YWwsIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KTsKLSAgICBDRlJ1bkxvb3BB
ZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1fcnVuTG9vcFRpbWVyLCBrQ0ZSdW5Mb29w
RGVmYXVsdE1vZGUpOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnRSZXBlYXRpbmcoZG91Ymxl
IHJlcGVhdEludGVydmFsKQotewotICAgIEFTU0VSVChyZXBlYXRJbnRlcnZhbCA+IDApOwotICAg
IHN0YXJ0KHJlcGVhdEludGVydmFsLCByZXBlYXRJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgVGltZXJC
YXNlOjpzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKQotewotICAgIHN0YXJ0KGludGVydmFs
LCAwKTsKLX0KLQotdm9pZCBUaW1lckJhc2U6OnN0b3AoKQotewotICAgIGlmIChkZWZlcnJlZFRp
bWVycykKLSAgICAgICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZSh0aGlzKTsKLQotICAgIGlmICgh
bV9ydW5Mb29wVGltZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUnVuTG9vcFRpbWVySW52
YWxpZGF0ZShtX3J1bkxvb3BUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKG1fcnVuTG9vcFRpbWVyKTsK
LSAgICBtX3J1bkxvb3BUaW1lciA9IDA7Ci19Ci0KLWJvb2wgVGltZXJCYXNlOjppc0FjdGl2ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcnVuTG9vcFRpbWVyOwotfQotCi1kb3VibGUgVGltZXJC
YXNlOjpuZXh0RmlyZUludGVydmFsKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcnVuTG9vcFRpbWVy
KQotICAgICAgICByZXR1cm4gMDsKLSAgICBkb3VibGUgbmV4dEZpcmVEYXRlID0gQ0ZSdW5Mb29w
VGltZXJHZXROZXh0RmlyZURhdGUobV9ydW5Mb29wVGltZXIpOwotICAgIGRvdWJsZSBjdXJyZW50
VGltZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwotICAgIGlmIChuZXh0RmlyZURhdGUg
PCBjdXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5leHRGaXJlRGF0
ZSAtIGN1cnJlbnRUaW1lOwotfQotCi1kb3VibGUgVGltZXJCYXNlOjpyZXBlYXRJbnRlcnZhbCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcnVuTG9vcFRpbWVyID8gQ0ZSdW5Mb29wVGltZXJHZXRJ
bnRlcnZhbChtX3J1bkxvb3BUaW1lcikgOiAwOwotfQotCi12b2lkIFRpbWVyQmFzZTo6ZmlyZSgp
Ci17Ci0gICAgQVNTRVJUKCFkZWZlcnJpbmdUaW1lcnMpOwotICAgIEFTU0VSVCghZGVmZXJyZWRU
aW1lcnMgfHwgIWRlZmVycmVkVGltZXJzLT5jb250YWlucyh0aGlzKSk7Ci0KLSAgICBpZiAobV9y
dW5Mb29wVGltZXIgJiYgKCFDRlJ1bkxvb3BUaW1lcklzVmFsaWQobV9ydW5Mb29wVGltZXIpIHx8
ICFDRlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQobV9ydW5Mb29wVGltZXIpKSkgewotICAgICAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBDRlJlbGVh
c2UobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBtX3J1bkxvb3BUaW1lciA9IDA7Ci0gICAgfQot
Ci0gICAgLy8gTm90ZTogVGhpcyBjYWxsIG1heSBkZXN0cm95IHRoZSB0aW1lciBvYmplY3QsIHNv
IGJlIHN1cmUgbm90IHRvIHRvdWNoIGFueSBmaWVsZHMgYWZ0ZXJ3YXJkLgotICAgIGZpcmVkKCk7
Ci19Ci0KLWJvb2wgaXNEZWZlcnJpbmdUaW1lcnMoKQotewotICAgIHJldHVybiBkZWZlcnJpbmdU
aW1lcnM7Ci19Ci0KLXZvaWQgc2V0RGVmZXJyaW5nVGltZXJzKGJvb2wgc2hvdWxkRGVmZXIpCi17
Ci0gICAgaWYgKHNob3VsZERlZmVyID09IGRlZmVycmluZ1RpbWVycykKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHNob3VsZERlZmVyKSB7Ci0gICAgICAgIGRlZmVycmluZ1RpbWVycyA9IHRy
dWU7Ci0gICAgICAgIGlmIChmaXJlRGVmZXJyZWRUaW1lcikgewotICAgICAgICAgICAgQ0ZSdW5M
b29wVGltZXJJbnZhbGlkYXRlKGZpcmVEZWZlcnJlZFRpbWVyKTsKLSAgICAgICAgICAgIENGUmVs
ZWFzZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgICAgICBmaXJlRGVmZXJyZWRUaW1lciA9
IDA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBkZWZlcnJpbmdUaW1lcnMgPSBm
YWxzZTsKLSAgICAgICAgQVNTRVJUKCFmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgICAgIGZpcmVE
ZWZlcnJlZFRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRD
dXJyZW50KCksIDAsIDAsIDAsIGZpcmVEZWZlcnJlZCwgMCk7Ci0gICAgICAgIENGUnVuTG9vcEFk
ZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgZmlyZURlZmVycmVkVGltZXIsIGtDRlJ1bkxv
b3BEZWZhdWx0TW9kZSk7Ci0gICAgfQotfQotCi19CkluZGV4OiBwbGF0Zm9ybS9tYWMvU2hhcmVk
VGltZXJNYWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL21hYy9TaGFyZWRUaW1lck1hYy5j
cHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9ybS9tYWMvU2hhcmVkVGltZXJNYWMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlNoYXJlZFRpbWVyLmgiCisKKyNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVk
VGltZXI7CitzdGF0aWMgdm9pZCAoKnNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbikoKTsKKwordm9p
ZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9pZCAoKmYpKCkpCit7CisgICAgc2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uID0gZjsKK30KKworc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1
bkxvb3BUaW1lclJlZiwgdm9pZCopCit7CisgICAgc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKCk7
Cit9CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlVGltZShkb3VibGUgZmlyZVRpbWUpCit7Cisg
ICAgQVNTRVJUKHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbik7CisgICAgQ0ZBYnNvbHV0ZVRpbWUg
ZmlyZURhdGUgPSBmaXJlVGltZSAtIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwOwor
ICAgIGlmIChzaGFyZWRUaW1lcikKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURh
dGUoc2hhcmVkVGltZXIsIGZpcmVEYXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2hhcmVkVGlt
ZXIgPSBDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBmaXJlRGF0ZSwgSFVHRV9WQUwsIDAsIDAsIHRp
bWVyRmlyZWQsIDApOworICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIHNoYXJlZFRpbWVyLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIH0KK30KKwor
dm9pZCBzdG9wU2hhcmVkVGltZXIoKQoreworICAgIGlmIChzaGFyZWRUaW1lcikKKyAgICAgICAg
Q0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIEhVR0VfVkFMKTsKK30K
KworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0vbWFjL1NoYXJlZFRpbWVyTWFjLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBwbGF0
Zm9ybS9UaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1RpbWVyLmgJKHJldmlzaW9uIDEy
NzYxKQorKysgcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNDAgKzI2LDU5
IEBACiAjaWZuZGVmIFRJTUVSX0gKICNkZWZpbmUgVElNRVJfSAogCisjaW5jbHVkZSA8a3htbGNv
cmUvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDxreG1sY29yZS9WZWN0b3IuaD4KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgLy8gVGltZSBpbnRlcnZhbHMgYXJlIGFsbCBpbiBzZWNvbmRz
LgogCi0gICAgY2xhc3MgVGltZXJCYXNlIHsKKyAgICBjbGFzcyBUaW1lckhlYXBFbGVtZW50Owor
CisgICAgY2xhc3MgVGltZXJCYXNlIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGltZXJCYXNlKCk7CiAgICAgICAgIHZpcnR1YWwgflRpbWVyQmFzZSgpOwogCiAgICAgICAg
IHZvaWQgc3RhcnQoZG91YmxlIG5leHRGaXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZh
bCk7CiAKLSAgICAgICAgdm9pZCBzdGFydFJlcGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwp
OwotICAgICAgICB2b2lkIHN0YXJ0T25lU2hvdChkb3VibGUgaW50ZXJ2YWwpOworICAgICAgICB2
b2lkIHN0YXJ0UmVwZWF0aW5nKGRvdWJsZSByZXBlYXRJbnRlcnZhbCkgeyBzdGFydChyZXBlYXRJ
bnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9CisgICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KGRv
dWJsZSBpbnRlcnZhbCkgeyBzdGFydChpbnRlcnZhbCwgMCk7IH0KIAogICAgICAgICB2b2lkIHN0
b3AoKTsKLSAgICAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworICAgICAgICBib29sIGlzQWN0
aXZlKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0RmlyZVRpbWU7IH0KIAogICAgICAgICBkb3VibGUg
bmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0OwotICAgICAgICBkb3VibGUgcmVwZWF0SW50ZXJ2YWwo
KSBjb25zdDsKLQotICAgICAgICB2b2lkIGZpcmUoKTsKKyAgICAgICAgZG91YmxlIHJlcGVhdElu
dGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgPSAwOwogCi0gICAgICAgIFRpbWVyQmFz
ZShjb25zdCBUaW1lckJhc2UmKTsKLSAgICAgICAgVGltZXJCYXNlJiBvcGVyYXRvcj0oY29uc3Qg
VGltZXJCYXNlJik7CisgICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworICAg
ICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29uc3Q7CiAKLSNpZiBfX0FQUExFX18KLSAgICAg
ICAgQ0ZSdW5Mb29wVGltZXJSZWYgbV9ydW5Mb29wVGltZXI7Ci0jZWxzZSAjaWYgV0lOMzIKLSAg
ICAgICAgaW50IG1fdGltZXJJRDsKLSAgICAgICAgYm9vbCBtX2FjdGl2ZTsKLSNlbmRpZgorICAg
ICAgICB2b2lkIHNldE5leHRGaXJlVGltZShkb3VibGUpOworCisgICAgICAgIHZvaWQgaGVhcERl
Y3JlYXNlS2V5KCk7CisgICAgICAgIHZvaWQgaGVhcERlbGV0ZSgpOworICAgICAgICB2b2lkIGhl
YXBEZWxldGVNaW4oKTsKKyAgICAgICAgdm9pZCBoZWFwSW5jcmVhc2VLZXkoKTsKKyAgICAgICAg
dm9pZCBoZWFwSW5zZXJ0KCk7CisgICAgICAgIHZvaWQgaGVhcFBvcCgpOworICAgICAgICB2b2lk
IGhlYXBQb3BNaW4oKTsKKworICAgICAgICBzdGF0aWMgdm9pZCBjb2xsZWN0RmlyaW5nVGltZXJz
KGRvdWJsZSBmaXJlVGltZSwgVmVjdG9yPFRpbWVyQmFzZSo+Jik7CisgICAgICAgIHN0YXRpYyB2
b2lkIGZpcmVUaW1lcnMoZG91YmxlIGZpcmVUaW1lLCBjb25zdCBWZWN0b3I8VGltZXJCYXNlKj4m
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2hhcmVkVGltZXJGaXJlZCgpOworCisgICAgICAgIGRv
dWJsZSBtX25leHRGaXJlVGltZTsgLy8gMCBpZiBpbmFjdGl2ZQorICAgICAgICBkb3VibGUgbV9y
ZXBlYXRJbnRlcnZhbDsgLy8gMCBpZiBub3QgcmVwZWF0aW5nCisgICAgICAgIGludCBtX2hlYXBJ
bmRleDsgLy8gLTEgaWYgbm90IGluIGhlYXAKKworICAgICAgICBmcmllbmQgdm9pZCB1cGRhdGVT
aGFyZWRUaW1lcigpOworICAgICAgICBmcmllbmQgdm9pZCBzZXREZWZlcnJpbmdUaW1lcnMoYm9v
bCk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBUaW1lckhlYXBFbGVtZW50OworICAgICAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZXJIZWFwRWxlbWVudCYsIGNvbnN0IFRpbWVySGVh
cEVsZW1lbnQmKTsKICAgICB9OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRpbWVyRmlyZWRD
bGFzcz4gY2xhc3MgVGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKSW5kZXg6IHBsYXRmb3JtL3dp
bi9UaW1lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd2luL1RpbWVyV2luLmNwcAko
cmV2aXNpb24gMTI3NjEpCisrKyBwbGF0Zm9ybS93aW4vVGltZXJXaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDxreG1sY29yZS9IYXNoTWFwLmg+
Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBI
YXNoTWFwPGludCwgVGltZXJCYXNlKj4qIHJ1bm5pbmdUaW1lcnMgPSAwOwotCi1zdGF0aWMgdm9p
ZCBDQUxMQkFDSyB0aW1lckZpcmVkKEhXTkQgaHduZCwNCi0gICAgICAgICAgICAgICAgICAgICAg
IFVJTlQgdU1zZywNCi0gICAgICAgICAgICAgICAgICAgICAgIFVJTlRfUFRSIGlkRXZlbnQsDQot
ICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkd1RpbWUpCi17Ci0gICAgVGltZXJCYXNlKiB0
aW1lciA9IHJ1bm5pbmdUaW1lcnMtPmdldChpZEV2ZW50KTsKLSAgICAvLyBGSVhNRTogV2UgY2Fu
J3QgaGFuZGxlIHJlcGVhdGluZyB5ZXQuCi0gICAgdGltZXItPnN0b3AoKTsKLQotICAgIHRpbWVy
LT5maXJlKCk7Ci19Ci0KLVRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLXsKLSAgICBtX3RpbWVySUQg
PSAwOwotICAgIG1fYWN0aXZlID0gZmFsc2U7Ci19Ci0KLVRpbWVyQmFzZTo6flRpbWVyQmFzZSgp
Ci17Ci0gICAgc3RvcCgpOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnQoZG91YmxlIG5leHRG
aXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCkKLXsKLSAgICBzdG9wKCk7Ci0KLSAg
ICAvLyBTdGFydCB1cCB0aGUgdGltZXIuCi0gICAgbV90aW1lcklEID0gU2V0VGltZXIoMCwgMCwg
bmV4dEZpcmVJbnRlcnZhbCAqIDEwMDAsIHRpbWVyRmlyZWQpOwotCi0gICAgaWYgKCFydW5uaW5n
VGltZXJzKQotICAgICAgICBydW5uaW5nVGltZXJzID0gbmV3IEhhc2hNYXA8aW50LCBUaW1lckJh
c2UqPjsKLQotICAgIHJ1bm5pbmdUaW1lcnMtPnNldChtX3RpbWVySUQsIHRoaXMpOwotCi0gICAg
bV9hY3RpdmUgPSB0cnVlOwotfQotCi12b2lkIFRpbWVyQmFzZTo6c3RhcnRSZXBlYXRpbmcoZG91
YmxlIHJlcGVhdEludGVydmFsKQotewotICAgIGFzc2VydChyZXBlYXRJbnRlcnZhbCA+IDApOwot
ICAgIHN0YXJ0KHJlcGVhdEludGVydmFsLCByZXBlYXRJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgVGlt
ZXJCYXNlOjpzdGFydE9uZVNob3QoZG91YmxlIGludGVydmFsKQotewotICAgIHN0YXJ0KGludGVy
dmFsLCAwKTsKLX0KLQotdm9pZCBUaW1lckJhc2U6OnN0b3AoKQotewotLy8gICAgaWYgKGRlZmVy
cmVkVGltZXJzKQotLy8gICAgICAgIGRlZmVycmVkVGltZXJzLT5yZW1vdmUodGhpcyk7Ci0KLSAg
ICBpZiAoIW1fYWN0aXZlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBOb3cgc3RvcCBpdC4K
LSAgICBLaWxsVGltZXIoMCwgbV90aW1lcklEKTsKLQotICAgIC8vIFJlbW92ZSBvdXJzZWx2ZXMg
ZnJvbSB0aGUgaGFzaAotICAgIHJ1bm5pbmdUaW1lcnMtPnJlbW92ZShtX3RpbWVySUQpOwotCi0g
ICAgbV9hY3RpdmUgPSBmYWxzZTsKLX0KLQotYm9vbCBUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9hY3RpdmU7Ci19Ci0KLWRvdWJsZSBUaW1lckJhc2U6Om5leHRG
aXJlSW50ZXJ2YWwoKSBjb25zdAotey8qCi0gICAgaWYgKCFtX3J1bkxvb3BUaW1lcikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgZG91YmxlIG5leHRGaXJlRGF0ZSA9IENGUnVuTG9vcFRpbWVyR2V0
TmV4dEZpcmVEYXRlKG1fcnVuTG9vcFRpbWVyKTsKLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBD
RkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKLSAgICBpZiAobmV4dEZpcmVEYXRlIDwgY3VycmVu
dFRpbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXh0RmlyZURhdGUgLSBjdXJy
ZW50VGltZTsKLSAgICAqLwotICAgIHJldHVybiAwOwotfQotCi1kb3VibGUgVGltZXJCYXNlOjpy
ZXBlYXRJbnRlcnZhbCgpIGNvbnN0Ci17Ci0gICAgLyoKLSAgICByZXR1cm4gbV9ydW5Mb29wVGlt
ZXIgPyBDRlJ1bkxvb3BUaW1lckdldEludGVydmFsKG1fcnVuTG9vcFRpbWVyKSA6IDA7Ci0gICAg
Ki8KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBUaW1lckJhc2U6OmZpcmUoKQotewotICAgIC8q
Ci0gICAgQVNTRVJUKCFkZWZlcnJpbmdUaW1lcnMpOwotICAgIEFTU0VSVCghZGVmZXJyZWRUaW1l
cnMgfHwgIWRlZmVycmVkVGltZXJzLT5jb250YWlucyh0aGlzKSk7Ci0KLSAgICBpZiAobV9ydW5M
b29wVGltZXIgJiYgKCFDRlJ1bkxvb3BUaW1lcklzVmFsaWQobV9ydW5Mb29wVGltZXIpIHx8ICFD
RlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQobV9ydW5Mb29wVGltZXIpKSkgewotICAgICAgICBDRlJ1
bkxvb3BUaW1lckludmFsaWRhdGUobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBDRlJlbGVhc2Uo
bV9ydW5Mb29wVGltZXIpOwotICAgICAgICBtX3J1bkxvb3BUaW1lciA9IDA7Ci0gICAgfQotKi8K
LQotICAgIC8vIE5vdGU6IFRoaXMgY2FsbCBtYXkgZGVzdHJveSB0aGUgdGltZXIgb2JqZWN0LCBz
byBiZSBzdXJlIG5vdCB0byB0b3VjaCBhbnkgZmllbGRzIGFmdGVyd2FyZC4KLSAgICBmaXJlZCgp
OwotfQotCi1ib29sIGlzRGVmZXJyaW5nVGltZXJzKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgLy9yZXR1cm4gZGVmZXJyaW5nVGltZXJzOwotfQotCi12b2lkIHNldERlZmVycmluZ1RpbWVy
cyhib29sIHNob3VsZERlZmVyKQotewotICAgLyogaWYgKHNob3VsZERlZmVyID09IGRlZmVycmlu
Z1RpbWVycykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChzaG91bGREZWZlcikgewotICAgICAg
ICBkZWZlcnJpbmdUaW1lcnMgPSB0cnVlOwotICAgICAgICBpZiAoZmlyZURlZmVycmVkVGltZXIp
IHsKLSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShmaXJlRGVmZXJyZWRUaW1l
cik7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZmlyZURlZmVycmVkVGltZXIpOwotICAgICAgICAg
ICAgZmlyZURlZmVycmVkVGltZXIgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZGVmZXJyaW5nVGltZXJzID0gZmFsc2U7Ci0gICAgICAgIEFTU0VSVCghZmlyZURlZmVycmVk
VGltZXIpOwotICAgICAgICBmaXJlRGVmZXJyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRl
KDAsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCAwLCAwLCAwLCBmaXJlRGVmZXJyZWQsIDAp
OwotICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGZpcmVE
ZWZlcnJlZFRpbWVyLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIH0KLSAgICAqLwotfQot
Ci19CkluZGV4OiBwbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL3dpbi9TaGFyZWRUaW1lcldpbi5jcHAJKHJldmlzaW9uIDApCisrKyBwbGF0Zm9y
bS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhcmVk
VGltZXIuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgVUlOVCB0aW1lcklEOworc3RhdGljIHZvaWQgKCpzaGFyZWRUaW1lckZpcmVkRnVu
Y3Rpb24pKCk7CisKK3ZvaWQgc2V0U2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9uKHZvaWQgKCpmKSgp
KQoreworICAgIHNoYXJlZFRpbWVyRmlyZWRGdW5jdGlvbiA9IGY7Cit9CisKK3N0YXRpYyBDQUxM
QkFDSyB0aW1lckZpcmVkKEhXTkQsIFVJTlQsIFVJTlRfUFRSLCBEV09SRCkKK3sKKyAgICBzaGFy
ZWRUaW1lckZpcmVkRnVuY3Rpb24oKTsKK30KKwordm9pZCBzZXRTaGFyZWRUaW1lckZpcmVUaW1l
KGRvdWJsZSBmaXJlVGltZSkKK3sKKyAgICBBU1NFUlQoc2hhcmVkVGltZXJGaXJlZEZ1bmN0aW9u
KTsKKworICAgIGRvdWJsZSBpbnRlcnZhbCA9IGZpcmVUaW1lIC0gY3VycmVudFRpbWUoKTsKKyAg
ICB1bnNpZ25lZCBpbnRlcnZhbEluTVM7CisgICAgaWYgKGludGVydmFsIDwgMCkKKyAgICAgICAg
aW50ZXJ2YWxJbk1TID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgaW50ZXJ2YWwgKj0gMTAwMDsK
KyAgICAgICAgaWYgKGludGVydmFsID4gVVNFUl9USU1FUl9NQVhJTVVNKQorICAgICAgICAgICAg
aW50ZXJ2YWxJbk1TID0gVVNFUl9USU1FUl9NQVhJTVVNOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpbnRlcnZhbEluTVMgPSAodW5zaWduZWQpaW50ZXJ2YWw7CisgICAgfQorCisgICAgaWYg
KHRpbWVySUQpCisgICAgICAgIEtpbGxUaW1lcih0aW1lcklEKTsKKyAgICB0aW1lcklEID0gU2V0
VGltZXIoMCwgMCwgaW50ZXJ2YWxJbk1TLCB0aW1lckZpcmVkKTsKK30KKwordm9pZCBzdG9wU2hh
cmVkVGltZXIoKQoreworICAgIGlmICh0aW1lcklEKSB7CisgICAgICAgIEtpbGxUaW1lcih0aW1l
cklEKTsKKyAgICAgICAgdGltZXJJRCA9IDA7CisgICAgfQorfQorCit9CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBwbGF0Zm9ybS93aW4vU2hhcmVkVGltZXJXaW4uY3BwCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IHBsYXRmb3JtL1NoYXJlZFRpbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcGxhdGZvcm0vU2hhcmVkVGltZXIuaAkocmV2aXNpb24gMCkKKysrIHBs
YXRmb3JtL1NoYXJlZFRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgU2hhcmVkVGltZXJfaAorI2RlZmluZSBTaGFyZWRUaW1l
cl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIC8vIFNpbmdsZSB0aW1lciwgc2hhcmVk
IHRvIGltcGxlbWVudCBhbGwgdGhlIHRpbWVycyBtYW5hZ2VkIGJ5IHRoZSBUaW1lciBjbGFzcy4K
KyAgICAvLyBOb3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseTsgdXNlIHRoZSBUaW1lciBj
bGFzcyBpbnN0ZWFkLgorCisgICAgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVkRnVuY3Rpb24odm9p
ZCAoKikoKSk7CisKKyAgICAvLyBUaGUgZmlyZSB0aW1lIGlzIHJlbGF0aXZlIHRvIHRoZSBjbGFz
c2ljIFBPU0lYIGVwb2NoIG9mIEphbnVhcnkgMSwgMTk3MCwKKyAgICAvLyBhcyB0aGUgcmVzdWx0
IG9mIGN1cnJlbnRUaW1lKCkgaXMuCisKKyAgICB2b2lkIHNldFNoYXJlZFRpbWVyRmlyZVRpbWUo
ZG91YmxlIGZpcmVUaW1lKTsKKyAgICB2b2lkIHN0b3BTaGFyZWRUaW1lcigpOworCit9CisKKyNl
bmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogcGxhdGZvcm0vU2hhcmVkVGltZXIuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBwbGF0Zm9ybS9UaW1l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAxMjc2MSkK
KysrIHBsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTI5ICsyMywzMzYg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
VGltZXIuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogCi0jaW1w
b3J0IDxreG1sY29yZS9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDxreG1sY29yZS9IYXNoU2V0Lmg+
CisjaW5jbHVkZSAiU2hhcmVkVGltZXIuaCIKKyNpbmNsdWRlICJTeXN0ZW1UaW1lLmgiCisjaW5j
bHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGt4bWxjb3JlL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDxreG1sY29yZS9IYXNoU2V0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gVGltZXJzIGFyZSBzdG9yZWQgaW4gYSBoZWFwIGRhdGEgc3Ry
dWN0dXJlLCB1c2VkIHRvIGltcGxlbWVudCBhIHByaW9yaXR5IHF1ZXVlLgorLy8gVGhpcyBhbGxv
d3MgdXMgdG8gZWZmaWNpZW50bHkgZGV0ZXJtaW5lIHdoaWNoIHRpbWVyIG5lZWRzIHRvIGZpcmUg
dGhlIHNvb25lc3QuCisvLyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFyZWQgc3lzdGVtIHRpbWVy
IHRvIGZpcmUgYXQgdGhhdCB0aW1lLgorLy8KKy8vIFdoZW4gYSB0aW1lcidzICJuZXh0IGZpcmUg
dGltZSIgY2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBpbiB0aGUgcHJpb3JpdHkg
cXVldWUuCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0KKwogc3RhdGljIGJvb2wgZGVmZXJyaW5nVGlt
ZXJzOwotc3RhdGljIEhhc2hTZXQ8VGltZXJCYXNlKj4qIGRlZmVycmVkVGltZXJzOwotc3RhdGlj
IENGUnVuTG9vcFRpbWVyUmVmIGZpcmVEZWZlcnJlZFRpbWVyOworc3RhdGljIFZlY3RvcjxUaW1l
ckJhc2UqPiogdGltZXJIZWFwOworc3RhdGljIEhhc2hTZXQ8Y29uc3QgVGltZXJCYXNlKj4qIHRp
bWVyc1JlYWR5VG9GaXJlOworCisvLyAtLS0tLS0tLS0tLS0tLS0tCisKKy8vIENsYXNzIHRvIHJl
cHJlc2VudCBlbGVtZW50cyBpbiB0aGUgaGVhcCB3aGVuIGNhbGxpbmcgdGhlIHN0YW5kYXJkIGxp
YnJhcnkgaGVhcCBhbGdvcml0aG1zLgorLy8gTWFpbnRhaW5zIHRoZSBtX2hlYXBJbmRleCB2YWx1
ZSBpbiB0aGUgdGltZXJzIHRoZW1zZWx2ZXMsIHdoaWNoIGFsbG93cyB1cyB0byBkbyBlZmZpY2ll
bnQKKy8vIG1vZGlmaWNhdGlvbiBvZiB0aGUgaGVhcC4KK2NsYXNzIFRpbWVySGVhcEVsZW1lbnQg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFRpbWVySGVhcEVsZW1lbnQoaW50IGkpIDogbV9pbmRl
eChpKSwgbV90aW1lcigoKnRpbWVySGVhcClbbV9pbmRleF0pIHsgY2hlY2tDb25zaXN0ZW5jeSgp
OyB9CisKKyAgICBUaW1lckhlYXBFbGVtZW50KGNvbnN0IFRpbWVySGVhcEVsZW1lbnQmKTsKKyAg
ICBUaW1lckhlYXBFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgVGltZXJIZWFwRWxlbWVudCYpOwor
CisgICAgVGltZXJCYXNlKiB0aW1lcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXI7IH0KKworICAg
IHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0IHsKKyAgICAgICAgQVNTRVJUKG1faW5kZXgg
Pj0gMCk7CisgICAgICAgIEFTU0VSVChtX2luZGV4IDwgKHRpbWVySGVhcCA/IHN0YXRpY19jYXN0
PGludD4odGltZXJIZWFwLT5zaXplKCkpIDogMCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
aW1lckhlYXBFbGVtZW50KCk7CisKKyAgICBpbnQgbV9pbmRleDsKKyAgICBUaW1lckJhc2UqIG1f
dGltZXI7Cit9OwogCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2
b2lkKiBwKQoraW5saW5lIFRpbWVySGVhcEVsZW1lbnQ6OlRpbWVySGVhcEVsZW1lbnQoY29uc3Qg
VGltZXJIZWFwRWxlbWVudCYgbykKKyAgICA6IG1faW5kZXgoLTEpLCBtX3RpbWVyKG8udGltZXIo
KSkKIHsKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8VGltZXJCYXNlKj4ocCk7
Ci0gICAgaWYgKCFkZWZlcnJpbmdUaW1lcnMpCi0gICAgICAgIHRpbWVyLT5maXJlKCk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGRlZmVycmVkVGltZXJzID0gbmV3IEhhc2hTZXQ8VGltZXJCYXNlKj47
Ci0gICAgICAgIGRlZmVycmVkVGltZXJzLT5hZGQodGltZXIpOworfQorCitpbmxpbmUgVGltZXJI
ZWFwRWxlbWVudCYgVGltZXJIZWFwRWxlbWVudDo6b3BlcmF0b3I9KGNvbnN0IFRpbWVySGVhcEVs
ZW1lbnQmIG8pCit7CisgICAgVGltZXJCYXNlKiB0ID0gby50aW1lcigpOworICAgIG1fdGltZXIg
PSB0OworICAgIGlmIChtX2luZGV4ICE9IC0xKSB7CisgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKKyAgICAgICAgKCp0aW1lckhlYXApW21faW5kZXhdID0gdDsKKyAgICAgICAgdC0+bV9oZWFw
SW5kZXggPSBtX2luZGV4OwogICAgIH0KKyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXN0YXRpYyB2
b2lkIGZpcmVEZWZlcnJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopCitpbmxpbmUgYm9vbCBv
cGVyYXRvcjwoY29uc3QgVGltZXJIZWFwRWxlbWVudCYgYSwgY29uc3QgVGltZXJIZWFwRWxlbWVu
dCYgYikKIHsKLSAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUoZmlyZURlZmVycmVkVGltZXIp
OwotICAgIENGUmVsZWFzZShmaXJlRGVmZXJyZWRUaW1lcik7Ci0gICAgZmlyZURlZmVycmVkVGlt
ZXIgPSAwOworICAgIC8vIE5vdGUsIHRoaXMgaXMgImJhY2t3YXJkcyIgYmVjYXVzZSB0aGUgaGVh
cCBwdXRzIHRoZSBsYXJnZXN0IGVsZW1lbnQgZmlyc3QKKyAgICAvLyBhbmQgd2Ugd2FudCB0aGUg
bG93ZXN0IHRpbWUgdG8gYmUgdGhlIGZpcnN0IG9uZSBpbiB0aGUgaGVhcC4KKyAgICByZXR1cm4g
Yi50aW1lcigpLT5tX25leHRGaXJlVGltZSA8IGEudGltZXIoKS0+bV9uZXh0RmlyZVRpbWU7Cit9
CiAKLSAgICBpZiAoIWRlZmVycmVkVGltZXJzKQotICAgICAgICByZXR1cm47CisvLyAtLS0tLS0t
LS0tLS0tLS0tCisKKy8vIENsYXNzIHRvIHJlcHJlc2VudCBpdGVyYXRvcnMgaW4gdGhlIGhlYXAg
d2hlbiBjYWxsaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhlYXAgYWxnb3JpdGhtcy4KKy8vIFJl
dHVybnMgVGltZXJIZWFwRWxlbWVudCBmb3IgZWxlbWVudHMgaW4gdGhlIGhlYXAgcmF0aGVyIHRo
YW4gdGhlIFRpbWVyQmFzZSBwb2ludGVycyB0aGVtc2VsdmVzLgorY2xhc3MgVGltZXJIZWFwSXRl
cmF0b3IgOiBwdWJsaWMgaXRlcmF0b3I8cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIFRpbWVy
SGVhcEVsZW1lbnQsIGludD4geworcHVibGljOgorICAgIFRpbWVySGVhcEl0ZXJhdG9yKCkgOiBt
X2luZGV4KC0xKSB7IH0KKyAgICBUaW1lckhlYXBJdGVyYXRvcihpbnQgaSkgOiBtX2luZGV4KGkp
IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyB9CisKKyAgICBUaW1lckhlYXBJdGVyYXRvciYgb3BlcmF0
b3IrKygpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyArK21faW5kZXg7IGNoZWNrQ29uc2lzdGVuY3ko
KTsgcmV0dXJuICp0aGlzOyB9CisgICAgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQp
IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyBjaGVja0NvbnNpc3RlbmN5KDEpOyByZXR1cm4gbV9pbmRl
eCsrOyB9CisKKyAgICBUaW1lckhlYXBJdGVyYXRvciYgb3BlcmF0b3ItLSgpIHsgY2hlY2tDb25z
aXN0ZW5jeSgpOyAtLW1faW5kZXg7IGNoZWNrQ29uc2lzdGVuY3koKTsgcmV0dXJuICp0aGlzOyB9
CisgICAgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3ItLShpbnQpIHsgY2hlY2tDb25zaXN0ZW5j
eSgpOyBjaGVja0NvbnNpc3RlbmN5KC0xKTsgcmV0dXJuIG1faW5kZXgtLTsgfQorCisgICAgVGlt
ZXJIZWFwSXRlcmF0b3ImIG9wZXJhdG9yKz0oaW50IGkpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyBt
X2luZGV4ICs9IGk7IGNoZWNrQ29uc2lzdGVuY3koKTsgcmV0dXJuICp0aGlzOyB9CisgICAgVGlt
ZXJIZWFwSXRlcmF0b3ImIG9wZXJhdG9yLT0oaW50IGkpIHsgY2hlY2tDb25zaXN0ZW5jeSgpOyBt
X2luZGV4IC09IGk7IGNoZWNrQ29uc2lzdGVuY3koKTsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBU
aW1lckhlYXBFbGVtZW50IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFRpbWVySGVhcEVsZW1l
bnQobV9pbmRleCk7IH0KKyAgICBUaW1lckhlYXBFbGVtZW50IG9wZXJhdG9yW10oaW50IGkpIGNv
bnN0IHsgcmV0dXJuIFRpbWVySGVhcEVsZW1lbnQobV9pbmRleCArIGkpOyB9CisKKyAgICBpbnQg
aW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CiAKLSAgICBIYXNoU2V0PFRpbWVyQmFz
ZSo+IHRpbWVycyA9ICpkZWZlcnJlZFRpbWVyczsKLSAgICBIYXNoU2V0PFRpbWVyQmFzZSo+Ojpp
dGVyYXRvciBlbmQgPSB0aW1lcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFRpbWVyQmFzZSo+
OjppdGVyYXRvciBpdCA9IHRpbWVycy5iZWdpbigpOyAhZGVmZXJyaW5nVGltZXJzICYmIGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0gKml0OwotICAgICAgICBI
YXNoU2V0PFRpbWVyQmFzZSo+OjppdGVyYXRvciBqID0gZGVmZXJyZWRUaW1lcnMtPmZpbmQodGlt
ZXIpOwotICAgICAgICBpZiAoaiAhPSBkZWZlcnJlZFRpbWVycy0+ZW5kKCkpIHsKLSAgICAgICAg
ICAgIGRlZmVycmVkVGltZXJzLT5yZW1vdmUoaik7Ci0gICAgICAgICAgICB0aW1lci0+ZmlyZSgp
OwotICAgICAgICB9CisgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGludCBvZmZzZXQgPSAwKSBj
b25zdCB7CisgICAgICAgIEFTU0VSVChtX2luZGV4ICsgb2Zmc2V0ID49IDApOworICAgICAgICBB
U1NFUlQobV9pbmRleCArIG9mZnNldCA8PSAodGltZXJIZWFwID8gc3RhdGljX2Nhc3Q8aW50Pih0
aW1lckhlYXAtPnNpemUoKSkgOiAwKSk7CiAgICAgfQorCitwcml2YXRlOgorICAgIGludCBtX2lu
ZGV4OworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I8KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRp
bWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEuaW5kZXgoKSA8IGIuaW5kZXgoKTsgfQorCitp
bmxpbmUgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3IrKFRpbWVySGVhcEl0ZXJhdG9yIGEsIGlu
dCBiKSB7IHJldHVybiBhLmluZGV4KCkgKyBiOyB9CitpbmxpbmUgVGltZXJIZWFwSXRlcmF0b3Ig
b3BlcmF0b3IrKGludCBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhICsgYi5pbmRl
eCgpOyB9CisKK2lubGluZSBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRvci0oVGltZXJIZWFwSXRl
cmF0b3IgYSwgaW50IGIpIHsgcmV0dXJuIGEuaW5kZXgoKSAtIGI7IH0KK2lubGluZSBpbnQgb3Bl
cmF0b3ItKFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJu
IGEuaW5kZXgoKSAtIGIuaW5kZXgoKTsgfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQg
dXBkYXRlU2hhcmVkVGltZXIoKQoreworICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSB8fCBkZWZl
cnJpbmdUaW1lcnMgfHwgIXRpbWVySGVhcCB8fCB0aW1lckhlYXAtPmlzRW1wdHkoKSkKKyAgICAg
ICAgc3RvcFNoYXJlZFRpbWVyKCk7CisgICAgZWxzZQorICAgICAgICBzZXRTaGFyZWRUaW1lckZp
cmVUaW1lKHRpbWVySGVhcC0+Zmlyc3QoKS0+bV9uZXh0RmlyZVRpbWUpOwogfQogCisvLyAtLS0t
LS0tLS0tLS0tLS0tCisKIFRpbWVyQmFzZTo6VGltZXJCYXNlKCkKLSAgICA6IG1fcnVuTG9vcFRp
bWVyKDApCisgICAgOiBtX25leHRGaXJlVGltZSgwKSwgbV9yZXBlYXRJbnRlcnZhbCgwKSwgbV9o
ZWFwSW5kZXgoLTEpCiB7CisgICAgLy8gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgb25jZSwgYnV0
IHByb2JhYmx5IG5vdCB3b3J0aCB0cnlpbmcgdG8gb3B0aW1pemUgaXQuCisgICAgc2V0U2hhcmVk
VGltZXJGaXJlZEZ1bmN0aW9uKHNoYXJlZFRpbWVyRmlyZWQpOwogfQogCiBUaW1lckJhc2U6On5U
aW1lckJhc2UoKQogewogICAgIHN0b3AoKTsKKworICAgIEFTU0VSVChtX2hlYXBJbmRleCA9PSAt
MSk7CiB9CiAKIHZvaWQgVGltZXJCYXNlOjpzdGFydChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwg
ZG91YmxlIHJlcGVhdEludGVydmFsKQogewotICAgIHN0b3AoKTsKLSAgICBDRlJ1bkxvb3BUaW1l
ckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OwotICAgIG1fcnVuTG9vcFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkg
KyBuZXh0RmlyZUludGVydmFsLAotICAgICAgICByZXBlYXRJbnRlcnZhbCwgMCwgMCwgdGltZXJG
aXJlZCwgJmNvbnRleHQpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJl
bnQoKSwgbV9ydW5Mb29wVGltZXIsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgbV9yZXBl
YXRJbnRlcnZhbCA9IHJlcGVhdEludGVydmFsOworICAgIHNldE5leHRGaXJlVGltZShjdXJyZW50
VGltZSgpICsgbmV4dEZpcmVJbnRlcnZhbCk7CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpzdGFydFJl
cGVhdGluZyhkb3VibGUgcmVwZWF0SW50ZXJ2YWwpCit2b2lkIFRpbWVyQmFzZTo6c3RvcCgpCiB7
Ci0gICAgQVNTRVJUKHJlcGVhdEludGVydmFsID4gMCk7Ci0gICAgc3RhcnQocmVwZWF0SW50ZXJ2
YWwsIHJlcGVhdEludGVydmFsKTsKKyAgICBtX3JlcGVhdEludGVydmFsID0gMDsKKyAgICBpZiAo
bV9uZXh0RmlyZVRpbWUpCisgICAgICAgIHNldE5leHRGaXJlVGltZSgwKTsKKworICAgIEFTU0VS
VChtX25leHRGaXJlVGltZSA9PSAwKTsKKyAgICBBU1NFUlQobV9yZXBlYXRJbnRlcnZhbCA9PSAw
KTsKKyAgICBBU1NFUlQobV9oZWFwSW5kZXggPT0gLTEpOwogfQogCi12b2lkIFRpbWVyQmFzZTo6
c3RhcnRPbmVTaG90KGRvdWJsZSBpbnRlcnZhbCkKK2RvdWJsZSBUaW1lckJhc2U6Om5leHRGaXJl
SW50ZXJ2YWwoKSBjb25zdAogewotICAgIHN0YXJ0KGludGVydmFsLCAwKTsKKyAgICBBU1NFUlQo
aXNBY3RpdmUoKSk7CisgICAgZG91YmxlIGN1cnJlbnQgPSBjdXJyZW50VGltZSgpOworICAgIGlm
IChtX25leHRGaXJlVGltZSA8IGN1cnJlbnQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBtX25leHRGaXJlVGltZSAtIGN1cnJlbnQ7CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpzdG9wKCkK
K2lubGluZSB2b2lkIFRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5kZXgoKSBjb25zdAogewotICAgIGlm
IChkZWZlcnJlZFRpbWVycykKLSAgICAgICAgZGVmZXJyZWRUaW1lcnMtPnJlbW92ZSh0aGlzKTsK
KyAgICBBU1NFUlQodGltZXJIZWFwKTsKKyAgICBBU1NFUlQoIXRpbWVySGVhcC0+aXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQobV9oZWFwSW5kZXggPj0gMCk7CisgICAgQVNTRVJUKG1faGVhcEluZGV4
IDwgc3RhdGljX2Nhc3Q8aW50Pih0aW1lckhlYXAtPnNpemUoKSkpOworICAgIEFTU0VSVCgoKnRp
bWVySGVhcClbbV9oZWFwSW5kZXhdID09IHRoaXMpOworfQogCi0gICAgaWYgKCFtX3J1bkxvb3BU
aW1lcikKLSAgICAgICAgcmV0dXJuOworaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0NvbnNp
c3RlbmN5KCkgY29uc3QKK3sKKyAgICAvLyBBY3RpdmUgdGltZXJzIG11c3QgYmUgaW4gdGhlIGhl
YXAgb3IgdGhlICJyZWFkeSB0byBmaXJlIHNldCIuCisgICAgLy8gQnV0IHRpbWVycyB0aGF0IGRv
IGhhdmUgYSBuZXh0LWZpcmUgdGltZSBtdXN0IGJlIGluIGVpdGhlciBvbmUgb3IgdGhlIG90aGVy
LgorICAgIEFTU0VSVChpc0FjdGl2ZSgpID09IChtX2hlYXBJbmRleCAhPSAtMSB8fCAodGltZXJz
UmVhZHlUb0ZpcmUgJiYgdGltZXJzUmVhZHlUb0ZpcmUtPmNvbnRhaW5zKHRoaXMpKSkpOworICAg
IGlmIChtX2hlYXBJbmRleCAhPSAtMSkKKyAgICAgICAgY2hlY2tIZWFwSW5kZXgoKTsKK30KKwor
dm9pZCBUaW1lckJhc2U6OmhlYXBEZWNyZWFzZUtleSgpCit7CisgICAgQVNTRVJUKG1fbmV4dEZp
cmVUaW1lICE9IDApOworICAgIGNoZWNrSGVhcEluZGV4KCk7CisgICAgcHVzaF9oZWFwKFRpbWVy
SGVhcEl0ZXJhdG9yKDApLCBUaW1lckhlYXBJdGVyYXRvcihtX2hlYXBJbmRleCArIDEpKTsKKyAg
ICBjaGVja0hlYXBJbmRleCgpOworfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1f
cnVuTG9vcFRpbWVyKTsKLSAgICBDRlJlbGVhc2UobV9ydW5Mb29wVGltZXIpOwotICAgIG1fcnVu
TG9vcFRpbWVyID0gMDsKK2lubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcERlbGV0ZSgpCit7Cisg
ICAgQVNTRVJUKG1fbmV4dEZpcmVUaW1lID09IDApOworICAgIGhlYXBQb3AoKTsKKyAgICB0aW1l
ckhlYXAtPnJlbW92ZUxhc3QoKTsKKyAgICBtX2hlYXBJbmRleCA9IC0xOwogfQogCi1ib29sIFRp
bWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoraW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFwRGVs
ZXRlTWluKCkKIHsKLSAgICByZXR1cm4gbV9ydW5Mb29wVGltZXI7CisgICAgQVNTRVJUKG1fbmV4
dEZpcmVUaW1lID09IDApOworICAgIGhlYXBQb3BNaW4oKTsKKyAgICB0aW1lckhlYXAtPnJlbW92
ZUxhc3QoKTsKKyAgICBtX2hlYXBJbmRleCA9IC0xOwogfQogCi1kb3VibGUgVGltZXJCYXNlOjpu
ZXh0RmlyZUludGVydmFsKCkgY29uc3QKK2lubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluY3Jl
YXNlS2V5KCkKIHsKLSAgICBpZiAoIW1fcnVuTG9vcFRpbWVyKQotICAgICAgICByZXR1cm4gMDsK
LSAgICBkb3VibGUgbmV4dEZpcmVEYXRlID0gQ0ZSdW5Mb29wVGltZXJHZXROZXh0RmlyZURhdGUo
bV9ydW5Mb29wVGltZXIpOwotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IENGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpOwotICAgIGlmIChuZXh0RmlyZURhdGUgPCBjdXJyZW50VGltZSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5leHRGaXJlRGF0ZSAtIGN1cnJlbnRUaW1lOworICAg
IEFTU0VSVChtX25leHRGaXJlVGltZSAhPSAwKTsKKyAgICBoZWFwUG9wKCk7CisgICAgaGVhcERl
Y3JlYXNlS2V5KCk7Cit9CisKK2lubGluZSB2b2lkIFRpbWVyQmFzZTo6aGVhcEluc2VydCgpCit7
CisgICAgQVNTRVJUKG1faGVhcEluZGV4ID09IC0xKTsKKyAgICBpZiAoIXRpbWVySGVhcCkKKyAg
ICAgICAgdGltZXJIZWFwID0gbmV3IFZlY3RvcjxUaW1lckJhc2UqPjsKKyAgICB0aW1lckhlYXAt
PmFwcGVuZCh0aGlzKTsKKyAgICBtX2hlYXBJbmRleCA9IHRpbWVySGVhcC0+c2l6ZSgpIC0gMTsK
KyAgICBoZWFwRGVjcmVhc2VLZXkoKTsKK30KKworaW5saW5lIHZvaWQgVGltZXJCYXNlOjpoZWFw
UG9wKCkKK3sKKyAgICAvLyBUZW1wb3JhcmlseSBmb3JjZSB0aGlzIHRpbWVyIHRvIGhhdmUgdGhl
IG1pbmltdW0ga2V5IHNvIHdlIGNhbiBwb3AgaXQuCisgICAgZG91YmxlIGZpcmVUaW1lID0gbV9u
ZXh0RmlyZVRpbWU7CisgICAgbV9uZXh0RmlyZVRpbWUgPSAtMWU1MDA7CisgICAgaGVhcERlY3Jl
YXNlS2V5KCk7CisgICAgaGVhcFBvcE1pbigpOworICAgIG1fbmV4dEZpcmVUaW1lID0gZmlyZVRp
bWU7Cit9CisKK3ZvaWQgVGltZXJCYXNlOjpoZWFwUG9wTWluKCkKK3sKKyAgICBBU1NFUlQodGhp
cyA9PSB0aW1lckhlYXAtPmZpcnN0KCkpOworICAgIGNoZWNrSGVhcEluZGV4KCk7CisgICAgcG9w
X2hlYXAoVGltZXJIZWFwSXRlcmF0b3IoMCksIFRpbWVySGVhcEl0ZXJhdG9yKHRpbWVySGVhcC0+
c2l6ZSgpKSk7CisgICAgY2hlY2tIZWFwSW5kZXgoKTsKKyAgICBBU1NFUlQodGhpcyA9PSB0aW1l
ckhlYXAtPmxhc3QoKSk7Cit9CisKK3ZvaWQgVGltZXJCYXNlOjpzZXROZXh0RmlyZVRpbWUoZG91
YmxlIG5ld1RpbWUpCit7CisgICAgLy8gS2VlcCBoZWFwIHZhbGlkIHdoaWxlIGNoYW5naW5nIHRo
ZSBuZXh0LWZpcmUgdGltZS4KKworICAgIGlmICh0aW1lcnNSZWFkeVRvRmlyZSkKKyAgICAgICAg
dGltZXJzUmVhZHlUb0ZpcmUtPnJlbW92ZSh0aGlzKTsKKworICAgIGRvdWJsZSBvbGRUaW1lID0g
bV9uZXh0RmlyZVRpbWU7CisgICAgaWYgKG9sZFRpbWUgIT0gbmV3VGltZSkgeworICAgICAgICBt
X25leHRGaXJlVGltZSA9IG5ld1RpbWU7CisKKyAgICAgICAgYm9vbCB3YXNGaXJzdFRpbWVySW5I
ZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKKworICAgICAgICBpZiAob2xkVGltZSA9PSAwKQorICAg
ICAgICAgICAgaGVhcEluc2VydCgpOworICAgICAgICBlbHNlIGlmIChuZXdUaW1lID09IDApCisg
ICAgICAgICAgICBoZWFwRGVsZXRlKCk7CisgICAgICAgIGVsc2UgaWYgKG5ld1RpbWUgPCBvbGRU
aW1lKQorICAgICAgICAgICAgaGVhcERlY3JlYXNlS2V5KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGhlYXBJbmNyZWFzZUtleSgpOworCisgICAgICAgIGJvb2wgaXNGaXJzdFRpbWVySW5I
ZWFwID0gbV9oZWFwSW5kZXggPT0gMDsKKworICAgICAgICBpZiAod2FzRmlyc3RUaW1lckluSGVh
cCB8fCBpc0ZpcnN0VGltZXJJbkhlYXApCisgICAgICAgICAgICB1cGRhdGVTaGFyZWRUaW1lcigp
OworICAgIH0KKworICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotZG91YmxlIFRpbWVyQmFz
ZTo6cmVwZWF0SW50ZXJ2YWwoKSBjb25zdAordm9pZCBUaW1lckJhc2U6OmNvbGxlY3RGaXJpbmdU
aW1lcnMoZG91YmxlIGZpcmVUaW1lLCBWZWN0b3I8VGltZXJCYXNlKj4mIGZpcmluZ1RpbWVycykK
IHsKLSAgICByZXR1cm4gbV9ydW5Mb29wVGltZXIgPyBDRlJ1bkxvb3BUaW1lckdldEludGVydmFs
KG1fcnVuTG9vcFRpbWVyKSA6IDA7CisgICAgd2hpbGUgKCF0aW1lckhlYXAtPmlzRW1wdHkoKSAm
JiB0aW1lckhlYXAtPmZpcnN0KCktPm1fbmV4dEZpcmVUaW1lIDw9IGZpcmVUaW1lKSB7CisgICAg
ICAgIFRpbWVyQmFzZSogdGltZXIgPSB0aW1lckhlYXAtPmZpcnN0KCk7CisgICAgICAgIGZpcmlu
Z1RpbWVycy5hcHBlbmQodGltZXIpOworICAgICAgICB0aW1lcnNSZWFkeVRvRmlyZS0+YWRkKHRp
bWVyKTsKKyAgICAgICAgdGltZXItPm1fbmV4dEZpcmVUaW1lID0gMDsKKyAgICAgICAgdGltZXIt
PmhlYXBEZWxldGVNaW4oKTsKKyAgICB9CiB9CiAKLXZvaWQgVGltZXJCYXNlOjpmaXJlKCkKK3Zv
aWQgVGltZXJCYXNlOjpmaXJlVGltZXJzKGRvdWJsZSBmaXJlVGltZSwgY29uc3QgVmVjdG9yPFRp
bWVyQmFzZSo+JiBmaXJpbmdUaW1lcnMpCiB7Ci0gICAgQVNTRVJUKCFkZWZlcnJpbmdUaW1lcnMp
OwotICAgIEFTU0VSVCghZGVmZXJyZWRUaW1lcnMgfHwgIWRlZmVycmVkVGltZXJzLT5jb250YWlu
cyh0aGlzKSk7CisgICAgaW50IHNpemUgPSBmaXJpbmdUaW1lcnMuc2l6ZSgpOworICAgIGZvciAo
aW50IGkgPSAwOyBpICE9IHNpemU7ICsraSkgeworICAgICAgICBUaW1lckJhc2UqIHRpbWVyID0g
ZmlyaW5nVGltZXJzW2ldOworCisgICAgICAgIC8vIElmIG5vdCBpbiB0aGUgc2V0LCB0aGlzIHRp
bWVyIGhhcyBiZWVuIGRlbGV0ZWQgb3IgcmUtc2NoZWR1bGVkIGluIGFub3RoZXIgdGltZXIncyBm
aXJlZCBmdW5jdGlvbi4KKyAgICAgICAgLy8gU28gZWl0aGVyIHdlIGRvbid0IHdhbnQgdG8gZmly
ZSBpdCBhdCBhbGwgb3Igd2Ugd2lsbCBmaXJlIGl0IG5leHQgdGltZSB0aGUgc2hhcmVkIHRpbWVy
IGdvZXMgb2ZmLgorICAgICAgICAvLyBJdCBtaWdodCBldmVuIGhhdmUgYmVlbiBkZWxldGVkOyB0
aGF0J3MgT0sgYmVjYXVzZSB3ZSB3b24ndCBkbyBhbnl0aGluZyBlbHNlIHdpdGggdGhlIHBvaW50
ZXIuCisgICAgICAgIGlmICghdGltZXJzUmVhZHlUb0ZpcmUtPmNvbnRhaW5zKHRpbWVyKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFNldHRpbmcgdGhlIG5leHQgZmlyZSB0
aW1lIGhhcyBhIHNpZGUgZWZmZWN0IG9mIHJlbW92aW5nIHRoZSB0aW1lciBmcm9tIHRoZSBmaXJp
bmcgdGltZXJzIHNldC4KKyAgICAgICAgZG91YmxlIGludGVydmFsID0gdGltZXItPnJlcGVhdElu
dGVydmFsKCk7CisgICAgICAgIHRpbWVyLT5zZXROZXh0RmlyZVRpbWUoaW50ZXJ2YWwgPyBmaXJl
VGltZSArIGludGVydmFsIDogMCk7CiAKLSAgICBpZiAobV9ydW5Mb29wVGltZXIgJiYgKCFDRlJ1
bkxvb3BUaW1lcklzVmFsaWQobV9ydW5Mb29wVGltZXIpIHx8ICFDRlJ1bkxvb3BUaW1lckRvZXNS
ZXBlYXQobV9ydW5Mb29wVGltZXIpKSkgewotICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRh
dGUobV9ydW5Mb29wVGltZXIpOwotICAgICAgICBDRlJlbGVhc2UobV9ydW5Mb29wVGltZXIpOwot
ICAgICAgICBtX3J1bkxvb3BUaW1lciA9IDA7CisgICAgICAgIC8vIE9uY2UgdGhlIHRpbWVyIGhh
cyBiZWVuIGZpcmVkLCBpdCBtYXkgYmUgZGVsZXRlZCwgc28gZG8gbm90aGluZyBlbHNlIHdpdGgg
aXQgYWZ0ZXIgdGhpcyBwb2ludC4KKyAgICAgICAgdGltZXItPmZpcmVkKCk7CiAgICAgfQorfQog
Ci0gICAgLy8gTm90ZTogVGhpcyBjYWxsIG1heSBkZXN0cm95IHRoZSB0aW1lciBvYmplY3QsIHNv
IGJlIHN1cmUgbm90IHRvIHRvdWNoIGFueSBmaWVsZHMgYWZ0ZXJ3YXJkLgotICAgIGZpcmVkKCk7
Cit2b2lkIFRpbWVyQmFzZTo6c2hhcmVkVGltZXJGaXJlZCgpCit7CisgICAgLy8gRG8gYSByZS1l
bnRyYW5jeSBjaGVjay4KKyAgICBpZiAodGltZXJzUmVhZHlUb0ZpcmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGRvdWJsZSBmaXJlVGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgVmVjdG9yPFRp
bWVyQmFzZSo+IGZpcmluZ1RpbWVyczsKKyAgICBIYXNoU2V0PGNvbnN0IFRpbWVyQmFzZSo+IGZp
cmluZ1RpbWVyc1NldDsKKworICAgIHRpbWVyc1JlYWR5VG9GaXJlID0gJmZpcmluZ1RpbWVyc1Nl
dDsKKworICAgIGNvbGxlY3RGaXJpbmdUaW1lcnMoZmlyZVRpbWUsIGZpcmluZ1RpbWVycyk7Cisg
ICAgZmlyZVRpbWVycyhmaXJlVGltZSwgZmlyaW5nVGltZXJzKTsKKworICAgIHRpbWVyc1JlYWR5
VG9GaXJlID0gMDsKKworICAgIHVwZGF0ZVNoYXJlZFRpbWVyKCk7CiB9CiAKKy8vIC0tLS0tLS0t
LS0tLS0tLS0KKwogYm9vbCBpc0RlZmVycmluZ1RpbWVycygpCiB7CiAgICAgcmV0dXJuIGRlZmVy
cmluZ1RpbWVyczsKQEAgLTE1NSwyMCArMzYyLDggQEAgdm9pZCBzZXREZWZlcnJpbmdUaW1lcnMo
Ym9vbCBzaG91bGREZWZlcgogewogICAgIGlmIChzaG91bGREZWZlciA9PSBkZWZlcnJpbmdUaW1l
cnMpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmIChzaG91bGREZWZlcikgewotICAgICAgICBk
ZWZlcnJpbmdUaW1lcnMgPSB0cnVlOwotICAgICAgICBpZiAoZmlyZURlZmVycmVkVGltZXIpIHsK
LSAgICAgICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShmaXJlRGVmZXJyZWRUaW1lcik7
Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZmlyZURlZmVycmVkVGltZXIpOwotICAgICAgICAgICAg
ZmlyZURlZmVycmVkVGltZXIgPSAwOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
ZGVmZXJyaW5nVGltZXJzID0gZmFsc2U7Ci0gICAgICAgIEFTU0VSVCghZmlyZURlZmVycmVkVGlt
ZXIpOwotICAgICAgICBmaXJlRGVmZXJyZWRUaW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAs
IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCAwLCAwLCAwLCBmaXJlRGVmZXJyZWQsIDApOwot
ICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGZpcmVEZWZl
cnJlZFRpbWVyLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotICAgIH0KKyAgICBkZWZlcnJpbmdU
aW1lcnMgPSBzaG91bGREZWZlcjsKKyAgICB1cGRhdGVTaGFyZWRUaW1lcigpOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjc2MikKKysrIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQs
NiBAQAogCQk2NTgyQTE2MTA5OTk5RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODJBMTUzMDk5
OTlENkQwMEJFRUI2RCAvKiBQREZEb2N1bWVudEltYWdlLm1tICovOyB9OwogCQk2NTgyQTE2MjA5
OTk5RDZEMDBCRUVCNkQgLyogU2NyZWVuTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNTQwOTk5OUQ2RDAwQkVFQjZEIC8qIFNjcmVlbk1h
Yy5tbSAqLzsgfTsKIAkJNjU4MkExNjMwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkEx
NTUwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwICovOyB9OwotCQk2NTgyQTE2
NDA5OTk5RDZEMDBCRUVCNkQgLyogVGltZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4MkExNTYwOTk5OUQ2RDAwQkVFQjZEIC8qIFRpbWVy
TWFjLmNwcCAqLzsgfTsKIAkJNjU4MkExNzgwOTk5OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTgyQTE3
NzA5OTk5RUEwMDBCRUVCNkQgLyogUVN0cmluZ01hYy5tbSAqLzsgfTsKIAkJNjVBMjE0NjgwOTdB
MzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi87IH07CiAJ
CTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgyMDk3QTNGNTMwMEI5
MDUwQSAvKiBGcmFtZVRyZWVOb2RlLmNwcCAqLzsgfTsKQEAgLTExMiw2ICsxMTEsOSBAQAogCQk3
RTZGRUVEOTA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U2RkVFRDcwODk4NTgy
MzAwQzQ0QzNGIC8qIFdlYkNvcmVTY3JpcHREZWJ1Z2dlci5tbSAqLzsgfTsKIAkJOTMwNUIyNEQw
OThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLzsg
fTsKIAkJOTMyN0E5NDIwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbklt
cGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMy
N0E5NDEwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbkltcGwuY3BwICov
OyB9OworCQk5MzMwOUVBMjA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMzMDlFOUYwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyTWFjLmNwcCAqLzsgfTsKKwkJOTMzMDlFQTMwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzMwOUVBMDA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGlt
ZXIuaCAqLzsgfTsKKwkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RUExMDk5RUI3
OEMwMDU2RTU4MSAvKiBUaW1lci5jcHAgKi87IH07CiAJCTkzN0EzNkE3MDk3RTJFMzIwMEU0RUUy
RiAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzdBMzZBNjA5N0UyRTMyMDBFNEVFMkYgLyogVXNlckFnZW50
U3R5bGVTaGVldHMuY3BwICovOyB9OwogCQk5Mzg1Rjc2MjA5OEQ5QzMxMDBEOTBEMjQgLyogU2Ny
ZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Mzg1
Rjc2MTA5OEQ5QzMxMDBEOTBEMjQgLyogU2NyZWVuLmggKi87IH07CiAJCTkzOTg4NUMzMDhCN0Uz
RDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTg4NUMxMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVz
LmNwcCAqLzsgfTsKQEAgLTExNzIsNyArMTE3NCw2IEBACiAJCTY1ODJBMTUzMDk5OTlENkQwMEJF
RUI2RCAvKiBQREZEb2N1bWVudEltYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBERkRvY3VtZW50SW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1ODJBMTU0MDk5OTlENkQwMEJFRUI2RCAvKiBTY3JlZW5NYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NyZWVuTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE1NTA5OTk5RDZEMDBCRUVCNkQgLyogU3lzdGVtVGlt
ZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtVGlt
ZU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1ODJBMTU2MDk5OTlENkQw
MEJFRUI2RCAvKiBUaW1lck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGltZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTgyQTE3
NzA5OTk5RUEwMDBCRUVCNkQgLyogUVN0cmluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBRU3RyaW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTkxMkIwRDA1ODY5MjEwMDAxMjNBNjkgLyogeG1sc2VyaWFsaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB4bWxz
ZXJpYWxpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTY1OTEyQjBFMDU4NjkyMTAwMDEyM0E2OSAvKiB4bWxzZXJpYWxpemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHht
bHNlcmlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC0xMjIyLDYgKzEyMjMsOSBAQAogCQk5MzI1QUFCODA0MUQwRTlBMDBB
OUNBQzUgLyogV2ViQ29yZVNjcm9sbFZpZXcubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlU2Nyb2xsVmlldy5tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTMyN0E5NDEw
OTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxPcHRpb25zQ29sbGVjdGlvbkltcGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE9wdGlvbnNDb2xsZWN0aW9uSW1wbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMkI5ODM0MDcwMjk3REMwMDMyODA0
RiAvKiB0ZXh0X2dyYW51bGFyaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IHRleHRfZ3JhbnVsYXJpdHkuaDsgcGF0aCA9IGVkaXRpbmcvdGV4
dF9ncmFudWxhcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJOTMzMDlFOUYwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVy
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFRpbWVy
TWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMzMDlFQTAwOTlFQjc4QzAw
NTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNoYXJlZFRpbWVyLmg7IHBhdGggPSBwbGF0Zm9ybS9TaGFyZWRUaW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MzMwOUVBMTA5OUVCNzhDMDA1NkU1ODEgLyogVGltZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGltZXIuY3BwOyBwYXRoID0g
cGxhdGZvcm0vVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzM4NkI5
MDAzNzA0NUIzMDA4NjM1Q0UgLyogS1dRUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLV1FSZXNvdXJjZUxvYWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
OTMzODZCOTEwMzcwNDVCMzAwODYzNUNFIC8qIEtXUVJlc291cmNlTG9hZGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FSZXNv
dXJjZUxvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTkzNzhEOUY5MDc2NDBBNDYwMDRCOTdCRiAvKiBtYXJrdXAuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBtYXJr
dXAuY3BwOyBwYXRoID0gZWRpdGluZy9tYXJrdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTIzNTIsOCArMjM1Niw4IEBACiAJ
CQkJNjU4MkExNTIwOTk5OUQ2RDAwQkVFQjZEIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJ
CQk2NTgyQTE1MzA5OTk5RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJbWFnZS5tbSAqLywKIAkJ
CQk2NTgyQTE1NDA5OTk5RDZEMDBCRUVCNkQgLyogU2NyZWVuTWFjLm1tICovLAorCQkJCTkzMzA5
RTlGMDk5RUI3OEMwMDU2RTU4MSAvKiBTaGFyZWRUaW1lck1hYy5jcHAgKi8sCiAJCQkJNjU4MkEx
NTUwOTk5OUQ2RDAwQkVFQjZEIC8qIFN5c3RlbVRpbWVNYWMuY3BwICovLAotCQkJCTY1ODJBMTU2
MDk5OTlENkQwMEJFRUI2RCAvKiBUaW1lck1hYy5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1h
YzsKIAkJCXBhdGggPSBwbGF0Zm9ybS9tYWM7CkBAIC0zMTUzLDYgKzMxNTcsOCBAQAogCQkJCTkz
Q0Q0RkRDMDk5NUY5RUEwMDdFQ0M5NyAvKiBTdHJpbmdJbXBsLmNwcCAqLywKIAkJCQk5M0NENEZE
RDA5OTVGOUVBMDA3RUNDOTcgLyogU3RyaW5nSW1wbC5oICovLAogCQkJCTkzMDVCMjRDMDk4RjFC
NkIwMEMyODg1NSAvKiBUaW1lci5oICovLAorCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAv
KiBUaW1lci5jcHAgKi8sCisJCQkJOTMzMDlFQTAwOTlFQjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRp
bWVyLmggKi8sCiAJCQkJQkM5QzMyOEEwOTkzM0E2RDAwMUQ2OTI0IC8qIEltYWdlQW5pbWF0aW9u
T2JzZXJ2ZXIuaCAqLywKIAkJCQlCQ0Q3NUFCQjA5ODlBNDQ2MDAzRTI4REYgLyogSW1hZ2UuaCAq
LywKIAkJCQlCQzZCN0JCQjA5OTM2MTFBMDA1Mjg2N0IgLyogUERGRG9jdW1lbnRJbWFnZS5oICov
LApAQCAtNDM2Miw2ICs0MzY4LDcgQEAKIAkJCQlCQzZCN0VDRjA5OThBQzdGMDA1Mjg2N0IgLyog
SW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1ODJBMTQwMDk5OTlDRDYwMEJFRUI2
RCAvKiBRU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTgyQTE2MDA5OTk5RDZEMDBCRUVC
NkQgLyogUERGRG9jdW1lbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTMzMDlFQTMwOTlF
Qjc4QzAwNTZFNTgxIC8qIFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU0NjAsMTAg
KzU0NjcsMTEgQEAKIAkJCQk2NTgyQTE2MTA5OTk5RDZEMDBCRUVCNkQgLyogUERGRG9jdW1lbnRJ
bWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTY1ODJBMTYyMDk5OTlENkQwMEJFRUI2RCAvKiBT
Y3JlZW5NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2NTgyQTE2MzA5OTk5RDZEMDBCRUVCNkQg
LyogU3lzdGVtVGltZU1hYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NTgyQTE2NDA5OTk5RDZE
MDBCRUVCNkQgLyogVGltZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU4MkExNzgwOTk5
OUVBMDAwQkVFQjZEIC8qIFFTdHJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTIxNTRF
RTA5OUExMUE4MDAzNDNERjggLyogSlNET01Db3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MjE1NEVGMDk5QTExQTgwMDM0M0RGOCAvKiBKU0RPTUV2ZW50cy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5MzMwOUVBMjA5OUVCNzhDMDA1NkU1ODEgLyogU2hhcmVkVGltZXJNYWMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJOTMzMDlFQTQwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlLnZjcHJvai9XZWJDb3JlL1dlYkNvcmUudmNwcm9qCShyZXZp
c2lvbiAxMjc2MSkKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE2ODQsNiArMTY4NCwxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5ccGxhdGZvcm1cVGltZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBsYXRmb3JtXFRpbWVyLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHBsYXRmb3JtXFNoYXJl
ZFRpbWVyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJ3
aW4iDQogCQkJCT4NCkBAIC0xNjkyLDcgKzE3MDAsNyBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccGxhdGZvcm1cd2luXFRpbWVy
V2luLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccGxhdGZvcm1cd2luXFNoYXJlZFRp
bWVyV2luLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0K
</data>
<flag name="review"
          id="1593"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>